LWN.net Logo

Collaborative coding with Collide and friends

By Nathan Willis
October 31, 2012

Google became the latest entrant into the online code editor races in July, when it released Collide as an open source project. Collide is a lightweight integrated development environment (IDE) that is notable for its support of concurrent editing by multiple users. Although its feature set is slim in comparison to some of the more established offerings, it might still find a niche role to fill — if only because the competition is equally limited when it comes to key features like collaboration.

Originally, Collide was a project that Google was reported to be developing as yet another public service among its existing throngs of web applications. Thomas Claburn at InformationWeek speculated that it was the "Brightly" IDE for Google's Dart language, although Brightly was not announced officially; reports of its existence stem from mentions in a forwarded internal email. Whatever Collide was originally intended to be, however, it will never become. Google closed down the branch office that was developing it in July 2012, and the code was released under the Apache 2.0 license by developer Scott Blum.

Blum has continued to post and respond to questions on the project's Google Groups mailing list, but development has slowed to a trickle. Nevertheless, the application is trivial to install. It requires Java 7 on the machine that will act as the server (i.e., hosting the files to be edited); clients access the editing session from their browser. Exactly which browsers are compatible remains a tad murky; some users have reported success with Firefox while others have not. Chrome and Chromium are the safe choices.

Edit-o-rama

The code is provided as a tar archive that can be unpacked and launched without system-wide installation. The launcher is a shell script named collide; although there is no documentation, reading the script reveals that you can specify a session password by appending -password=foo . This is an important distinction because one must specify a password in order for users on other machines to join in. The script starts up a web server session running locally on port 8080; without password protection, only connections from localhost are accepted.

[Collide]

Collide presents a sign-in screen to every browser, either asking for a name or for a name followed by the password, depending on whether a password was assigned at start-up (users can enter any identifier they want for the name, since it is only used to identify them to other participants in the session). From there, all users have a tree view into the directory from which the server was launched. A collapsible user list sits in the lower right hand corner, in which you can see the self-selected user names and (more importantly) Collide-assigned colors of everyone in the session. The actual editing features provided are respectable: line numbering, syntax highlighting, auto-completion, and real-time file tree manipulation (meaning that added, deleted, and moved files are relayed to all of the clients immediately, without requiring a reload).

From a collaboration standpoint, the editor relays changes faster than one can type, which is about the only real requirement. Granted, Collide does not offer TLS/SSL encryption or strong authentication, so it is most likely to be used in LAN environments where latency is not an issue. The UI only distinguishes between concurrent editors by altering the cursor color, however. This makes it harder to keep track of where other users are in the document than it is in other collaborative editors (some of which, for example, use different text background colors for each user).

There is also a Collide extension available for Chrome that adds JavaScript debugging and real-time editing of "live" CSS. Currently JavaScript, Python, CSS, and HTML are the only languages supported by the syntax highlighter, although there are hooks for enterprising developers to add others — incomplete highlighting code for Dart and XML is buried in the source tree.

Reportedly, there were other features that had been working while Collide was still an active internal project, but just did not make it through the cleanup process before the code was released to the public — including showing other users' text selections. The team decided to forgo implementing persistent user identity and authentication in light of the fact that there are already hosted web services that offer that functionality.

Everybody, edit now

As it is, Collide provides a fast-and-dirty editing option for locally-connected teams or for pair-programming exercises. Developers using Collide will already have to have another means of discussing what they do — either out loud or through other chat applications. But if that list of restrictions sounds like it makes Collide a weak offering, consider that the other major collaborative code editors are equally limited in one way or anther.

The most widely discussed in recent years was Mozilla's Bespin. As invariably happens to the browser-maker's projects these days, Bespin underwent Mozilla's spontaneous-renaming process, becoming Skywriter, then it was shut down. But the code was handed over to the ACE editor, which sits at the heart of the popular Cloud9 collaborative editing service.

ACE offers a similar in-browser editing experience to Collide's, plus additional features like breakpoints and code folding (i.e., collapsing blocks of code for the sake of readability), but its collaboration features are an add-on implemented by Cloud9. Although real-time collaboration was a feature during the project's tenure at Mozilla, it is not supported in the downloadable version. ACE is also designed to be an embeddable component served by an existing web server; it is not built for rapid deployment or ad-hoc usage. Mozilla's Kevin Dangoor told one ACE user that interested parties would be welcome to contribute real-time collaboration code, but that was in early 2011, and there does not appear to have been any progress on that front since.

Of course, there are numerous other open source online IDE projects. Adobe has Brackets, which is focused on supporting HTML and JavaScript. The Eclipse project has Orion, which is arguably the closest in design to Collide, in that it can run as a local Java server without the prerequisite to start another web server. Orion incorporates code validation, cross-file searching, and a number of other helpful features, but collaborative editing is not among them.

With the other projects outstripping Collide in terms of traditional IDE features; Collide's primary strength is its multi-user editing. But it does not look like the project has any forward momentum of its own, and in spite of Blum's early comments, there has not been substantial further development. On the contrary, Collide developer Jaime Yap said on Google Plus that

We want the Collide opensourcing to serve as reference implementations for cool technologies, features, and interaction concepts we want to see exist in actual web-IDE services. These existing web-IDE services could leverage technology in the Collide stack. Longer term, some enterprising group could fork the Collide codebase and use it to bootstrap their own competing service.

But at this point, it simply does not look like the other web-based IDE projects are interested.

The reason why may be obvious to anyone active in an existing open source project — real-time collaborative editing's main competition is the simplicity offered by distributed version control. There may be a handful of situations where having multiple developers working on a single chunk of code all at once is advantageous, but it is far from the norm. Real-time collaboration requires that the participants work simultaneously and at the same pace, and it makes separating out individual contributions difficult or impossible. Apart from dedicated hack-a-thon events or tutorial sessions, this simply is not the most efficient way for individual developers to work.

Nevertheless, for hack-a-thons and tutorials, Collide could prove to be a valuable asset. There is little administrative overhead and a connection to the outside Internet is not required. It would be gratifying to see Collide take on a new life as an open source effort; some have noted that it builds on the real-time features of the "love it or hate it" Google Wave, which itself is now an Apache Incubator project in search of a killer application. But more likely is a future where Collide joins Wave among the ranks of "slick ideas that never took off" — an unfortunate fate, and one made worse by the fact that the other online IDE projects have yet to deliver an equivalent to Collide's key feature.


(Log in to post comments)

Collaborative coding with Collide and friends

Posted Nov 1, 2012 20:58 UTC (Thu) by mtaht (✭ supporter ✭, #11087) [Link]

Um, er, ah, emacs has offered collaborative editing via X11 for a very, very, very long time now.

client machine: xhost +theothermachine

server machine: make-frame-on-display (the ip or name of the other machine)

Sigh... if 1/1000th the effort spent duplicating features emacs had, in new ways, had gone into improving emacs, instead....

Collaborative coding with Collide and friends

Posted Nov 2, 2012 1:48 UTC (Fri) by Cyberax (✭ supporter ✭, #52523) [Link]

That would require to rewrite Emacs from scratch (multiple times) instead.

Collaborative coding with Collide and friends

Posted Nov 2, 2012 17:28 UTC (Fri) by nix (subscriber, #2304) [Link]

What? Emacs has been rewritten from scratch precisely once in its history. That was in the early 1980s.

It doesn't seem to need many complete rewrites. :)

Collaborative coding with Collide and friends

Posted Nov 2, 2012 17:32 UTC (Fri) by Cyberax (✭ supporter ✭, #52523) [Link]

It does. There's still no multithreading support in emacs core, its LISP interpreter is extra-slow for anything serious. And in general, it simply sucks to write extensions.

Collaborative coding with Collide and friends

Posted Nov 2, 2012 20:35 UTC (Fri) by nix (subscriber, #2304) [Link]

Both multithreading and really quite impressive Lisp speedups are being worked on right now (the former in a branch). It's not a modern Lisp like SBCL, but it's certainly getting faster all the time (when things like bidi text don't come along to slow it down again, heh heh).

This is being done without a total rewrite.

Collaborative back-end required

Posted Nov 2, 2012 13:00 UTC (Fri) by alex (subscriber, #1355) [Link]

The previous post makes a good point. I after all already have an IDE that is lovingly tuned to my usage case with innumerable quirks and tweaks I find useful. I'm lead to believe there are hackers out there who don't use Emacs who I might want to collaborate with. They likely have their own favourite IDE/editor which works for them.

Really what you need is an open API for communicating with such cloud-like collaboration services that can be plugged into any number of editors. I'm sure a web front end will also be useful for those quick edit sessions. In the mean time what can I use for C-x f collab:/server/project/file?

Collaborative back-end required

Posted Nov 5, 2012 12:26 UTC (Mon) by hummassa (subscriber, #307) [Link]

It is called google wave, and it is bit-rotting somewhere...

Collaborative back-end required

Posted Nov 10, 2012 13:14 UTC (Sat) by valhalla (subscriber, #56634) [Link]

Wouldn't Infinote work as a protocol? It is the one used by the editors gobby and kobby (and the sobby server, of course).

Collaborative back-end required

Posted Nov 10, 2012 16:13 UTC (Sat) by nix (subscriber, #2304) [Link]

IIRC rudel.el can use Infinote too (though I haven't tried it).

Collaborative coding with Collide and friends

Posted Nov 2, 2012 6:57 UTC (Fri) by cmccabe (guest, #60281) [Link]

Why isn't there an editor named edit-o-rama?

Collaborative coding with Collide and friends

Posted Nov 20, 2012 11:22 UTC (Tue) by richdawe (subscriber, #33805) [Link]

Can you achieve something like this using screen or tmux to share your screen? (Clearly that requires all parties to have access to the same machine, which may be harder to achieve than web access.)

Collaborative coding with Collide and friends

Posted Nov 20, 2012 12:24 UTC (Tue) by spaetz (subscriber, #32870) [Link]

http://blog.dustinkirkland.com/2009/04/teaching-class-wit...

adapt to ghive your guests write access.

Collaborative coding with Collide and friends

Posted Nov 26, 2012 20:44 UTC (Mon) by richdawe (subscriber, #33805) [Link]

Thank you for the instructions!

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds