Phobos – Server-Side JS Redux

On Ajaxian, Dion points to Sun’s Phobos project, an attempt to build a new platform for server-side Javascript. Phobos came out six months ago, around the time of the May Ajax Experience.

No-one has taken server-side Javascript seriously since it died a premature death in the mid-90s. But there is great potential…

  • Server-side Javascript would allow for code sharing between browser and server. The most obvious application being validation code, but since no-one really bothers with server-side Javascript, there are probably many other patterns as well. One pattern I came up with a while ago is Dual-Side Templating, where you have the same parametized HTML template on both the server (for initial page load) and the browser (for subsequent additions to the page). I implemented the server templating in Ruby, but it would have been a lot easier if the server was running JS. That’s just one example.
  • Server-side Javascript would keep us Ajax types more sane. Right now, an Ajax developer has to constantly flip between JS and [insert favourite server-side language here]. True, you always have to flip over to other “languages” too, viz. HTML, CSS, SQL; but there’s always a special place in the programmer’s head for the core language of the day. With Ajax, you have two such languages. If those languages are quite similar (e.g. Javascript and PHP), it gets frustrating because of all the subtle differences (new Array() versus array()). If they’re different (Javascript and Ruby), you’re trapped in a Whirf-Brock disconnect, constantly flipping between two different worldviews. Slight exaggeration as it’s certainly do-able, but it would be a lot easier if programming in one main language.
  • Server-side Javascript would pose less of an issue for IDEs. With new improved Javascript, IDEs are being forced to support Javascript in order to keep up. It’s far more important than supporting SQL etc; so basically, IDEs now have to provide solid support for at least two serious languages…it would be easier if it was only one.

Now a framework like Phobos has much to offer the world compared to the server-side Javascript of the mid-90s:

  • Phobos is apparently inspired by new frameworks such as Rails. With the right libraries and improved patterns for OO, inheritance, etc, Javascript can compare admirably against Ruby. Not in every regard, but then there are actually some aspects of JS that are superior (e.g. functions as opposed to blockism; dynamic member creation).
  • There’s a lot more known about Javascript now, and it’s almost certainly the most widely understood language in the industry, even though it’s not the primary language for many (cf. English).
  • Because of all the JS code now running in the browser, there are probably a bunch of synergies with server-side JS – these could be exploited by a well-considered server-side JS framework.

As an open platform, Phobos has the best chance right now to make server-side flourish. But I agree with Dion, that there is reason for concern about whether it will happen.

Sun may already have this. Will they be able to market it? Unfortunately, the track record isn’t there, so it will probably languish. Buy maybe not.

Joining Ajaxian

I’m pleased to announce that I’ve joined Dion, Ben, and Rob as an editor. Here’s [Dion’s announcement]( 2005/11/introducing_mic.html):

  • We are proud to announce that Michael Mahemoff of the popular has joined the team.
  • Together, and Ajax Patterns is going to offer even more information for users of Ajax technology.
  • Expect to see cross pollination between the sites, and in the podcasts.

It will be great to get involved with the talented Ajaxian team. Ajaxian has been a great source of inspiration for the Ajax Patterns – when I created the Ajax Examples page, I thanked them for posting all the Ajax showcases, and many of those examples – as well as the ongoing community news – helped me discover and document the patterns.

Especially fun will be the combined podcasts, and expect to see and hear more info about the patterns at Ajaxian and in the Audible Ajax podcasts. Fortunately, uses a very similar Creative Contents license, so the material can be reused and incorporated in other works. BTW I’ll still post the final Basics of Ajax podcast to the standard SoftwareAs feed later this week.

We have some interesting ideas for linking between AjaxPatterns and Ajaxian. As always, please provide feedback any ideas you have about Ajaxian, AjaxPatterns, or the cross-pollination effort.