Web 3.0 Has Already Begun!

Web 3.0 has begun and its not what you think.  I don’t think many people realized what Web 2.0 was until we were at the height of it, and already seeing the capabilities that had been set out years before it. But imagine if we had all realized in 2001 what was possible and all of the major social and technical shifts that would rise the an explosion of innovation and opportunity by 2006.

First let’s start by defining Web 2.0.   Depending on who you ask, you would get different answers.  A marketer would tell you it is about the User Generated Content (UGC).  A technologist would tell you it is all about AJAX and the API mashups that AJAX enabled.  A designer would tell you it was the new simplified aesthetic that focused on conversions and pragmatism.  They’re all correct, but let me distill this into a concise list:

  • Use Case:  Socialized content.
  • Technology:  AJAX (JavaScript) and Mashups
  • User Experience: Fewer page refreshes. Simplified design.

To say web 3.0 has begun, we’d need parallel impact on all these fronts, so let’s start there:

From the use case perspective, consider the semantic and meta tagging that are now a part of the HTML5 spec.  Semantic web promises to transform the web into an ultimately connected experience in which a machine has as much awareness of the content as a human.  Imagine your calendar warning you there is a conflict prior to booking a ticket on Expedia.  This is equally if not more significant to the social revolution of web 2.0.

As far as technology goes, HTML5 solves two major problems that will lead to a major revolution of web application architecture, moving in the same direction of Web 2.0.  First, no more limitations preventing cross-domain AJAX calls. That has huge implications for mashups!  Second, a robust local storage facility that can be used for JSON (serialized JavaScript objects) document storage locally on a device and will substantially help overcome the stateless persistence issues that have plagued web applications since the beginning. This is so significant in fact, that there is already a movement toward smaller event-driven server-side technologies such as Node.js and NOSQL document databases such as Couch and Mango, which are perfect for JavaScript object storage, in acknowledgement of the shift of dominance toward the client.  Think fat client applications written 100% in JavaScript.  The potential is already there and buzzing quietly under the surface. Node.js already has as many followers on GitHub as Rails (for Ruby)!

Finally, user experience.  This one can be summed up in two words – interactive media.  Finally with HTML5 and the proliferation of cheap bandwidth, it seems the pieces are in place for the much-anticipated online media revolution.  There are technologies already available and built upon HTML5 that enable bi-directional triggering and interaction between the HTML Document and the embedded media. Imagine you are a media content producer and you can embed triggers into your video that will instigate social interaction and information widgets at correct times in the media.  Simply amazing when you think about what might be possible here.

Putting it all together, the potential is there for a much larger wave of technological and cultural innovation now, than at the beginning of Web 2.0.  Not only is this significant enough to be compared to Web 2.0; its bigger!  And if you consider Roger’s Innovation Adoption Curve, NOW is the time for entrepreneurs and technologists to begin creating opportunities around these possibilities.  Don’t wait until we’re already 1/2 way through the innovation cycle and the retrospective innovation has become obvious.  By then, it is too late.

100% Javascript Web App Architecture

Imagine creating a Rich Internet Application (RIA) built entirely using JavaScript, from client to server.  What would it look like? I’ve already discussed the benefits of HTML5 and the coming Web 3.0 movement in recent posts so I will not into those details now.  Instead, I want to focus on what an application like that might look like.

First, to review the new resources at our disposal with HTML5: Because of the required implementation of the HTMl5 spec localstorage(), you will now have a much greater facility for maintaining persistence across the user experience and even over the lifetime of the user. The implementation specification calls for a robust key/pair database that can store up to 5MB of data and doesn’t necessarily ever expire (ideal for storing JSON objects). Second, security provisions now allow for cross-domain AJAX calls, enabling mashups of disparate data sources, directly in the client application.  Third, js workers are now a native concept, allowing background processes for intensive JavaScript processes, to now kill browser memory.  Fourth, native support for media, enabling bidirectional control of audio/video by the DOM and vice versa. Additionally, libraries for rendering sophisticated SVG graphic and even drawing real-time on the canvas. These resources provide tools for a much deeper user experience and will provide the opportunity to create a fatter client application, shifting much of your central logic to the client.

Meanwhile on the server side, a substantial amount of momentum is building behind Node.js.  In fact, check out Node.js on GitHub and you’ll find it now has more followers than Ruby on Rails. The promise of Node.js is an extremely thin event-driven framework for creating web services entirely in JavaScript.  The benefits of this approach are (a) an extremely fast framework that avoids thread locking and an all-JavaScript developer experience, which provides for both faster development and less team bifurcation.  Node.js is also ideal for managing long-session connections which might be used for media or chat sessions, etc.

Node.js Popularity

There has also been a lot of interest in NOSQL (“not only SQL”) databases, that are document  rather than table oriented.  So, instead of a structured pre-defined schema, you simply store your own data in a structured way that can be independently structured from any other document.  The documents are essentially serialized JavaScript (JSON or the binary equivalent BSON) and are ideal for persisting data objects from the software.  In fact, wasn’t this largely the goal of bridging ORM technologies such as Hibernate?

javascript ArchitectureSo where is all of this going?  If we look at the technology stack we now have available, it is natively JavaScript from top to bottom, with persistence resources on both the client and server, that are both ideal for storing serialized JavaScript objects.  Combine this with the deep integration of media and imaging, as well as support for AJAX web service integration across any domain, not to mention the proclivity of JavaScript developers toward  a fat client architecture – I think you have a recipe for a popular new fat client architectural paradigm emerging.

Considering mobile, it is ideal not to have page refreshes more than necessary.  With a web application architecture that is much less dependent upon server-side page refreshes, this could be a much simpler alternative to building complex native mobile apps, using Objective C and still another version in Java for Android.  And with all of the media resources implicit in HTML5, it appears we’re going to see much deeper still, RIA user experiences, which again benefit from a fatter client and thinner server application. In this paradigm, the server application is minimized to a collection of web services in support of the fat client application, which aren’t even an exclusive provider for the RIA application, since it can also not pull directly from other external resources providing JSON web services.

Node JSObserving other early indications of movement toward this model, Yahoo is set to release a new platform called Mojito, which seeks to “blend” the server/client paradigms into one cohesive development experience.  It is essentially built upon Node.js on the backend and YUI for a rich AJAX library on the client side. There is a whole philosophy they are building around the best practice for developing RIA JavaScript-centric web applications that service mobile and desktops alike.  Or you could assemble your own stack using JQuery and Backbone.js on the client; Backbone.js in particular is an MVC framework for JavaScript and may prove particularly useful as you begin building more complex “fat client” applications.

This movement toward deeper JavaScript’ing and richer user experiences online, began in 2005 but stopped short due to key limitations of AJAX, media, and persistence, though I think many saw the promise.  With those key issues now solved, I very much look forward to seeing a continuation of interface innovation that leads to further refinement in both architecture and user experience.