Post-PhD Plans: Cloud 9 IDE

Starting September 1st I will be employed by [Ajax.org](http://ajax.org), the Amsterdam based company that is developing [Cloud 9 IDE](http://c9.io) -- not to be confused with the similarly named [Amsterdam-based soccer club](http://www.ajax.nl).

__Why an IDE in "the cloud"?__

During the past decade more and more of the stuff we do every day has moved online: e-mail, word processing, spreadsheets, chat, collaboration tools. The obvious next -- almost inevitable -- step is to move the IDE (Integrated Development Environment) to the cloud as well. Exit Eclipse. Enter Cloud9.

A few (potential) advantages:

* Your code is accessible anywhere, from any computer, but also mobile device: iPhone, iPad. Just point your browser to a URL and off you go. * No complex tool setup. It's typically very difficult to properly install your IDE (e.g. Eclipse) with all the plug-ins, web servers etc. A Cloud IDE makes this simpler, just point your browser at a URL and everything just works: testing web servers run in the cloud, deployment is simple etc. * Real-time collaboration with team members: remember Google Wave? Imagine collaborating on a single code base with many developers. Great for pair programming.

An IDE implemented in Javascript is now possible because Javascript speeds are rapidly improving. If you try out [Cloud9](http://c9.io) right now you'll see it is very snappy already. Another often heard criticism is that you cannot use web apps when offline. Cloud9 will soon feature [offline support](http://googlecode.blogspot.com/2011/05/working-offline-with-cloud9-on-google.html) allowing you to work, even without an Internet connection.

__Why me?__ I have been working for the past 4 years on code analysis tools and compilers. I implemented [a language from scratch](http://www.mobl-lang.org), covering both the compiler side, as well as the IDE side (error checking, code completion etc.). The group that I'm doing my PhD in has a lot of experience with developing such tools, and I will be leveraging much of that knowledge to build a language infrastructure for Cloud 9, enabling others, as well as Ajax.org itself, to easily build great language support for any programming language, including features like inline error highlighting, code analysis, code outlining, code completion and refactoring. Recently a lot of my work has been in Javascript, so I know the language pretty well -- which is useful, because Cloud9 is almost 100% built on Javascript, both on the client and on the server (they use [node.js](http://nodejs.org)).

Initially, the focus will be on dynamic languages, starting with Javascript, but rapidly adding other languages as well -- hopefully resulting in an infrastructure that anybody can use to build Cloud9 support for their language of choice. I have done some preliminary work on this with [treehugger.js](https://github.com/zefhemel/treehugger), a language processing library written in Javascript. Treehugger.js intends to be the jQuery of AST transformations, borrowing a lot of ideas from [Stratego/XT](http://www.strategoxt.org) and the [ATerm](http://www.program-transformation.org/Tools/ATermLibrary) library (both of which I have been using for the past years, and represent the state of the art in program transformation and analysis tools). I'd like to look into other options as well, such as attribute grammars -- anything to simplify language analysis, helping the developer to do their job more efficiently.

There are some Javascript analysis tools already (including [Zeon.js](http://zeonjs.com/), [DoctorJS](http://doctorjs.org/), [JSShaper](https://github.com/olov/jsshaper) and of course [JSLint](http://www.jslint.com/), the latter already being integrated in Cloud9). We have to see if we can integrate, collaborate or borrow ideas from these tools for Cloud9.

__What about [mobl](http://www.mobl-lang.org)?__ Ajax.org is interested in mobl. We have yet to see what role it will play in the company as well as in Cloud9. There are several options there. All I can say is: don't worry, mobl is not dead :)

__Weren't you moving to Poland?__ Indeed I am! I will be working on site in Amsterdam for the first few weeks and then move to Poland ([Poznań](http://maps.google.nl/maps?f=q&source=s_q&hl=nl&geocode=&q=poznan&aq=&sll=51.929818,4.367893&sspn=0.012967,0.02459&ie=UTF8&hq=&hnear=Pozna%C5%84,+Powiat+Pozna%C5%84ski,+Groot-Polen,+Polen&t=h&z=11) to be exact) and work remotely. Ajax.org has more employees distributed around the world and this will become even more the case in the future. This shouldn't be a problem, as they are developing a product to make this easier after all.

Anyway. This is still a couple of months ahead. First I have a PhD thesis to finish up.