On a Windows machine.If you are on a Windows machine, you are in good company. In 2025, Windows is by far the most popular OS for desktops and laptops, however, if you are on a Windows machine, you will need to do some work to set up a development environment. If you are on a Windows machine, you have a number of options, but assuming everything will be just fine working in your normal Windows environment is simply not going to work. Seriously! So, please save yourself a lot of time, read on, and follow the directions below.
Here is why your normal environment won’t work. In Windows, the terminal/shell is historically called the command prompt (cmd), although a newer very different terminal/shell called PowerShell has also been around for decades. Neither of these terminals/shells are compatible with the default shell programs available on macOS and Linux. Note that for OSS development, it will be vastly superior to have access to a shell that is compatible with the macOS and Linux ones because these are the typical shells that developers use.
If you are running Windows 10 or Windows 11, then it is best to follow the directions from Microsoft on
Installing Ubuntu Linux on Windows with WSL2 will give you the best experience by far. Note that you may first need to update your version of Windows, see
https://bit.ly/Windows-Update-FAQ
. WSL2 provides a full Linux kernel that is integrated into the Windows operating system. After you have followed the linked directions to install WSL2, including the installation of Linux (the default, Ubuntu an excellent choice), be sure to set-up your Linux user information that you will never forget! Once all this is complete, the shell is most easily accessed by searching for Ubuntu in the search tool next to the Windows Icon and selecting it when you see it. For convenience, consider right-clicking on the Ubuntu icon and pinning it to your Start menu or to your Taskbar. Now Ubuntu will provide you a great shell to work with as you are developing, so be sure to use it for all of your development work.
If you are running an earlier version of Windows, or an outdated version of Windows 10 that you cannot update, then you have several choices. For simpler development environments, using
MinGW provides a lightweight solution, so you might try this. For a more complicated development environment such as one that utilizes virtualization, using a Virtual Machine (VM) environment such as
Virtual Box and installing and running Ubuntu inside the VM is advisable. For a cloud option, see below.
In the Cloud.To contribute to most open source projects, you will need to set-up a build environment for local testing. While it is typical to have a local development environment to work in, there has recently been an influx of cloud providers which offer solutions for cloud-based development environments. These have the benefit that they require less setup than a local development environment, but are often only free within constraints and otherwise incur a monthly fee, which might be waived for a trial period or for students.
Cloud Development Environments (CDEs) are full development environments in the cloud. The best known and most feature-rich is
GitHub Codespaces. A couple of the other popular cloud development environments include
AWS Cloud9 and
Gitpod. All of these environments try to help you set up your development environment with ease, and you can mostly likely find a way to at least try them for free.
For the purposes of this chapter, if you cannot quickly set up your local environment or cloud environment, you can practice using a shell at Fabrice Bellard’s
JSLinux which provides a very small cloud-based virtual machine environment. (Choosing the riscv64 Linux console will work for all of these exercises.) Note that this a free service which has a capped bandwidth of 40 kB/s. You are asked to please be respectful and don’t abuse the service.