Berners-Lee's Web vs the Object Network
Techie article! Scoring the Web against my architectural vision
Here I’m going to compare the Web and SOLID against The Inversion - my architectural vision behind the Object Network - so please do read that first. I don’t go into lots of detail about my vision or its justification or why it’s better, this is just about how there’s nothing out there that does what *I* want.
World Wide Web as of around 1994, without Java(script)
Today, every web page, every tab in the browser, is basically a Javascript app.
But of course, the original Javascript- (and Java-) free Web didn’t have anything like “apps” at that time. It simply had documents linked together. Any page could link to any other page, even “deep linking”, without taking you to the “top” or home page of a site. And any image could be transcluded in from any other site. You could even embed or transclude a web page inside another when iframes came along later.
When forms came along, the same architecture now supported sending data back to the server, but again, you could actually POST it back to a URL pointing to a different server!
This brief period gave a glimpse into a nascent app-free Web with HTML, CSS and URLs, with rich interactive functionality that could have been.
But in 1995, Java and Javascript were released and the future of the architecture as Imperative and app-bound was set into unstoppable motion.
There are three elements of this early app-free web that fell short of what was needed for rich interaction: it was document-focused, it was static and it was server-dominated:
Document-focused: GET would fetch large aggregate documents built in full by server scripts. There was the limited transclusion mentioned above, for images and entire pages, but there was no fine-grained, data-driven assembly of pages on the client that would be needed for laying out user interfaces. Of course, POST did just send small data chunks back from those form documents.
Static: there was none of the dynamism that is needed for good interaction. You had to hit refresh or hit a form button to see anything change. CSS hinted at a way to achieve functionality without imperative code. The primary example within the Web of resource interdependency is search engines, which poll for or are notified of page changes, then create search results pages that depend on those pages’ latest contents.
Server-dominated: it was an asymmetric, server-focused architecture where the active, present user was something of an afterthought, as was any user-generated content. In spite of view-source, the user wasn’t particularly empowered by this Web, although the fact that anyone could run up their own small webserver and join the Web and the way URLs are server-agnostic means it was quite a democratic medium.
These limitations were quickly overcome with Javascript and later AJAX and JSON and all the frameworks to follow. But they led to an app-trap culture where your own digital stuff was very much under each web apps’ control.
So, I’m still giving the original Web three amber blobs for the way it pioneered the path towards the full “two-way dynamic data web” of the object network.
Tim’s SOLID project fixes things in his Web a fair bit, getting full points for breaking stuff down more in Deconstructed, and also Decentralised as the Pods do offer much more user control over their data, even though not fully Local-First. It keeps the amber for Declarative, as, even though it adds the Semantic Web and a notification protocol, it does seem to favour full “applications” working over the data, rather than data dependencies kicked off via an observer pattern. Data is still subordinate to applications rather than being internally animated. I gave it an optimistic amber blob for “OS”, as it seems to have such ambitions through SolidOS!
|Deconstructed
| |Declarative
| | |Decentralised
| | | |OS
| | | | |3D
|8 |8 |8 |4 |2 |
--+--+--+--+--+--+
SO|🟢|🟠|🟢|🟠|🔴| 22
WW|🟠|🟠|🟠|🔴|🔴| 12
--+--+--+--+--+--+
Differences to the Object Network
An alternative direction that was never explored once imperative scripting took over would have been to simply address each of these three limitations. While keeping the essentials of URLs to standard data types and formats that are transmitted with a simple protocol, the Web’s architecture could have been recast to be Data-focused (dis-aggregation, transclusion, as already started in images, iframes and POST data), Dynamic (Declarative data dependencies, as already started in CSS, and an observer pattern based on GET) and more Symmetric (federated or peer-to-peer, user first class, local-first).
Of course, SOLID does go a long way down this path, as it is Data-focused, has a Dynamic notification protocol which could theoretically be used in an alternative app-free Declarative data-dependency architecture, and secures the Web’s Symmetric Decentralised architecture with its Pods. To be fully peer-to-peer like OnexOS, it would need to have browser client and Pod server functions merged into a common peer, thus with Pod data able to be self-animated without a client to do that, and the client able to host data authoritatively equally to Pods.
The Object Network and OnexOS take these full three steps. In fact, it turns the rather inert 2D Web into what’s actually a candidate for the 3D “Metaverse”, or the “Meta-Web”!
Hit the subscribe button to learn more, and feel free to leave a comment or question!