Wednesday, March 15, 2006

Defining the Web

How do we define "the web"? Is it http, the protocol? Is it html, the markup language? Is it the url? Is the browser? The web-server? Some combination? Personally, I think the "web" is pretty well defined by the browser. By the client-side app. It is what displays html, it is what runs the javascript, vbscript, flash, needs the plugins installed in order to work. It's nice that we have html that all browsers know how to read, but really the browser has grown past just displaying html, and that means, for all intents and purposes, the web has grown past just passing html around.

URL's are important, and there would be no web without the routers and DNS machines that resolve hostnames and define resources - but then again, DNS is used for much more than just the web, and URL's are but one way to locate resources - browsers are even now finding new ways. Right now, my browser has a location text box and a google text box. I can type urls into the location box, and I can type nearly anything I want into the google box. I use both equally, but Google is really bringing into question the dominance of a URL view of things. When I can paste an email header into that box and see a visual representation of where that email travelled, or type a phone number into it and get back a name and address of a real person, it seems to me the concept of what is the web is expanding. And it all centers around the user interface of the web browser. The web is whatever firefox says it is.

Which, in a way, is unfortunate, because web-browsers seem limited by their history. Whereas the early web was a page-centric, document-centric, read-only medium, we now want the web to be one remote application after another. That's what "web 2.0" is all about - the ascendence of javascrikpt that finally mostly works. And what a piece of crap that is. It's horrible that the web is being driven by javascript when there are so much better options available.

The problem is more cultural than technical. The browser has gotten itself loaded on all machines - every has one, and finally now everyone has one that mostly runs a fairly standard javascript implementation. But what if the browser was instead a sandbox for real distributable application code (not just static text to be interpreted by a browser) - compiled, full of security measures to prevent abuse, but also enabling automatic discovery of new distributed apps "out there"? Imagine that instead of passing around web pages with embedded javascript, we were passing around java objects, or python code. And instead of a browser displaying a markup language, the distributed code controlled its own GUI fully.

We'd still want browsers - they're excellent for displaying actual documents for reading and other relatively non-interactive webapps. But foisting javascript onto developers and users for the purpose of making real desktop-like apps that nevertheless use a remote server to supply the database and backend processing is just cruel. It seems unnecessary too - why can't there be two different kinds of browsers? One that displays the contents of the url network, and another to display the contents of a java jini network? Or another for a ruby-XXX network? Ruby on Rockets anyone?