I had the opportunity, last year, to talk with the team behind AppJet. They’re building something quite cool: A simple platform for developing reusable server-side applications written completely in JavaScript.
They’ve come a long way since I originally wrote about them late last year. They now even provide a copy of their server-side software along with the full source. This, together with Aptana’s Jaxer, means that there is, at least, two high-powered, Open Source, JavaScript server platforms.
EtherPad is something new altogether. Building upon their existing platform, and adding in Comet streaming, they’ve constructed a completely real-time, multi-user, text and JavaScript editor.
I use two editors in my day-to-day work: vim and SubEthaEdit (in fact I’m writing this blog post in SubEthaEdit, at the moment) – and I can say pretty definitively that EtherPad is just like SubEthaEdit.
I had the opportunity to use it last week with four people all simultaneously editing a document. It has the characteristic SubEthaEdit feature: All changes, by any user, occur in near-real-time and are highlighted with that user’s chosen color.
Some may wonder how this is different from Google Docs. Let me just say that SubEthaEdit and EtherPad are in a completely different league from Google Docs: I’ve used all three pieces of software for multiple-editing a document and the responsiveness that you get from SubEthaEdit/EtherPad makes for an unparalleled experience. It’s really common to see users start chat discussions within a document simply because it’s so easy to see their response and get a discussion going.
EtherPad does have one major distinction from SubEthaEdit, though: The ability to save and restore page revisions. At any point you can hit a large ‘Save Now’ button on the page to tag a revision – and then go back and restore from it at any point. In many ways this makes the software more like a real-time, multi-user editable, Wiki.
The most exciting thing for me though, and a point which I think is unparalleled, the entire application is built using JavaScript from the bottom up. The server code is in JavaScript, the database is in JavaScript, and the frontend is in JavaScript – it’s a complete JavaScript stack. 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. I look forward to being able to give it a spin when the time comes.
Kris Zyp (November 19, 2008 at 10:12 am)
I realize you can’t always enumerate everything out there, but you could give us folks working on projects like Persevere and Helma a little more credit with our open source JavaScript server platforms. EtherPad and Jaxer aren’t the end all of SSJS.
Jacob Seidelin (November 19, 2008 at 10:20 am)
That looks pretty sweet. I’m really liking AppJet and have been using it a bit for small pet projects. Being able to do everything in JavaScript just rocks my socks off.
Mardeg (November 19, 2008 at 12:14 pm)
@Kris Zyp: I guess he could just link to http://en.wikipedia.org/wiki/Server-side_JavaScript so everyone can compare them all :)
I’ll give credit to the first one to implement either OpenID, suggested for jaxer at http://forums.aptana.com/viewtopic.php?p=18014 or yubikey authentication, suggested at http://forum.yubico.com/viewtopic.php?p=278#p278
rektide (November 19, 2008 at 12:26 pm)
Syntax highlighting is unfortunately a must. I would’ve started with something like CodeMirror myself.
Alvaro (November 19, 2008 at 1:26 pm)
Good to hear these things. This tells me how outdated I was on the matter. I thought that after Netscape’s Server Side Javascript, use of JS on the server had been lost, and all scripting was PHP or ASP without JScript.
I thought JS had a lot of potential for server side scripting so I’m glad to discover so much movement in the field. JS engines continue to improve and should get more attention out of the client side. The projects you mention look very interesting. I wish some of them become mainstream and come by default in common hosting services, which today only offer PHP and/or ASP.
Timothy (November 19, 2008 at 1:56 pm)
Very interesting. I will have to keep up with its development.
ben (November 19, 2008 at 2:03 pm)
If you want syntax highlighting, check out http://collabedit.com
Alvaro (November 19, 2008 at 3:31 pm)
By the way, *it does syntax highlighting*.
Click Options on the right, and select highlighting (Javascript only) and/or disable the different colors for different authors.
James Woods (November 19, 2008 at 5:18 pm)
Wow dude that is like way cool
jess
http://www.anon.cz.tc
Breton (November 19, 2008 at 5:41 pm)
I could also note that the appjet website itself (last I heard) is built entirely with Helma. They have custom server software, but it’s Helma doing the content management.
Mitch (November 19, 2008 at 8:05 pm)
Very cool, you might also want to look at : http://globalsystembuilder.com if you are doing single/pair/team programming in real-time against remote servers using dynamic programming languages.
greg (November 20, 2008 at 3:55 am)
The user agent checking code doesn’t sanitize, people were injecting scripts on one pad I saw…
Ivan (November 20, 2008 at 5:04 pm)
The latest glassfish prelude supports javascript as a server side language as well. I’m pretty sure it does templating in a form of js too but I think you can leverage whatever ui language you want.
The db persistence is js in a sense- leverages jpa I believe.
Adam Gent (November 21, 2008 at 8:58 am)
You might want to take a look at Axiom Stack http://www.axiomstack.com/
I didn’t get to play with it much but it looked kind of cool.
Breton (November 24, 2008 at 12:30 am)
I shall point out that axiomstack is also based on helma. It’s basically helma+some proprietary stuff.
Eugene (November 27, 2008 at 1:15 pm)
I just got the ability to create new pads and it’s pretty cool. Thanks for posting about this! :)
Robotech_Master (November 28, 2008 at 4:26 pm)
The two things I like the most about EtherPad, which you didn’t really touch upon, are 1) the separate chat window, so you can discuss the document without having to type and erase comments between paras, and 2) the way that you can invite anyone who can use Javascript to help you just by messaging the a URL—no more trying to convince the other party to install some strange software while you hope and pray they can get it to work right.
nic (December 3, 2008 at 11:53 am)
@ben, @Alvaro, @rektide
I’m working on something similar, but with realtime highlighting and code completion (still in alpha)
http://www.notapad.org