Using Cloud9 for pure cloud development.

24th April 2016

What is Cloud9?

The Cloud9 site (I’m not an affiliate or investor in any way) provides a complete development system for working exclusively in the cloud. Even if you work locally, it’s worth considering as it makes onboarding new members really simple.

  • Virtual machines provide a Linux terminal for running arbitrary commands and installing tools.
  • Pre-configured VMs are available for one-click setup of Node, Python etcetera.
  • The blank image (amongst others) comes with Golang installed and ready to build/use.
  • You can serve sites straight from the VM using a C9 subdomain for testing.
  • You get an IDE/editor with syntax highlighting, autocomplete, Markdown preview and more.
  • Your VM can be provisioned and will remain connected to any git repository, including private BitBucket ones.
  • Your VM can also be generated as an exact clone of an existing VM; ideal for new starters in a team for instance.
  • The Git connection supports SSH keys.
  • The free version gives one private workspace and unlimited public ones.

Why would you use it for development?

The main motivation for me is possibly the deal-breaker for many others. Although I have a Macbook Air and a Lenovo Thinkpad T420, I want any development I do to be moved off local machines so the machines become replaceable and interchangeable, even with Linux boxes or Chromebooks. I won’t go into why, but that’s the goal.

Cloud9 provides virtual machines you can spin up on demand, clone, share, serve sites from for dev purposes, install frameworks on and even just run ad-hoc terminal commands. In other words, it meets my goal of totally separating the code from the machine. Yes, I could use Docker/Ansible/whatever to abstract away the hardware but what I’m after is not abstraction but dispensibility.

Is there any special setup needed?

You need a source control provider (usually Github or BitBucket [my preference]). You need a web browser. That’s pretty much it.

The Linux terminal works (in sudo mode), the firewall already has a couple of ports open for you, and there are pre-configured base machines if you want them.

How has it worked out?

I’ve got multiple projects I work on. Whilst I can quickly kill a workspace and create another (hence only needing one free private workspace option) I prefer to keep multiple ones open and if we don’t support tools like this we lose them eventually. I therefore pay $19/month for unlimited private workspaces plus beefier VMs.

The IDE is nice. It provides most of what you’d expect from a good editor or a minimal IDE, is fast and efficient plus it renders text well. There’s a plethora of options and themes, and a built-in debugger.

The VMs feel fractionally slower than the Macbook Air but not enough to be a hindrance, and they have a reasonable amount of memory and storage given that they are developer VMs not production ones.

You really need to be always-connected, but provided that’s the case everything just works. Even then, if you know you are about to lose connectivity you can fetch from your Git and work locally as normal.

My only issue is that even though you can apt-get (or equivalent) Docker tools are not supported as Cloud9 itself is using Docker and won’t allow Docker-within-Docker for permissions reasons.

Nothing’s perfect, though, and it’s a reasonable compromise.