The Con of the Universal App Player
A while back I was been engaged in a conversation on the Fediverse that began with web browsers and then morphed into a philosophical discussion about the modern web itself. I'm not going to use this space to rehash the discussion, but rather to put down into words my feelings on what the web should be vs what it currently is, how we got here and what can be done to get back to a more sane place.
The web began as an interconnected document store
What we think of as "the Internet" was born from the earlier network, the Arpanet, with it's biggest difference from that earlier network being that this time the network was made available to the general public rather than just government agencies and academic institutions. The new "Web" was often called the "Information Superhighway" back in it's early days, and this was an apt description.
One of the early and important pieces of software that sprung up around this new development was the Netscape internet suite. The Netscape suite, apart from introducing the world to the concept of tabs, had the distinction of including not just an internet browser but also an email client and web authoring program, in the form of the "Composer" element, a WYSIWYG html editor. This shows just how many people in those days thought of the Web as not just a place to consume content, but as a publishing platform open to everyone.
The significance of that last statement would be hard to overstate. The modern Web indeed offers plenty of opportunities to easily publish your own content on someone else's computer. On the early Web, however, it was common (and in some cases expected) that you would just host your own content and build it yourself. Even if you used one of the several cheap services to host your content, you usually brought your own html pages. The Netscape composer application (along with now forgotten proprietary programs such as Dreamweaver) made it possible to author an entire website without knowing any html, providing an interface which can be described as almost identical to your average word processor. Indeed, the open source OpenOffice suite also allowed you to export rich formatted documents as a web page, ready to drop into your server.
Many people of course opted to pay someone to design and build their website, in particular if it was to be used as another way to reach a business. However, even for such sites that were made by "the professionals" what you got for your money was a collection of documents to be served up as is by a web server.
Internet forums and the golden age of php/perl
Even in the early days of the internet, there was a desire for a more interactive experience. The first widely deployed paradigm was the CGI program. CGI had the benefit of being language agnostic, so you could make a CGI program that generated content using anything and everything from C to Bash scripting. These early interactive pages worked fine for the most part, but had the drawbacks of ugly url's, poor performance under heavy load and at times iffy security.
Of the languages used in CGI programs, Perl was one of the most widely deployed, learned, discussed and adapted to suit an ever increasing number of uses for which it had never really been thought of being suited for. The explosive growth of Perl has lasting effects to this day. You need Perl to compile the Linux kernel, for example. Eventually, as a way to address some of the shortcomings of the CGI model, we got the Apache mod_perl webserver module. Now, instead of your webserver opening an external cgi program to generate the requested page, which might have to fire up it's own interpreter if it was a script, the interpreter was already there in memory, living in the webserver process. We geeks repeated this with mod_php and the wsgi python idiom. At this point there were truly interactive sites. This era saw the birth of the phpbb forum, Wordpress blog engine and such stalwarts as BugZilla, all of which survive to this day.
Microsoft of course had their own server side scripting language that they heavily shilled during this era, but only corporate shills who were heavily invested in the Microsoft ecosystem paid Asp any mind. Everyone else pretty much ignored it and it eventually just went away completely. I doubt anyone actually liked Asp or thought much of the MS server stack, including those who were forced by their corporate bosses to use it.
The internet of this era was very interactive, and yet all of the content generation was happening on the server. That is the main difference between the old internet and what we have today. While Microsoft basically succeeded in killing Netscape's hopes of making their suite a commercial success, Netscape reacted in a way that nobody expected (especially Microsoft) and gifted their codebase to the public, creating the Mozilla foundation to manage the code using the newly forged MPL license. From this early Mozilla code we got not just the Mozilla suite (the successor to the original Netscape suite) but also the Firefox browser, Thunderbird email client and for a decade or so a lot of other tools as well. There was a proliferation of independent web browsers, with widely differing rendering engines. Some of these browsers simply embedded the Netscape code and used Gecko (the Mozilla html rendering engine) under the hood, wrapping it in their own interface. Opera had their own proprietary codebase. Both Gnome and KDE had their own html rendering engines, gtkhtml and khtml. Gnome had not one but two official browsers, Galeon and Epiphany, both of which used whatever version of the Mozilla code you had on your system. Independent small projects such as Dillo were for many people completely adequate for all of their daily needs.
This proliferation of smaller web browser projects was possible because what the browser was actually handling was basically just html and some style elements. By this point Javascript had made it's entrance, but it's use was much more restrained than what we have today, and sites were expected to work with or without Javascript being available, providing fallbacks if the "advanced" features a developer insisted on using weren't implemented in your particular browser. Now, I'm not going to say that everything was rosy all of the time. We had proprietary garbage like Macromedia Flash and RealPlayer to contend with, along with Java applets (which never really took off), and there were lazy asshole devs who popped up a nag box at you when you dared to visit their site with anything other than Internet Explorer. But in a world with actual choice, where Firefox had significant market share even on Windows, and where it wasn't a given the Javascript was even available, most sites had little choice but to try to play at least a little bit nice. You might get that nag box that warned you that this site is best viewe in IE, but if you changed your user-agent string it fucked right off and the page likely worked perfectly fine in whatever browser you were using after all.
Web 2.0 and the corporate takeover of the Web
It seems odd to voice this now, but there was a fairly long period in which Google and Facebook were clearly dominating the Web and yet nobody knew how either was going to make any money. Seriously, you couldn't throw a stone without hitting two tech journalists writing articles praising their sucesses while simultaneously asking how a free website could possibly turn into a successful commercial venture, no matter how many users it had accumulated. How quaint.
Having lived through the Web 2.0 "movement", my memory is of oft repeated bullshit buzzwords that nobody actually understood, particularly those uttering them. In other words, signs of things to come. Well, basically every major trend in tech since then. Particularly the dubious, shake-weighty kinds of quasi-scams like cryptocurrencies and chatbots that we're plagued with today. Same assholes. I mean that literally, the same assholes pivoted from talking about Web 2.0 to talking about blockchains to shilling nft's to attemting to shoehorn llm's into any and every possible corner of society that is within spitting distance of a processor. Those assholes. The assholes who missed the first dotcom wave and were damned well not going to be left behind next time.
A number of things have fallen into place in the intervening years that have helped feed these jerks the attention, money, and ego stroking that they crave. Computing devices, in the form of smartphones, became ubiquitous. This put high powered computing devices into the hands of even the most tech-illiterate among us and in so doing gave companies a perfect excuse for treating those devices as little more than appliances, clearly marked "No User Servicable Parts Inside". The economy went truly global, while regulation and anti-trust concepts were thrown out the window. The middle class disappeared from most of the developed world, and human beings were being referred to as "consumers" in an ever more blatant push to depersonalize and turn them into just another resource to be exploited. That was the missing piece. How were Google and Facebook going to become profitable businesses without charging their users? By selling their users of course. The user was no longer the customer, but was instead the product.
Once this business model, that of aquiring a huge mass of users and then treating those users as your product, became entrenched and shown to be massively profitable, several other things became almost inevitable. If you have a huge userbase and you have control over the most massively deployed platform in history, and you are now making unprecedented sums of cash selling your users as the product, then your users well being is definitely not among your motivations. If the government obviously doesn't plan to stop corporations from anti-competitive behavior, then why not leverage what you have to kill any meaningful competition.
Google wasn't even subtle in their behavior after the greed took over. It took all of two seconds to pivot from "Don't be Evil" to "click here to upgrade your browser" links on what had become the de-facto front page of the internet for most people. Those links of course installed Chrome.
There was a little annoying fly in the ointment. Firefox was at the start of this era massively popular and committed to being honest and doing right by their users. But they were small and poor. Mozilla the corporation turned out to be pretty easy to get hooked on the ad money coming from their new corporate benefactor, ensuring that they would be just a little less likely to push hard when Google inevitably began enforcing their will ever more forcefully over the internet as a whole.
Even Microsoft, once the poster boy for the cigar chomping capitalist of the tech world, found themselves unable to truly compete with the juggernaut that was Google. The year of the Linux desktop never happened, and Microsoft won. Except that what they won was domination over the desktop computer market, a slowly dying corpse, with no foothold into the new order. Google were giving Chrome away for free, and users were only firing up Internet Explorer as that thing that you used once and only to download Chrome. So they caved and just made their new browser a wrapper around Chrome. Opera also caved. Everyone caved in their own way except for Apple.
Apple, and the strange contradiction of WebKit
WebKit is a strange tale. The browser engine that most people only know of in relation to the Apple browser Safari was forked from Khtml and Kjs (remember me saying KDE had their own html rendering engine?) in 2001. The project was open sourced in 2005. Linux nerds quickly ported it and wrapped it for use in both Qt and Gtk+, and it is now the rendering engine behind Gnome's Epiphany browser. At the time when it was open sourced, WebKit was the first and only browser engine to have passed the entirety of the w3c's acid 2 test suite. It was viewed as the future of the web. The next few years saw an explosion of WebKit based open source browsers, and things were looking pretty good.
Hell, Apple even managed to kill off Macromedia Flash once and for all by refusing to allow it to run on the iPhone. Everyone thanked them profusely for that. For a short time anyway, and now it's all but forgotten.
So it was no surprise when Google chose WebKit to be the basis for the Chrome browser. It was even less surprising when they eventually forked it and stopped syncing anything with WebKit, and started using the combination of their outsized reach and the tech stack which they didn't write from scratch to try to steer the w3c to accept whatever Google said should be the direction that Web standards should go.
Apple still famously refuses to allow any other browser engine on their machines besides WebKit. This pisses off a lot of open source zealots. In principle I don't like it either, but I am going to show my pragmatic side and point out why this is a good thing at this point. By refusing to allow Chrome on Apple devices, they have effectively become the only platform that Google doesn't dominate. If not for this policy, there would be a near complete monoculture. It's a strange contradiction where Apple, by being bad guys, are holding the worse bad guys at bay.
The Web is now an operating system
Along the way from Web-2.0 to the present a few other pieces started coming together that in combination have proven to be quite effective coffin nails on freedom and sanity. We saw the "birth" of cloud computing. It's in quotes because it wasn't actually a new idea, just a new motivation. Back in the early days of computing we had massive time sharing on big Unix mainframes due to how expensive hardware was. Now we have massive time sharing because corporations have somehow convinced everyone that the cloud is easier, cheaper and more reliable. They even coined the laughable term serverless to abstract away the idea that you were running your stuff on someone else's server. But that wasn't the end of it. Oh heck no, there's way more salt for that wound. We mostly just moved the data, and access to it, into the cloud. Thanks to WebApps these corporate asshats can serve you back your own data plus a big blob of Javascript and not even have to run the application on their CPU. That's right, the code is mostly running locally. So why put any of it into the cloud to begin with? What have we gained?
What today's internet has morphed into is a perpetual rent extraction machine, based on the con of the universal app player that is the modern browser. You either send your data to the cloud and rent access to it and the software that you still have to run on your own CPU, or you rent access to content and have it served up to you in much the same way. It's not like the mainframe/terminal situation of old, where you needed the processing power of the mainframe because your terminal didn't have the capability. No, we've basically just been conned into storing the data and applications in the damn cloud, and then fetching it and running it locally anyway. This is downright laughable when you consider how cheap and good storage is these days. There is no technical or financial benefit to the consumer to store their shit online that couldn't be achieved in a more efficient and secure way via other means.
And the browser itself? Chromium currently consists of @35 million lines of code. The FreeBSD operating system consists of a little under 9 million lines of code. Linux is about 26.8 million lines of C as of 6.7. So Chromium is already larger than either of those operating systems. But the code size is only part of the story. It is that large because at some point we decided that a web browser must be capable of running any application that a programmer could write. But wait, isn't that the job of the operating system? Not anymore. Your browser is now a fully featured common platform that software developers can target when writing applications. It's a virtual machine. It basically fulfilled the promise of Java and other such projects, and it now doesn't matter what operating system you are running, because you just load the application in the VM. But this, again, is a con. It's not a con in that it doesn't work. It's a technological marvel. But it's such a technological marvel that nobody can understand it fully, and nobody can recreate it from scratch. The main con is the idea that it was ever necessary for a web browser to become this mostrosity in the first place.
No, it was entirely unneccessary for the modern Web Browser to ever have been anything beyond a document viewer. Storage is cheap, and we could store all of our data on our own machines far cheaper than storing it in the cloud. CPU is cheap, and since we're running the code locally anyway we might as well be doing it in an efficient, compiled language using the native OS libaries. If we needed our data to be available anywhere, all we have to do is make one computer in our homes reachable over the network (I know, security, but I trust myself more than the average cloud vendor anyway, soo...). It was never necessary, and the convenience basically amounted to "I can't be bothered to read documentation, so I'll pay someone to do it for me". Ok, that's fine, but why don't we see businesses formed around setting up home or on-prem servers? Same convenience level. Better, actually, because when something breaks or needs upgraded it's physically there, you own it and can do with it what you want, or pay someone else to do so.
The only value that this model of computing creates is not value for the customer. It's value for the big corporate entities that control it and rent it to us. The common myths of convenience all fall apart on inspection. Streaming was supposed to give us cheaper and better access to entertainment. In today's balkanized world of streaming services you can start watching a show today only to have the service you chose yank it from the catalog next week. We've all had it happen. It's the same with books and music. I'd rather slowly accumulate a big library of media that I actually own over a period of years and know that it is mine. My university gives us access to actual virtual machines in the browser so that Computer Science students can access applications like MySql and Eclipse without having to install them. Why? Why the fuck do they think it's a good idea to unleash Computer Science graduates into the wild who haven't even learned how to install the required software onto their machines? That's a terrible idea. They're missing vital skills already. How about something like a Ring camera? Seriously, they could easily design it to talk to your router and open a port, and update the app on your phone with the IP address every time you were at home. They don't have to ship the footage off to the company servers. The most invasive it should ever have to be would be to store your IP in a registry, linked to a UUID so that the app on your phone could figure out how to reach your home network without much user intervention. We could program this way by default. We just don't, because we've bought into the con.
What, then, should the web be?
The web should be the world's largest interconnected library. Full stop.
Does that mean that applications shouldn't exist for other purposes than interact over TCP using DNS and the infrastructure that makes up the internet? No. Chat clients have existed since the early days of the internet, using their own protocols. Email is a thing. A mapping application is great to have on your phone. All of these things can and should exist. Just separately from a Web Browser. Why do we think we need a WebView to display a map and route to a destination? Because we think we do. We don't. SVG mapped onto a surface would be fine. Do we actually need social media? If the answer is yes, all right, do we need it in the browser? Nope. Everyone uses apps on their phone. Those apps mostly use a WebView now, but they don't actually have to. Any GUI toolkit should work for those sorts of things.
This idea that we have one master program to display anything and everything coming over the network is kind of stupid when you step back and look. We're at the point now where we embed an entire copy of the browser into multiple applications on every laptop, desktop and phone. I know I said storage is cheap, but memory isn't, or at least not at the scale we seem intent on using it. Do you need a 35 million LOC behemoth to display a map and a route? Do you need it to run a word processor? A text editor? To display a remote desktop? The answer is of course none of the above. All of these things are better off as separate, dedicated, locally running programs.
How do we get back?
That's a hard one. Split up the monopolies has to be part of the plan, and not just to reclaim the Web but for the good of all society.
Here's what's funny about the question. The old ways of doing things, where you had static HTML pages sitting on a server, still work. There's an awful lot of personal sites that still work that way. There are valid technical reasons why you might want to separate content out from rendering though, such as a massively scaled site like Wikipedia. No real problem, WikiMedia software follows the traditional paradigm of templates filled in with information retrieved from a database. What the web browser actually gets is mostly HTML and CSS. Any Javascript could be fairly easily eliminated without compromising much, if any, functionality.
One of the biggest parts of this sort of move would have to be educational. And I'm not talking about educating the public at large, but the average Web programmer. Tell them that they're holding the thing wrong, and show them how it should be done. Once they see how much extra work they've been duped into doing they would likely come along quite willingly.
Tags for this post: Web Browsers Standards