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.
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