Student Dev Env setup

I’m prepping for next semester and trying to simplify last year’s instrutions re: environment setup. This process is often very painful for my students, who almost never come from technical backgrounds. I’d love to hear what kinds of choices people make on topics like:

  • VSCode vs Atom, and packages for github integration, mocha testrunning, html preview.
  • git/bash env
  • and especially the horror of node which I find is often quite nightmarish and heavily dependent on OS specifics.

I am toying with the idea of a docker or vagrant container with all dependencies installed, but am concerned that will create just as many problems as it will solve. In general my inability to control my students’ dev environments leads to a lot of headaches in the first 3-4 weeks of the semester. So I would love to hear what other people are doing!


We usually provide a Virtual Machine with everything needed pre-installed, which I think still represents a great solution especially for crash courses, where typically you don’t have time to dedicate to the bother of fiddling with the system of the participants.

I agree that docker is a more modern and handier tool than VM, although it is really not Windows friendly yet, plus doesn’t have an equally easy installation.

1 Like

@pattacini do you have the VM configuration somewhere? I don’t use vm’s very much and would love to get a headstart on the setup process (if that’s what we end up doing – not sure I really have the skills to make that be the easiest solution).

@titaniumbones we don’t follow specific instructions to set up a VM: this is a quite custom job indeed. However, it should be fairly straightforward to create one that fits your needs since there’s plenty of documentation to this end (e.g. creating a VM in VirtualBox).

Consider that, once you’ll have a Linux-based VM configured as you like (it’s just a standard Linux), you could keep on updating it endlessly, so likely you won’t have to create other VM’s for your classes.

1 Like

thanks @pattacini; I am thinking about it and will ocnsider using a vagrantfile or something. Still not sure which way togo!

I am late to this discussion, and since I’m not a classroom teacher (I teach at meetups and via volunteer groups), this may not be quite as relevant. I second the Docker approach - although Windows does tend to be an issue there. But it does give you a reproducible environment you can pre-configure. If you do the configuration ahead of time, you can put the image up on docker hub, and students can clone it down pretty fast.

I’ve also tried these two sites, which offer their own Docker containers that you can customize online and allow students to clone & customize. You can even attach them to github repos. Students can also collaborate with each other inside the same files. The down side is that students then have to work through the website, so there’s a harder transition for them when they want to start working on their own computer:


Of the two, I’ve found Glitch friendlier and more stable (they’re part of the StackOverflow family). I had a team of 8 working on a node-based Slackbot, and it held up pretty well.

There is also Cloud 9 from Amazon. I haven’t tried it yet, and there are of course the usual fees and configurations to deal with.

1 Like

Actually, I’m a fan of Cloud9, the original one, before Amazon acquired the company, which is still accessible somehow to early adopters. I’ve been using it for teaching and for technical interviews during hiring. It’s deeply configurable, also for doing some graphics. By the way, it’s based on docker technology.

Codenvy and Codeanywhere are other similar alternatives.

1 Like

For Vagrant configs, you could try vagrant cloud - no guarantee they’ll have something perfect, but it’s a place to start looking. I often start there (or docker hub if I am doing docker), download something close - and start hacking.

@pattacini - I’ve been itching to play with Cloud 9, but don’t have a project or excuse yet. ;-). It looks pretty interesting - and has the added advantage of easy-peasy deployment to AWS when you’re done. I’m going to scurry away and check out codenvy and codeanywhere when I get a chance as well. Thanks for the recommends.

Hi @BethanyG @titaniumbones

Just to let you know that I’ve posted a sort of walkthrough on the integration of Docker and Gitpod within a possible GitHub Classroom workflow that you might find interesting.

Here it is:

The benefits of integrating Docker and Cloud IDE's in the GitHub Classroom workflow.

1 Like

Interesting discussion. I’m struggling with the same issue as OP. Isn’t setting up a VM an even greater installation burdon on our (k2) students with virtually no development experience? For an unrelated network workshop I ended up creating a clever PS script that would setup virtual Server/Client/Router and VSwitch. This worked remarkably well.

After the course ends our students will work on private and commercial projects so a working, more or less standardized dev environment would help them there ase well. Did someone script such a setup?

Dev containers and codespaces would be the current answer to this question.

Dev containers work with VS Code and allow for developing inside a docker container. Commit the .devcontainer folder with config settings to the student’s assignment repo, When the student opens the repo in VS Code, VS Code will automatically suggest re-opening the repo in the dev container, using the settings in the .devcontainer folder. Downside is students need to have docker installed.

Codespaces allow dev containers to be run in the cloud, and can be accessed via a web browser. Students are presented with a browser based version of VS Code that runs and looks more or less the same as the desktop version. Codespaces can be launched directly from the repo on GitHub (it’s an option in the <>code button drop down.) You can give students a fully configured development environment and the only thing the student needs is a web browser and an internet connection. Unfortunately, codespaces is out of beta and is no longer free. **It would be great if GitHub gave some educational discount for codespace, because it does solve a lot of problems.

I tried running codespaces with an introduction to SQL class back in March, but I couldn’t get the students signed up to the beta. You can see the .decontainer settings I used here: com236-kv-lab-4-markpatterson27/.devcontainer at main · SERC-COM236-Labs/com236-kv-lab-4-markpatterson27 · GitHub When run in codespaces, it would provide a dev environment with SQL Server running, so students could test their SQL statements before committing them.

Gitpod seem to be trying to provide a self-hosted option for dev containers - GitHub - gitpod-io/openvscode-server: Run upstream VS Code on a remote machine with access through a modern web browser from any device, anywhere. It’s on my list of things to look at, but I haven’t looked at it yet.

(As an aside, does everyone know that the browser based version of VS Code is now integrated into GitHub. Press period/dot ‘.’ when viewing a repo to open the repo in VS Code, inside the browser! It does feel a lot like magic. There’s no code execution, but you can install extensions, including language servers for syntax highlighting.)

1 Like

I’m an avid user of Gitpod, which is also offered with discounts in the GitHub Classroom toolbox and it’s free for 50 hrs/month by design. I love it!

I tend to keep the post I wrote on the cloud-based approach up-to-date over time:

My last addition links to a very interesting comparison between Gitpod and Codespaces.

1 Like
© 2017 GitHub, Inc.
with by
GitHub Education