Friday, November 26, 2010

Building an open, accessible and event driven Internet

First off, I just want to give my view of the Intenet. I believe there are two reasons why the Internet is successful, or rather why it hasn't yet become just another failed or obsolete technology:

  1. HTTP is a brilliantly engineered protocol that has proven successful throughout the history of the Internet (albeit a short history).
  2. The enormous amount of careful and hard work that went into developing HTML and controlling 'web standards'.
Although, thanks to the continual attempts by Microsoft to derail and dissolve web standards, I believe we are 10 years behind where we could have been today. Fortunately, the appeal of an 'open' and 'standardised' Internet was so overwhelming that even the mighty Microsoft now find themselves at a disavantaged position having choosen a negative and destructive policy rather than assuming a supportive and innovation led role.

Rather than attack on Microsoft, I would cite this as an example of how little tolerance the Internet has toward anyone attempting to control or bend it for their own profit. In comparison, Google took the opposite view - By helping the Internet become a 'better place', they have become an extremely successful and profitable company and continue to live up to their "Don't be evil" motto.

With regard to the topic of Facebook and the controvasy that surrounds privacy policies and the 'evil empire' etc - I wouldn't worry too much, it would take 30 seconds to register to an alternative social network if people weren't happy with Facebook. We should also remember that over ten years ago we were all signing up to 'friendsreunited' and 'myspace', so gated online communities are not new, after all a social network is just an elaborate forum. I say this because do not like the idea of building an Internet on top of the Internet, I believe it defeats the purpose of the Internet and is largely pointless as HTTP is well-known, well-understood, powerful and incredibly prolific protocol. I had always thought Google Wave was doomed to failure, not because it wasn't an impressive technology, but it simply didn't seem to offer anything new - except a big learning curve.

One of the main motivations behind Femtoo was to make a positive move toward a more open, accesible, event-driven Internet. I'll define these term:
  • Open -  Allowing access to lots of data
  • Accesible - Prodiving easy, convenient, standard and well-documented access to structured content
  • Event-driven - The ability for web applictions to communicate asyncronously with each other via a system of events and callbacks

Why not add 'real-time' to the list? Because the Internet has always been 'real-time'. If I were to publish changes to this blog post, those changes would be reflected on the Internet instantly. The part that generally is not real-time are indexed search results etc - but the 'Internet' can not be blamed for this!

Some core concepts behind Femtoo could be summarized with these sentences:

  • Treat the Internet as a rich, accessible database
  • Treat a change in Internet content as a single event
  • Reference individual parts of a page with a unique URL (not just the entire page)
  • Treat the Internet as a single enormous 'workflow' engine.
Ok, but Femtoo is just a webpage tracking and notification system, right? Yes. But I believe it is also an interesting step toward facilitating all of the objectives listed above.

Femtoo allows you to pull out a single piece of data from within a webpage. This single piece of data can then be directly referenced via a single URL, for example this URL always references the latest jQuery version (parsed as a number).

When you create a tracker in Femtoo, have the option of specifying an HTTP Callback URL. So when the tracker detects a change in content (for example a new jQuery version), Femtoo effectively creates an event and fires a pre-configured 'callback' along with the details of the content change.

Because you can track pretty much any textual conent with Femtoo, you can point Femtoo at another web service, monitor the results and fire an event to a 'listener' web service. In this case, Femtoo would almost acting like the 'controller' part of an MVC architecture, but on the scale of the Internet. Futhermore, this process could be one part of a series of 'inter-service' events that constitute an 'Internet Workflow Engine'.

At the moment, most websites are just a collection of static webpage that contain unstructure content. For this reason, Femtoo has to 'poll' webpages to 'artificially' fire events, which is far from ideal. However, if websites were to become 'service friendly' and actively fired events upon content change, then the Internet could start to get really interesting...