A Web for the Next Century
Chapter 1.
If you've read any of the numerous articles about The Extensible Web or heard about it in conference presentations, or seen The Extensible Web Manifesto you've likely seen (or heard) three phrases repeated: "Explain the magic," "fundamental primitives" and "evolution of the platform". I thought it might be worth (another) piece explaining why I think these are at the heart of it all...
For thousands of years the commonly accepted answer to the question ”where did dolphins come from” (or sharks or giraffes or people) was essentially that they were specially created in their current form, by a deity as part of a complex and perfect plan. Almost all cultures had some kind of creation myth to explain the complex, high level things they couldn't understand.
Turns out that this very simplified view was wrong (as is much of the cute creation myth I've created for the Web Platform) and I'd like to use this metaphor a bit to explain...
Creation and Evolution: Concrete and Abstract
It's certainly clear that Sir Tim's particular mix of ideas became the dominant paradigm: We don't spend a lot of time talking about SGML or Gopher.
It seems straightforward enough to think of the mix of ideas that made up the original Web as being evolutionary raw materials and to think of users as providing some kind of fitness function in which it became the dominant species/paradigm, but that is is a pretty abstract thing and misses a subtle, but I think important distinction.
The Web Platform/Web browsers are not an idea, they are now a concrete thing. The initial creation of the Web was act of special creation - engineering that introduced not just new ideas, but new software and infrastructure. The Web is probably the most grand effort in the history of mankind - browsers as a technology outstrip any operating system or virtual machine in terms of ubiquity and they are increasingly capable systems. There are many new systems with concrete ideas to supplant the Web browser and replace it with something new. People are asking themselves: Is it even possible for the Web to hang on? Replacing it is no easy task: technically or socially - This is a huge advantage to the Web. So how do we make it thrive? Not just today, but years from now?
Some more history...
In Tim's original creation, HTTP supported only GET; In HTML there were no forms, no images, no separate idea of style. There was no DOM or async requests - as - indeed there was no script. Style was a pretty loosely defined thing - there wasn't much of it, and it was mostly 'separated' more by accident than by purpose.- CSS wasn't a thing. There was just GET me that very simple HTML document markup which is mediocre at displaying text - and display it - when I give you a URL and make sure there is this special concept of a "link".
This is at the heart of what we have today, but it is not nearly all of it: What we have today has become an advanced Platform - so how did we get here? Interestingly, there are two roads we've followed at different times - and it is worth contrasting them.
In some cases, we've gone off and created entirely new high level ideas like CSS or AppCache which were, well, magic. That is, they did very, very complex things and provided a high-level, declarative API which was highly designed to solve very specific use-cases. And at other times (like DOM, XMLHttpRequest and CSSOM) we have explained some of the underlying magic by taking some of those high-level APIs and providing some imperative APIs.
Looking at those lists, it seems to me that were it not for those small efforts to explain some of the magic, the Web would already be lost by now.
Creating a Platform for the Next 100 Years
The real strength of life itself is derived from the fact that it is not specifically designed to perfectly fill a very niche, but because complex pressures a high level judge relatively minor variance at a low level and this simple process inevitably yields the spread of things that are highly adaptive and able to survive changes in the complex pressures.
Sir Tim Berners-Lee couldn't have forseen iPhones and Retina displays, and had he been able to account for them in his original designs, the environment itself (that is, users who choose to use or author for the Web) would likely have rejected it. Such are the complex pressures changing our system and we could learn something from nature and from the history of technology here: Perfectly designed things are often not the same as "really widely used" things and either can be really inflexible to change.
Explaining the magic means digging away at the capabilities that underly this amazing system and describing their relationships to one another to add adaptability (extensibility). At the bottom are a number of necessary and fundamental primitives that only the platform (the browser, generally) can provide. When we think about adding something new, let's try to explain it "all the way down" until we reach a fundamental primitive and then work up.
All of this allows for small mutations - new things which can compete for a niche in the very real world - and unlike academic and closed committees can help create new, high-level abstractions based on real, verified shared need and acceptance and shared understanding. In other words, we will have a Platform which, like life itself, is highly adaptive and able to survive complex changes in pressures and last beyond any of our lifetimes.