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