The  Mozilla Skywriter project (formerly Bespin) is a Mozilla Labs  experiment to explore ideas around “coding in the cloud”. We’re happy to  announce that the project has found a new, permanent home as part of  the Ajax.org Cloud9 Editor (Ace) and Cloud9 IDE projects. Read on to hear more about the transition and what we’ve learned along the way.
Ben  Galbraith and Dion Almaer brought Bespin (later renamed to Mozilla  Skywriter) with them when they joined Mozilla at the end of 2008. It was  a beautiful, responsive code editing environment that lived completely  in the browser and on the web. It used the shiny new <canvas> HTML  element. It immediately attracted a good deal of attention and a bunch  of activity along many axes. New Bespin fans:
- contributed new syntax highlighters
- ripped the editor out of the tree and stuck it onto their sites
- tried to set up their own servers
- made themes for other editors based on Bespin’s theme, and
- complained about the many limitations they had to deal with while coding in Bespin’s cloud.
Clearly,  there was a lot of interest in being able to write code in the browser  from wherever you are. I believe that there’s even more interest today  than there was back then with more devices and new operating systems  coming along that are viable platforms for working on the web.
That  said, Mozilla has decided to charge up our efforts in developer tools.  We’ve got some large, ambitious goals and running a code hosting service  has never really been a part of that. Further, a code editor is a much  smaller part of the whole that we seek to build, making Mozilla  Skywriter much less of a focus for us.
In  the last quarter of 2010, we met some of the people of Ajax.org and  discovered that our interests and theirs lined up very well. Their  Ajax.org Cloud9 Editor (Ace) is a responsive, nicely built editor for the web. Unlike Skywriter, Ace uses the DOM to render instead of the <canvas> element making it compatible with a wider range of browsers and potentially giving it a leg up in accessibility. Furthermore, Ace is the editor used in Ajax.org’s Cloud9 IDE, which brings the “development in the cloud” idea forward.
While Ace  had all of the niceties and more of Skywriter’s code editor, it was missing out on  Skywriter’s extensibility. We’ve worked with Ajax.org to merge in a  simplified version of Skywriter’s plugin system and some of Skywriter’s  extensibility points. Ajax.org also agreed to relicense the whole Ace  package under the tri-license (MPL/LGPL/GPL) that applies to Skywriter.  This license is friendly for all kinds of projects, whether open source  or not.
Along  the way, we repackaged the plugin system as “pilot” and the command  line, which has become even smoother to use, is in its own package  called “cockpit“. You can use just these components in your own projects  if you want to make them extensible or keyboard-friendly.
Cloud9  IDE is GPL-licensed open source, with a NodeJS-based server and a  hosted service that Ajax.org currently offers in beta. Expect to see  lots of great things in the coming months for Cloud9.
The merging of Ace  and Skywriter has gone even better than we’d expected. It’s gone so  well, in fact, that we’ve decided that the best thing to do for the  projects is to completely merge them. We’re pleased to report that the  Skywriter project is now being fully replaced by Ace.
Here are the various changes that are taking place for this transition:
- The Skywriter home page (http://mozillalabs.com/skywriter) will now point people at the Ace and Cloud9 projects.
- The new project homepage is http://ace.ajax.org
- Follow the project on Twitter: @cloud9_editor
- The skywriter and skywriter-core mailing lists are changing to ace-discuss and ace-internals
- bespin.mozillalabs.com will be changed to simply point to the main Skywriter page. The hosted service there will no longer be available.
- bespinplugins.mozillalabs.com will also direct people to Ace. We will keep the plugin gallery around for several months more so that Bespin 0.9 users can continue to download the plugins that are there.
I promised to share some of the interesting things we’ve learned along the way:
- A command line is a great thing for the user interface of programmer’s editor.
- You can present a clutter-free user interface with a huge amount of functionality that is both hidden away and quickly accessible
- A command line based on a GUI like the browser can do a whole lot more than a command line that’s all text
- We still have a good deal of experimentation to do to make a command line that is fully discoverable and supports “point and click” interaction
 
- Real-time collaboration is interesting and useful for remote pair programming… but is also not the primary way in which multi-programmer teams share code. That would be the version control system.
- The number of applications out there that can benefit from a good code editor is remarkably large and touches an enormous number of users.
- People looking to integrate code editing in their applications or wanting to use a cloud-based development environment have extraordinarily varied needs. Those people are all also programmers. This is why we invested in making Skywriter pluggable.
- The DOM can be fast, and is getting faster. The original Bespin release shocked people with how fast it ran, even on large files. The key was to draw only the visible portion of the file. Ace works the same way, but rather than drawing on a canvas it draws with DOM nodes and lets the browser decide what to paint and when. Browsers are getting faster and faster at this all the time.
- DOM Level 3 text events would help. Skywriter and Ace both resort to having a hidden textarea in order to accept input with non-Latin characters because there is no way we’ve found, even in modern browsers, to find out what character a user has typed.
- People are more willing to change editors than you’d expect. Programmers live in their editors, so the editor is one tool that they’re often reluctant to change. But, if there’s enough other convenience to make up for it, many seem to be willing to give web-based editors a try. That said, Skywriter’s awesome keyboard support has landed in Ace. If you’re a vim or emacs devoteé, you can help with fleshing out vim and emacs keybindings.
- We explored many other ideas that will likely appear in tools in one form or another from DoctorJS‘s ability to work out types in JavaScript to pie menus.
Those of us who have been working on Bespin and Skywriter all this time are going to continue working on Ace, adding new features and sprucing things up for our new developer tools. Stay tuned for the initial releases of Ace.
– Kevin Dangoor, on behalf of the Skywriter and Ace teams