In our previous posting we discussed using VSCode's Dev Container extension to allow running workspaces directly within a Docker container.
Last month (December 2020) I was granted early access to a new feature developed by GitHub called Codespaces. Codespaces offers an online VSCode development environment, enabling you to develop entirely in the cloud.
The great news is that Codespaces uses the same core process, and file structure, as Dev Containers; meaning once we have our .devcontainer
folder setup (if you are unfamiliar with Dev Containers it is worth reading the previous blog first) "it just works" online.
Using our example from the previous blog (GoogleTest and meson) to run using Codespaces is Simples!.
When granted Codespaces access, open the GitHub project and under the Clone or download
button you are offered the option Open with Codespaces
Select Open with Codespaces
and then New Codespaces
Codespaces will now open and begin building the Docker container based on the .devcontainer
configuration
Once built, we are running VSCode as if running a Dev Container locally on our machine.
Using our example, we can now build and test the meson/gtest project.
One immediate benefit of Codespaces enables me to continue development anywhere I have access to a browser. For example, here is the same project running using Firefox on an iPad.
As Ted Hughes famously wrote
“Nothing is free. Everything has to be paid for."
Codespaces are hosted by GitHub and is free to use during the beta stage. When Codespaces becomes generally available, users will be billed for storage and compute usage (starting at $0.085/hour) .
Each Codespaces instance also incurs monthly storage costs until it is deleted. Storage costs for all instance types are $0.10/GB-month.
It's difficult to gauge at the moment what that may add up to (possibly a couple of Dollars a month) and, like most things in life, it's up to you whether this is value-for-money.
As previously stated, integration of VSCode, GitHub and Docker is a quite exciting offering. Using this feature within a web browser opens up new opportunities for development practices.
It has always been a frustration that attempting to do C/C++ development on a mobile/lightweight device, such as an iPad, has been difficult. It has typically involved setting up remote machines and using SSH (Secure Shell) access to write code.
This combination of Dev Containers and Codespaces offer a ubiquitous programming environment, aiding code quality improvements through standardisation of environments. As a side-effect of using Docker containers, I have found it forces the issues of defining a standard set of tools to the forefront of people's minds, and improves project "hygiene".
Sometimes there are benefits to be on the "bleeding edge"!.
To join the beta waitlist for Codespaces, see Sign up for Codespaces beta .