I have been following the discussions on Web 2.0 over the past couple of months, and have been intrigued with the attempts to come up with an agreed upon definition of what exactly Web 2.0 is. One of the interesting things has been watching individuals / groups jockey to define Web 2.0 in a way that explicitly includes their technologies, and implicitly excludes others.
Jonathon Boutelle highlights the attempt by some in the Ajax community to equate Ajax with Web 2.0. Indeed, if you look through the history of the Wikipedia entry on Web 2.0, you can see attempts to define Web 2.0 to include:
Unobtrusive Ajax Techniques
and to exclude
Non-standard browser plug-ins and enhancements are generally eschewed.
The neutrality of the entry is disputed, but it gives an example of how groups are trying to steer the direction of the discussion to benefit one technology over another (in this case Ajax over Flash). I saw similar attempts during Web 2.0 conversations at O’Reilly’s Foo camp a couple of weeks ago (although in those cases it seemed to be driven more by a lack of knowledge about Flash, verses an evangelism for Ajax).For the sake of this post, I am going to define Web 2.0 as “the web as a platform”. i.e. Web 1.0 (Today’s web) primarily consists of closed APIs and services whose use is defined by the creator. Web 2.0 consists of documented APIs and open services (HTML, RSS, REST, Web Services, etc…), whose use is determined by the users and / or third party developers.Jason Kottke has an excellent write up on his thoughts on Web 2.0 and what he terms the WebOS, which he defines as an “Operating System based on the web”. This describes the types of applications that will be built on top of Web 2.0 and how they will be constructed.As Kottke notes, one of the primary advantages of such a WebOS is that it is largely platform agnostic:
Aside from the browser and the Web server, applications will be written for the WebOS and won’t be specific to Windows, OS X, or Linux.
For application developers, the main advantage is that instead of writing two or more programs for multiple platforms (one for the Web, one for Windows, etc.), they can write one app that will run on any machine with the WebOS using the same code base.
This brings me back to the attempt to define Ajax as an integral part of Web 2.0. Ajax applications often appear to be cross browser / platform to the end user, but developers often have to do a significant amount of work to make those applications work cross-platform / browser. Indeed, the initial release of Google’s gmail did not include support for Safari on the Mac. Is a technology really cross-platform if you have to do a significant amount of extra work to make it that way? (that is not a rhetorical question).I do not mean to suggest that Ajax applications cannot be used to develop Web 2.0 applications, but I do believe that there can be significant disadvantages to doing so.It is this cross browser development complexity, along with the inherent limitations of developing applications based on a model originally designed for document centric display, that can and often does limit the robustness of browser based apps.Kottke seems to acknowledge this when he notes that WebOS clients may not be as robust as traditional desktop applications, but that they might be good enough: