Microsoft Windows & Visual Studio in Coder
Microsoft Corporation in many ways is one of the founders of developer tools. Visual Studio (not to be confused with Visual Studio Code "VS Code" an open-source IDE which Coder's code-server project is based on) has been around since 1997 with thirteen releases including 2022 in November 2021.
One IDE, multiple languages
The concept is one Integrated Development Environment "IDE" can be used for multiple languages, so beginning with Visual C++, Visual Basic and Visual FoxPro. Over the years as new languages and frameworks emerge from Microsoft, support expanded to Visual J++, J#, C#, the .NET Framework including ASP.NET. The Stack Overflow 2022 Developer Survey lists Visual Studio as the #2 IDE behind VS Code at 32%.
Visual Studio requires a Microsoft Windows operating system to run, so for remote development to be an option, the remote development environment must be able to run Windows and have a way to visual connect to it and the IDE.
In Coder v2, we expanded our infrastructure integration ecosystem by embedding Terraform as the declarative language to define workspaces and a provisioner runner to build workspaces. This means a development environment in Coder can run Microsoft Windows and Visual Studio, on any VM infrastructure they prefer. e.g., AWS, Google Cloud, Azure, etc. In the following example, our Terraform configuration, what we call a template, will be on Google Cloud.
Your DevOps or development team leads may hard-code these values in the Terraform template, but you can prompt the developer in the UI at workspace (our term for a development environment) creation, for the cloud region, machine type, Windows and Visual Studio releases.
The beauty of Terraform is infrastructure is just a resource block, so in this case a Google Compute resource where the input variables like region, machine type, and Windows OS machine image are specified.
Within the Google Compute resource, you run PowerShell commands to install a package manager and run additional PowerShell commands in the Coder agent's init_script to install Visual Studio.
There are some other housekeeping items like enabling the Remote Desktop Protocol "RDP" and in Windows 2022, the Administrator user is disabled by default and a password needs to be created. Notice the Terraform input variables speckled amongst the PowerShell commands for items like an Administrator password default and the Visual Studio release.
Metadata to surface in the Coder Workspace UI
Coder has Terraform resources as well like coder_metadata to surface helpful items for the user like the default Administrator password, the region and machine type of the cloud VM-based workspace and the releases of Windows and Visual Studio installed.
Markdown to help developers
Each Coder template includes a markdown file which is shown in the Coder UI at workspace creation to help the developer understand what is included in the workspace. DevOps or the development team lead would write this and make them specific to their team and organization.
A Running Windows and Visual Studio Workspace in Coder
Forward the RDP port to a local machine
While browser-based RDP approaches like Apache Guacamole can work, this example is using a Microsoft RDP client to connect to the Coder Windows and Visual Studio workspace. To complete that connection, you need to forward the RDP port from the Coder workspace to your local machine using the Coder CLI, which by the way is the same as the Coder server binary. We did that for virality reasons. i.e., anyone trying out Coder should be able to fire up their own personal remote development instance.
Accessing Microsoft Windows & Visual Studio
After connecting with the RDP client and entering the Administrator password, Windows appears and you can start Visual Studio. Your own private Windows machine in the cloud.
Summary Thoughts and Why Coder
While it is helpful that we can demonstrate running both the Microsoft Windows operating system and a Microsoft Visual Studio IDE in a Coder workspace, the real business benefit and differentiator is that an enterprise can invest in one remote development platform like Coder and have it serve multiple developer use cases, e.g., Java, Node, Go, C#, C++, Python, which is a lower total cost of ownership and a better return on your remote development investment.
Developers and data scientists can learn one remote development platform while still using the same IDEs they use today on local machines, so there are lower training requirements. DevOps and Platform Engineering teams only have to learn and manage one remote development platform. Information Security and Technology Risk teams only have to do penetration tests and review one remote development platform. Cloud cost management teams can rest easy knowing Coder provides auto-off and resource quotas to restrict cloud costs.
The alternative solutions on the market are pay-as-you-go that may only support one cloud provider, one operating system, one Git provider, or one IDE, potentially leading to multiple solutions required to meet an enterprise's remote software development needs.