Etherpad Shows Google Docs How It’s Done (By AppJet)
techcrunch.com
techcrunch.com
For the curious, I added this URL to our running web server in 5 minutes with 12 lines of JavaScript:
function render_newsyc_get() {
function countUsers(p) {
return getCollab().getDocument(p).getNumConnectedUsers();
}
var body = BODY({style: 'padding: 20px; font-family: monospace;'});
body.push(H3("Welcome news.ycombinator readers! ",
"Join us in an EtherPad of your choosing:"));
pads.forEach(function(p) {
body.push(A({href: p}, p), ' ('+countUsers(p)+' users)', BR());
});
response.write(HTML(body));
}
Just a taste of the AppJet Web Platform. (A separate 1-time script generated the array "pads").To imply that Google 'hasn't been able to do it' is kind of silly. It's more likely that they chose not to do it and/or their scaling requirements made it impractical.
Etherpad uses a different approach: they ship all the edits to all the users as soon as they happen, and each client processes them to produce an updated document. The hard part is making sure each user is seeing the same thing. This is easy with the Google Docs model where a single master copy is regularly rebroadcast. To do it the Etherpad way, without a master copy, is extremely hard. From what I've heard about what they had to do, it sounds like one of the more impressive hacking achievements by a YC-funded co to date.
At http://draftastic.com/ we keep a master but only broadcast changed portions -- a compromise between re-sending the whole document and handling a hail of tiny diffs. This uses automatic locking, which we thought was reasonable given that people rarely want to type directly on top of each other, but it means a much simpler implementation of undo and so on. Basically, we've made a heartbeat-based system with heartbeats so cheap that they can be fast, and we never need a merge algorithm.
In any case, I'll be watching the just-raw-edits approach with interest. Best of luck to Etherpad -- there's plenty of room in the market.
We haven't figured out a way to let people undo other users' edits. (We can perform the manipulation on the document, we just haven't figured out a sensible UI for it).
(Total data sent when I press 'j' was 1073 bytes of HTTP headers, and 123 bytes of program data).
The other reason may be that whilst it looks really cool to see each other typing, is it really needed?
Does look quite slick though :)
I do think that real-time is really needed for many applications. The few times I've tried collaborating on a google doc, I've given up because the lag introduced the possibility of overwriting each others edits. That and just a general annoyance with saying "Do you see it yet?" over and over.
It's a shame people seem to have started saying "use comet" without understanding what it means. Did you read that link?
A parked car is not a car that's not able to drive. It's a car that's not driving.
Be nice if they offered textile and markdown rendering.
-- from here: http://news.ycombinator.com/item?id=369500
They definitely released their source code (available here: http://appjet.com/download) but the only mention of a license on that page is:
Disclaimer: The appjet.jar software is provided "as is", and you use it at your own risk. AppJet Inc. is not responsible for anything bad that may happen.
From that, it's not really clear whether it's open for modification and redistribution. Any of the AppJet guys care to comment?
It's really interesting to watch the POSTs fly by and consider the implications of out-of-order updates, breaks in the open downstream "comet" channel, interleaving potentially conflicting text from different clients. A lot of difficult tradeoffs that they seem to have made good -- or at least plausible -- decisions on.
This is a really impressive product.
Air Etherpad. Official Airline of the Recession.
http://etherpad.com/a4jtHYAoF9
Just join in and try it!
I was also thinking that instead of unnamed, you could build a list of celebrity names that are used until the user changes it (which should be pretty quick if you wind up with something like Danny Glover or Hans Blix). If not, at least you'd have a way to distinguish between people.
Oh yeah, here: http://gobby.0x539.de/trac/
"There is a native Win32 build of sobby at [link]. There are no special Windows-specific features, but it runs. You will need glibmm, libxml++ (from the gtkmm installer), obby and net6 DLLs (from the Gobby installer or the gobby-win32 repos). There has been no extensive testing on the Win32 platform, so consider this as experimental." - March 2007, (latest)
;)
I'm not sure how much this will fly.
On an unrelated note, something about Arrigton's journalism just bothers me. It's like every title has to involve some tired old cliché or unsubstantiated, conflicting statements.
Yes they have the handiness of true realtime updates (and I am not denying that isn't a huge feature) but that's hardly a unique feature (or wont be for long).
But then the rest of the UI / feature set is far too bland :( at least get some code highlighting and stuff in there.
Also in our short test earlier it didnt handle mass deletions & editing very well (if I deleted a block of text as someone was adding to it merry hell broke loose :P).
IMO a nice demo of a cool idea but badly executed enough to be no real use. Make me a real time white board and THEN I might take notice :D
You mean like http://dabbleboard.com ?
One thing I've often wished for was a standard syntax for specifying syntax highlighting modes. Right now basically every text editor has a different way of doing it, so you have to write dozens of modes when you create a new language or editor.
Thinking about it (going back slightly) there are not many situations where I see anyone actually coding with others in REAL time. Perhaps on hackathons (actually it would be ace for them) or suchlike - but for real work I doubt it would work. So the big selling point is gone: and there is nothing else to support it as a useful app (when Google docs has 100x the features).
That said I hope that will change in the future because it is rather nifty :D
(Yes, we could do that on public sites, but we're not going to, and neither are many of our customers).