I love programming, but admittedly I absolutely hate setting up local development environments. I have been using tools like Vagrant and Puppet to help ease the pain, but even then I find it tedious to get a quick project off the ground. This inevitably leads to me making some master development VM, but this stuff takes time and can kill an idea before I even lay down a single line of code. Well, what if I didn't need to bother with that boring stuff anymore? I have been hearing about the Cloud9 online code editor for a long time (based on the ACE Editor) and thought maybe it would be suitable for some node.js development. Little did I know how many features they are packing now for free into this awesome web applicaiton.
Your code anywhere
Features at a glance:
- Integrated linux sandbox environment with pre-installed PHP, Node, MySQL, etc
- Inline Shell access (no sudo and some other restrictions)
- Easy connection to GitHub and BitBucket
- Remote, multi-collaborator real-time editing (Pair programming anyone?)
- 512 MB of storage in the sandbox
- Did I mention you can hop on to any computer and start coding right away?
Sounds pretty awesome if you think about it. You can even connect you own server via SSH instead of using the build in sandbox (this is a paid feature).
Is this the Holy-Grail?
Not Really, but it's close. This is a very exciting product that almost reaches holy-grail status, but it falls short in a few key areas. Occasional stuttering, delays in the terminal and editor tabs are mood killers. Having to wait 5-10 seconds to save a file while in a cycle of test-driven-development is painful, which is something that happened to me quite frequently. You also will miss CTRL-Clicking into a method and other modern conveniences you get for free in editors like PHPStorm, NetBeans, etc.
If you are a VIM person you probably won't be 100% happy with the responsiveness and let's face it, you guys hate IDE's. To be fair you can pull up VI in a terminal window, but there are also some problems there. If you are used to a native terminal client or PuTTY, the provided HTML5 terminal has some quirks, CTRL-C doesn't work as expected and I also ran in to some issues with my local aliases disappearing.
Let's use PHP 5.5
Some other complaints are that the built in versions for PHP are a bit low (5.3.3), an I'm not sure there is an obvious way to change this other than building from source. You do get PEAR and PECL pre-installed but I haven't tried to do anything serious with that yet. It looks like you do have the ability to compile from source, but it takes awhile. I was unable to successfully build memcached but I was able to build PHP 5.5 alpha (in about two hours) although due to permissions issues I had to do something like this:
$ ./configure prefix=$HOME $ make $ make install $ php -v<br /> PHP 5.5.0alpha1 (cli) (built: Dec 25 2012 15:17:46) Copyright (c) 1997-2012 The PHP Group<br /> Zend Engine v2.5.0-dev, Copyright (c) 1998-2012 Zend Technologies
If you know your way around linux, you will probably have more luck than I did, but your mileage may vary.
Is it FREE?
Well it seems that just like GitHub you can create unlimited public workspaces, with unlimited collaborators. If you need more than one private project and only want to give your team access, or you want to connect your own VM instead of using the built in sandbox - you will probably want to cough up the $12/month. If you are strictly experimenting or working on open-source there isn't a lot to lose here.
The Cloud9 team has done a great job removing the barriers to getting a simple idea out the door. I implemented FizzBuzz in PHP using Composer, PHPUnit, and some SPL interfaces and got it all done , and posted to GitHub in about an hour. Since Apache is also installed, this is a really brain-dead simple way to prototype, or even work on non-trivial projects. I haven't tried the multi-user editing yet, but it actually sounds like a lot of fun. Also, the whole thing is available independently of the online service so you can install Cloud9 locally (check out the GitHub repo). What are you waiting for? Go sign up and/or check it out locally and let me know what you think in the comments section!