In March 1989, Tim-Berners Lee (aka TimBL), a scientist at CERN in Geneva, Switzerland, proposed a Hypertext-based system to organize the incredible amounts of information generated annually by the organization. He followed this proposal with prototypes, leading to the creation of the first web server and browser and the development of the first versions of the HTTP protocol and the HTML markup language.
CERN needed a way to cope with a massive turnover of scientists generating tons of written content, primarily papers, journal articles, and the occasional book draft. Words on those documents should easily be “linked” to other documents on the same network to enable references, discussion, and sharing.
Unbeknownst to most younger developers, “Hypertext” was one of the hottest ideas at the end of the eighties; it was right up there with Object-Oriented Programming, the Lambada (no, not “Lambda,”) and the first Batman movie. It is no coincidence that TimBL used the H word in his proposal. Case in point: the October 1988 issue of Byte Magazine (available on newsstands merely five months before the proposal) is titled “Hypertext.” It contains several pages of explanations and historical references to various Hypertext ideas, prototypes, and concepts, including Vannevar Bush‘s Memex, Ted Nelson‘s Project Xanadu (nothing to do with Olivia Newton-John, pretty promise), and Apple’s HyperCard software product.
We will never know, but let us pretend that TimBL had a copy of this magazine on his desk while drafting the proposal. It is said that the very moniker of “Home Page” comes from Apple’s HyperCard and its “Home Card,” where all interaction would begin. We also know that he attended the HyperText conference in San Antonio, Texas, in December 1991.
It means that the Web (with an uppercase W) we have been using for the past 25 years was born as a Hypertext (with an uppercase H) document management system. Its most important feature, by all means, was the
<A HREF="…"> tag, enabling words to appear underlined in blue and making the “Hypertext” concept a reality. Couple that with a “Back” button driving a FIFO data structure in memory; boom, you have got yourself a browser.
The problem is that the Web was never meant to be a programming platform. Remember? It was a document-sharing-and-linking system. It was coerced into a programming platform.
One of web applications’ most significant selling points was the “single deployment” idea: copy your app to a server, give customers a URL, and profit. Time for an upgrade? No need for CD-ROMs or downloading binaries; update the app, and let your users enjoy new features and bug fixes immediately. Coupled with the emergence of the Agile movement, a whole new category of software developers emerged in 1997, crashed in 2000, and re-emerged in 2004 thanks to the “années folles” also called the Web 2.0 frenzy.
It is pointless to enumerate the gazillion forms these abstractions have taken shape. Still, it is worth mentioning one: a file format (usually referred to as JSX or TSX, depending on whom you ask) merging the three elements of the trinity into a single file (something that Microsoft had tried 15 years before with those HTAs for Internet Explorer 5.) Those JSX files are at the core of one of the hottest new trends of the 2010s: Single-Page Applications, or SPAs, built by a new generation of “front-end engineers” dealing every day with
npm and its various quirks (and security issues.)
The thing is, SPAs are a terrible idea.
The result is a terrible degradation in user experience, particularly for resource-constrained devices such as mobile apps and smart TVs, and for users in locations with poor connectivity, which is a lot of places. Still, developers in first-world countries with lots of bandwidth could not care less. Most of these apps seem to be built around a single assumption: let us just hope the user does not hit the back button, and everything will be fine.
We also got “real time” technologies to enhance our experience. We mentioned AJAX previously: another thing initially invented by Microsoft as an ActiveX component to empower its Microsoft Outlook web application on Internet Explorer, later adopted by Firefox and Safari. Then we got WebSockets, and its less well-known sibling, SSE (Server-Sent Events,) a much simpler yet often overlooked alternative to WebSockets.
In the meantime, such is the importance of HTTP (and HTTPS) as a protocol for our modern world that a whole new platform (Kubernetes) was built to serve content by default on port 80 (or 443, respectively.)
Knock knock, who is that?
Hold my beer: Hotwire proposes the revolutionary idea of… sending HTML over the wire.
Meanwhile, Ruby on Rails, PHP, ASP.NET, and Java developers are shaking their heads in dismay while they deliver an umpteenth server-rendered web application to their customers. Who woulda thunk? Servers are cool again. But running monolithic apps in Kubernetes remains challenging; good luck deploying that Mastodon instance on your cluster.
But things are not going well. TimBL has regrets. Jake Archibald is swearing. Brian LeRoux is sad. PPK does not know whether to teach Flexbox or Grid CSS first. MIT is withdrawing from the W3C; Safari (or Chrome?) risks becoming the new Internet Explorer; the Google Gruyere app shows that security was always an afterthought. In the meantime, ChatGPT is creating a new HTML standard element for music, and developers are still unsure which HTTP headers are case-sensitive.
One of the original goals of Ted Nelson’s Xanadu project was to avoid broken links; on the Web, the best we can aspire to is to have our web page crawled by the Internet Archive’s Wayback Machine and to be able to point to it instead in the future. So please ensure your 404 page is user-friendly; it will be shown very often.
Maybe Web browsers as we know them are just a first step in the good direction. Maybe Kubernetes is another step in that direction. Maybe there will be an upcoming technology (open and standardized) that will make real web applications possible, with a single programming language, a unified debugging experience, and a mandatory plugin for Visual Studio Code. With it, developers will finally deliver apps on time and within budget, using a single, modern programming language running in a distributed platform that serves users with structure, style, and behavior.
The Web was conceived as a document browsing environment; stretching it in other directions, particularly for software applications, was a mistake.
(Just like misusing its good name in this whole “web3” nonsense which has nothing to do with the Web.)