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").
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by smoody on Wednesday November 19, 2008 @09:44AM
(#369489)
"Changes are made in absolute real time, something even Google hasn’t been able to do (Google docs update every fifteen seconds)."
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.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by pg on Wednesday November 19, 2008 @11:19AM
(#369577)
It's not Google's scaling requirements that limit their simultaneity (or, obviously, a deliberate choice). Google Docs uses a different architecture, where a master copy of the document is kept on the server and broadcast every n seconds to all the clients. This is easier to implement, but can't be made fast enough to feel realtime.
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.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by celoyd on Wednesday November 19, 2008 @10:14PM
(#370270)
A master model is not necessarily slower. Everything goes through the server either way, and it comes down to how much data you have to transmit and how much the sender, server, and receiver have to process it.
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.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by zhyder on Wednesday November 19, 2008 @12:35PM
(#369670)
Hopefully the mechanism they chose is amenable to cross-user undo. (Though it's currently missing, I'm assuming single-user undo can be added easily enough.)
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by aaroniba on Wednesday November 19, 2008 @02:09PM
(#369786)
Undo works, just type control-Z (on windows) or command-Z (on a mac). It will undo only your own edits.
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).
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by axod on Wednesday November 19, 2008 @10:34AM
(#369526)
Agreed. Etherpad is sending a new POST request pretty much every keypress. Considering the HTTP headers and cookies, that's around 500-1k of data per letter typed. At google docs volume that would be a lot.
(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?
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by drm237 on Wednesday November 19, 2008 @10:48AM
(#369538)
I think they're using comet for the requests so while the activity may be high when people are typing, during breaks it should be very low as opposed to ajax polling.
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.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by axod on Wednesday November 19, 2008 @11:02AM
(#369551)
Are you being sarcastic?
Does anyone know what comet is? Please explain exactly how you can SEND multiple packets over time from browser to server without sending more HTTP requests, and without using any java applet/flash.
It's a shame people seem to have started saying "use comet" without understanding what it means. Did you read that link?
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by axod on Wednesday November 19, 2008 @11:24AM
(#369582)
Yes, you can specify keep-alive (Although some browsers refuse to do it in an XHR - Opera for one).
However, you still send the full glut of HTTP headers every single request.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by marcus on Wednesday November 19, 2008 @12:15PM
(#369650)
True, you still need the headers, what you don't need is a new connection every key stroke. Establishing a new TCP connection is a relatively high cost network item (between all the Acks and Syns you need 3 messages have to go back and forth for it to establish), keep the connection alive, the stuff will run a lot faster.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by marcus on Wednesday November 19, 2008 @10:46AM
(#369536)
You're forgetting Google didn't develop Google Docs in-house they purchased Writely back in 2006 and that's the codebase Google Docs is built on. Depending on how it was built originally the change might require a massive rewrite...
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by drm237 on Wednesday November 19, 2008 @10:39AM
(#369529)
What's the difference between "something even Google hasn’t been able to do" and "their scaling requirements made it impractical"? When you get past the semantics, it's essentially the same thing. Either way, they're not doing it.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by ph0rque on Wednesday November 19, 2008 @09:59AM
(#369503)
What would make this application killer for me is if was embeddable in other applications as a widget (think rich-text editor on steroids). This, plus a git-like backend for revision history, would be just absolutely amazing.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by jonknee on Wednesday November 19, 2008 @12:56PM
(#369702)
SubEthaEdit's collaboration engine is licensable (Coda has it), so it's possible something like TextMate could go there. I'd also like to see a Windows package get it because that's a pretty big limitation with SubEthaEdit at the moment.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by ph0rque on Wednesday November 19, 2008 @11:50AM
(#369619)
> The AppJet team plans on releasing this new server-side software (similar to their previous release but with the addition of Comet functionality and other pieces) completely Open Source as well.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by pdubroy on Wednesday November 19, 2008 @03:54PM
(#369906)
Is their other stuff really "open source"?
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?
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by jbyers on Wednesday November 19, 2008 @11:40AM
(#369607)
What a fun service. I can't remember the last time I used the word "fun" in reference to a plain text editor. :)
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.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by tocomment on Wednesday November 19, 2008 @11:17AM
(#369575)
Maybe this will change how people code. Instead of programmers hanging out in IRC, they can hang out in the code and fix things instead of just complaining :-)
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by aneesh on Wednesday November 19, 2008 @12:57PM
(#369706)
SubEthaEdit has been one of the coolest pieces of software I've used, but it's 1) not free, 2) desktop-based, 3) OS X only. Etherpad offers all the functionality without those restrictions.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by pg on Wednesday November 19, 2008 @03:58PM
(#369915)
That was one of the applications the Appjets had in mind. Aaron told me that when he worked at Google one of the main reasons they used to fly candidates in was just to watch them write code. Part of that step could now happen before the flight.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by pg on Wednesday November 19, 2008 @10:06PM
(#370259)
That's why I said part of that step could happen before the flight. You would also want to have some tests in person for the people who made it past the remote test. They probably wouldn't be needed that much, though, because I don't think most applicants would go so far as to have someone else type their answers if they were doing it live on the phone with someone from the hiring co.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by volida on Tuesday December 02, 2008 @03:24AM
(#382798)
yeah, on a second thought in the potential to limit the stress I suppose this could be used by putting the intervwee alone in a different room and watch them code remotely from another room.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by humanlever on Thursday November 20, 2008 @12:50PM
(#370793)
My first thought while playing with it during class was that it'd make a great replacement for Basecamp's crappy Writeboard feature.
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.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by jodrellblank on Wednesday November 19, 2008 @07:42PM
(#370153)
Gobby. Bubbling over with 1990's user friendliness:
"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)
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by sh1mmer on Wednesday November 19, 2008 @11:34AM
(#369596)
This seems like SubEthaEdit but for the web. Maybe it was the barrier to entry or the technical wrangling to get it working that killed SEE; But even among Mac-heads I haven't seen it being used in years.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by tsally on Wednesday November 19, 2008 @11:38AM
(#369603)
Interesting app; it looks like it has a lot of potential.
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.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by ErrantX on Wednesday November 19, 2008 @11:42AM
(#369613)
neat but hardly killer.
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
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by tlrobinson on Wednesday November 19, 2008 @07:08PM
(#370125)
They do have syntax highlighting for JavaScript.
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.
Re:Etherpad Shows Google Docs How It’s Done (By AppJet)
by ErrantX on Thursday November 20, 2008 @09:47AM
(#370621)
I know what you mean :D that would be rather cool
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
http://etherpad.com/ep/newsyc
For the curious, I added this URL to our running web server in 5 minutes with 12 lines of JavaScript:
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).