Recently I've been working on adding collaboration features to Bespin, Mozilla's web code editor. Today they're getting pushed out into bespin.mozilla.com.
Enhanced collaboration is one of the best reasons to do an IDE on the web. It’s possible in a traditional IDE or code editor, but there are lots of features of a web based editor that make it an obvious thing to do on the web.
Our new collaboration feature is still fairly new, and like the rest of Bespin, still fairly beta, but we’ve got it working in Firefox, Safari and Chrome right now.
We’ve released a webcast showing it off here:
Taking it for a spin
Want a go real quick? Here are the steps:
- Sign up or login to Bespin.
- Press CTRL+J/CMD+J to open the command line.
- Type '
follow joewalker' to get someone to share files with. I've shared a project called pubproj globally.
- Type '
project list'. You should see
joewalker+pubprojin your list of projects.
- Type '
set collaborate on' to turn on shared editing.
- Open a shared file by typing '
Or, in one graphic:
You should then be in a collaborative editing session with the rest of the Internet.
Click on the collaboration icon (2 people) in the top right hand corner show you who's editing with you.
How it Works
There are 2 parts to what's new. Firstly there's a way to decide who you want to share stuff with and secondly there's the shared editor. We’re adding 3 or 4 new commands:
- follow/unfollow: allow you to decide whose shared projects you want to see in your project navigator. We've gone for a lightweight Twitter style model so it's easy to get started. As we evolve Bespin this will become a way to get all sorts of information about the people you are working with
- group: allows you to put the people you are interested in into groups to make it easy to manage sharing
- share: allows you to export your projects read-only or editable to individuals, groups, or to everyone
Expressing an interest in someone is as easy as “
follow username”. You can then group these users together to make sharing easier. So for me to add Kevin, Ben and Dion to a group, I would do “
group add mozlabs Kevin ben dion”. Grouping people like this is totally optional, but it will make maintaining sharing rules a lot easier going forward, when you’re working on a number of projects.
Then if you want to share a project in read-only mode, to someone that is following you, you just type: “
share add projectname username”. Replace username with groupname to share with one of your defined groups, or with “
everyone” to just throw everything wide open. To allow editing you add “
edit” to the end. So for ultimate wiki-like promiscuity: “
share add projectname everyone edit”.
Projects shared to you by people you follow will now show up in your file-explorer, or you can edit them from the command line. Type “
We’re currently using Mobwrite to provide the diffing and synchronization with some additions to allow us to share collaborator information. We’re hopeful that we will be able to share collaboration systems with a number of other editors in the future. Various developers are working on plug-ins for GEdit, Eclipse, emacs, etc.
Other things that we’re working on include plans for a quick share mode where you can grab a URL post it to an IRC session and instantly be in a shared edit session with the other IRC users.
We've also been discussing in-page chat. We've left it for now because many Bespin users will already have IM or IRC or even Skype or similar, and we want to do something smart with the chat transcripts other than just throwing them away.
Next we’ll be working on getting smooth undo so you have a time machine that can smoothly walk through changes from the current revision back in time through recent saves, and into VCS history, and then into a more lightweight collaboration where when 2 people have 2 check-outs of 1 file, they can both see each others changes to reduce merge pain, without directly affecting each others work.