Archivo para 19 febrero 2011

Cloud development

As always, it’s been a while since I wrote something here. Anyway, I’m going to present here a new concept:  cloud development. First of all I must say: the people of Cloud9 IDE (Mozilla bespin/skywriter has been merged into that) are already working on something similar to my idea, but not quite the same.

The idea behind Cloud9 IDE is being able to develop javascript collaboratively  using only the web browser. It even supports debugging, but that’s because the browser actually can run javascript code itself. They plan to support syntax highlighting for more languages. They of course have a chat for those connected to the ide, and changes occur live to the code for everyone connected at the same time.

Gobby/Kobby are native (gnome, kde) collaborative editors which use the infinote protocol for collaborative editing. So you connect to a infinote server, and then you can see the files in that session, edit them, add/remove files, and chat with your colleagues.

None of those solutions provide real general purpose “cloud development” for me.  These are the features I¡m looking for:

  • The server side is a bunch of machines in a cloud configuration which provide an API.
  • The server side provides compilation for languages like C/C++.
  • The server side provides inexpensive VMs that can be easily cloned/forked.
  • When you create a new project in the cloud, a new VM is given to you, and you can configure it as you like. There you install the deps for your project development, download the source code, etc.
  • The server side has an rich API and has knowledge of high level concepts like:
    • VMs that can be forked, and cloned, for creating new live sessions.
    • Compilation, which can be done quickly and distributedly in the cloud.
    • Execution, to be able to see and control remotely the execution and debugging of gui applications.
  • The client side could as well be web app like with cloud9 ide, or it could be a native standalone application with “cloud development” support (Kdevelop, Eclipse, whatever..)

A simple cloud computing use case:

An Amarok developer configures a cloud development vm for trunk. Then he forks it, and creates a git branch in which he starts working in a new feature for amarok. This feature might need new libraries, difficult to compile. He doesn’t know much about how to use this library and it’s giving him headaches: he asks in the irc channel of #lib, and gives a link to clouddevelopment:// and the developer of libx sees the problem in the system while the amarok developer sees live how it’s getting resolved.

Then he posts in his blog about his new feature, and some other amarok developers think it’s really cool and connect to the feature branch’s live session and improve a bit the code, effortesly.
As you can see, this would mean,  among other things:

  • No more “person1: it’s broken! person2: it works here”.
  • No more pastebin: just connect to the live session and see (and even fix) the problem yourself.
  • Configure the VM once, and then everyone can use it.
  • You don’t need to install all the deps in your system.
  • If your computer breaks, you don’t lose the data and configuration.
  • You can access to different development environments that might require different versions of the same libs from your own computer, no dependency hell guaranteed, and no extra local disk usage.
  • Compilation can be really fast and the speed of it would not depend on how powerful your computer is:  you can have preconfigured already in the VMs an icecream+ccache set of computers.
  • You could develop for KDE in Mac OS X within Linux, or Windows, or whatever you want.

Of course this is just an idea… and I don’t currently have time for making it happen, but… wouldn’t it be nice? I thought I had to share it =)