If you've never seen Tim Berners-Lee use his original web browser, it's worth digging up some video. He developed it on the NeXT, which was a strongly object-oriented operating system. Some of those object-oriented concepts and philosophy live on in the MacOS X development environment (which essentially is the next-NeXT, brought to Apple by Steve Jobs), where you can build applications by combining objects.
Anyway, the original browser had the concept of links basically as objects.
What is an object? An object is data plus methods. This is a key concept. Data does not stand alone. Data alone is useless. Data alone you have to wrap in massive hacks to discover it, parse it, and manipulate it in some useful ways.
If you watch Berners-Lee use his browser, here's a bit of magic: you never see URIs. Why should you ever need to know the URI of a page? What you want to do is link to pages. In his browser, you find an interesting page, you just mark it, and then attach that mark to a page of your own. Yes, live local web page editing, in the browser. Here's the unfortunately somewhat complex explanation (it's much easier when you see it being done):
The "Link" menu you can see. "Mark all" would remember the URI of where you were. "MArk selection" would make an anchor (link target) for the selected text, give it an ID, and remember the URI of that fragment. "Link to Marked" would make a link from the current selection to whatever URI you had last marked. So making a link involved browsing to somewhere interesting, hitting Command/M, going to the document you were writing and selecting some text, and hitting Command/L. "Link to new" would create a new window, prompt for a URI (ugh - it should have made one up!) and make a link from the selection to the new document. You never saw the URIs - you could of course always find documents by following the link to them.
(emphasis mine)
From Tim Berners-Lee: WorldWideWeb, the first Web client.
Unfortunately, while the Mosaic and Netscape browsers were a revolution, they lacked this concept of a smooth interaction between web page browsing and web page editing, between link discovery and link creation. So we got all tangled up in the world of manually typing <A HREF and in the address bar.
We need to objectize our data. We need to hide the HTML and Web Services and Ajax and everything. That means we should be able to apply useful methods to data items. (Which of course means we need to identify data within web pages.)
Lorcan Dempsey has talked about a similar idea, with his concept of making data work harder, although he's talking a lot about getting more value from existing databases, rather than individual data items.
Like a web page URL. Standing alone, as a chunk of data, it is useless. You should be able to click on a URL and discover all sorts of useful things, by applying methods to it: what pages link here? how high does this URL rank? who has bookmarked this URL? put this URL in Furl or delicious. etc. (And of course you shouldn't really care about the URL at all, it's "this page" that you're interested in.)
Similarly, an ISBN sitting on a page is useless. It needs to have methods: find this in my library. find related ISBNs. show me a book cover. etc.
We need to work with objects, not with data. That's the next level of web interaction. If you think about it, a lot of the Firefox extensions and toolkits we are seeing are about discovering useful pieces of data on a web page, and providing integrators with methods they can apply (e.g. "run this through my organization's OpenURL resolver").
We have been I think limited by our tools - the web browsers themselves. The focus was on the web browser as purely an accurate rendering engine, so we got all concerned about HTML and CSS and such. Whereas really we shouldn't care about that layer at all. We should be working with the information on web pages, not worrying how they are coded. We should be able to manipulate web page objects in useful ways.
For example, if you click and drag a web link in Safari on the Mac, you'll see that it turns into a bubble that is the link - it knows it is an object you want to work with. Similarly in Flock, we're beginning to see more sophisticated ways of interacting with images and bookmarks.
There is still a long way to go though. I should be able to visit Flickr and drag images onto my blog and drag links from my blog onto Flickr, and all the underlying infrastructure should just work. Drag and drop and right-click interfaces are powerful ways to manipulate objects that have not been fully utilized. Applications should understand objects and do intelligent things when presented with them, rather than constantly requiring very technical, low-level manipulations by the users. "Cut this, make an A HREF, adjust the stylesheet, FTP, preview" has gotten us pretty far, but it's neither a scalable nor a productive paradigm.
Also, think about tags, and the hacks we use to get them on our pages. One other key aspect of object models is extensibility. You should be able to add and integrate new features. Meanwhile, our web browsers know nothing about tags. You can't drag and drop them, you can't do searches on them, to the web browser they are just dead data on the page. We need to find an extensibility model so that as we add new objects to our pages, they can be manipulated usefully.
Recent Comments