← All Posts

When the World Wide Web goes on strike, how do you fight back?

Posted by

  critique tech web

6 min read | 1745 words | 184 views | 0 comments

As some people may know, my primary browser of choice is SRWare Iron 70. Iron is a Chromium-based browser that's very similar to Chrome, without the phoning home to Google (although some people allege there are other concerns). How much better than Chrome it is exactly is up for debate, but it essentially looks and feels exactly like Chrome. I'll use both Chromium and Chrome throughout this post to reflect the fact that Chrome is just a specific Chromium-based browser, and I haven't been a regular Chrome user in years now, so using Chromium is more encompassing.

I don't use the latest version of Iron, which keeps step with Chromium, for better or for worse — I use version 70 - yes, this corresponds to Chromium 70, which dates back to October 2018. That means my primary browser is more than three years old! By web standards, that's admittedly pretty ancient (but seriously, browser cops, go get a life). In fact, the browser worked pretty well for the last years until it didn't. More on that in a second.

Why use Chromium 70? This is infamously the last version of Chromium that allows using the old UI interface (you know, remember when Chrome had rounded trapezoidial tabs? Yeah, that's what I'm talking about.) At the time, when Chrome 71 was released, some people were not happy about this change. Actually, that's a bit of an understatement. People were furious. Not just a bit miffed off, but many users were so irritated they swore they would drop Chrome for good. Complaints and pleading to restore the option abounded on the Chromium bug tracker.

Did Google listen? No. They don't have to. They're Google. They don't care.

I suspect in the three years since, many of these people who were so worked about the UI change may have eventually gotten used to it - perhaps forgotten about it, or at least grit their teeth and grudgingly upgraded anyways. Usually, these things temper with time. I was never one of these users. I stopped upgrading after 70; in fact, an advantage of using Iron is that it doesn't have a built-in auto-updater, so it'll never force update on you. If you're intending to stay with a particular version of a browser version indefinitely, that's an important capability to have.

Whether or not it's prudent to use a forty-month old browser in 2022 is besides the point of this post. The reality, however, is that not everyone wants the latest soup that Google or Mozilla is serving up. While browsers are less of sticking point than operating systems, just like many people have decided to not downgrade from Windows 7 to Windows 10 (or worse, Windows 11), some people have no intention of moving from Chromium 70 to a newer version. Whether the newer or older version is "better" is not objective — it's a normative judgment that's in the eyes of the user. Fundamentally, InterLinked has always been about user choice, and operating system choice and browser choice are no exception to these. That's why we really hate it when companies like Google and Mozilla try to shove the latest bleeding-edge or vendor-specific JavaScript down everyone's throats. Inevitably, browsers that follow the standards then "stop working" because some people have decided that obsolescence is cooler than compatibility. The rest of us are not impressed.

Security concerns aside, if it ain't broke, why upgrade (or downgrade), right? Amazingly, Iron 70 worked great, more or less, for three years, with no issues. It wasn't until Q4 of 2021 that the issues started cropping up. The first hint was when a proprietary PDF reader stopped working. Next, the Panopto video player stopped working. Then, site after site, things began to break, more and more. Weeks later, most of StackOverflow.com stopped working — I could no longer comment or vote on anything; the site was about as useful as an archived scrape from the Internet Archive's Wayback Machine - the content was there, but it was frozen, not dynamically usable. I almost didn't believe what was happening. The World Wide Web was literally falling apart, site by site. I wasn't alone in coming to this unpleasant realization. Retrocomputers and computer enthusiasts on the MSFN Forums were all finding that their browsers, many of them UXP-based, forked off old Mozilla code, were encountering problems that were entirely novel. It almost seemed as if this was a coordinated effort from "up top" to obsolesce anything that wasn't the latest Chrome or Firefox. Of course, that's absurd, but that was almost the practical effect. In the past five to ten years, the tech landscape has changed radically. As Dorothy would say, we're not in Kansas anymore. The original pioneering open nature of the web is gone, replaced by bloated websites, sites full of useless JavaScript that nobody wants, a slow and bloated web that is more inaccessible today than it was twenty years ago, and, in a reversal from promising trends in the 2000s, a trend away from open standards and browser compatibility to the ruling duopoly of Google Chrome and Mozilla Firefox.

At the end of the day, we can lament this changing philosophy all we want (and do), but of course, that's not going to revive all these browsers again. So what to do?

The key insight is that these browsers all used to work just fine, more or less. Iron worked just fine for three years after its release. It didn't break because the Iron source code changed - I'm still using the same browser I was in 2018. No, it changed because of the stupid JavaScript that suddenly was appearing everywhere at once — and thanks to JavaScript libraries used by many sites, a result of today's "library culture" where webmasters don't really have a hold on their own sites anymore (which leads to even more web bloat), a little incompatible JavaScript here and a little incompatible JavaScript there can really bring the web crashing down in significant ways.

So what do you do when sites decide to use JavaScript that breaks a bunch of browsers? Complaining is a start this kind of nonsense is the antithesis of what the web was supposed to be about. This isn't a case of "progress" and new web capabilities. This is a case of rewriting existing JavaScript that works to make it less compatible with "alternative" browsers, and accomplishing nothing else in the process - no new features or capabilities to speak of. What reason could possibly exist for doing this? I'm sure there's a more plausible explanation than bored developers rewriting code for the sake of rewriting it, but at present, it's not clear what it is.

So yes, complaining is a start, because this is fundamentally not what the web is about. But complaining, in this case, will fall on deaf ears, and do nothing to fix the problem. A better solution: polyfills! Polyfills are specifically intended to address this kind of technical deficiency. Polyfills are basically JavaScript that implement, in standard highly-compatible vanilla JavaScript, newer JavaScript features that don't exist in older browsers. This allows these new features to be more widely used, since they can be supported on older clients, too, albeit with some kludges. Typically, polyfills are used by web developers of a website to add this functionality so they can do something particular. In this case, however, doing the opposite is what is warranted. Browser users need to polyfill the JavaScript they didn't ask for and don't want, that web developers have decided to use regardless. So, how to do this?

The good news is doing so is not too difficult. As a proof-of-concept, I went ahead and decided to tackle this, starting off with `globalThis`, which stackoverflow.com was complaining was undefined. As it turns out, `globalThis` was only added to Chromium in version 71. Naturally, I had to be using version 70, the last version to *not* support it. It was almost as if Google knew that one day I would need that, and decided to remove the other thing I needed before adding that. Seriously, I wouldn't put it past them that does tend to be the "Google way", doesn't it?

After a bumpy start, and with full credit to Mathias Bynens for the polyfill itself, I managed to create a simple Chrome extension that would, on page load, inject a `globalThis` polyfill into the page, before any of the page JavaScript executed. Lo and behold, stackoverflow.com was fully working again, just as it always had! Turns out, the 12 errors that I had seen in the F12 Developer Console were all caused by that lone `globalThis` error. No more issues at all.

This single polyfill alone didn't fix the entire web for me. I was pleased to find that the PDF previewer that had not been working for months magically came back to life again as well; other things, alas, were still broken - it wasn't just `globalThis`, after all, which broke the web by storm. But this was successful enough of an endeavor to see that, when the web breaks, users have recourse for fighting back. Not all of us are going to take this obsolescence sitting down. Iron 70 may have had a good run, but I'll decide when it's over, thank you very much, not some JavaScript developer who couldn't spell "compatibility" to save his life.

As they say, necessity is the mother of invention. I never intended to develop a Chrome extension, but alas, here it is: ChromeFill is a simple browser extension that is now available for Chromium browsers. Download and use it today: https://github.com/InterLinked1/chromefill/.

It won't be published in the Chrome Web Store — even if I wanted to, I can't, since Manifest V2 extensions are being deprecated this year, and Manifest V3 was only introduced with Chromium 88, so it's entirely useless for making an extension for targeting versions of Chromium significantly older than vesrion 88. This extension is open source, so that anyone can download it and use it in Chrome if desired. I suspect there are relatively few people that will benefit from it, but for anyone else sticking with Chromium 70, it's a little something to boost its compatability — at least for now. Now is a time of rapid change for the web, and I'd be foolish to say this will work forever, but for now, it's just enough to give Iron 70 the fighting chance it needs, maybe enough time for Pale Moon/New Moon to get polyfilled, so I can switch to that instead.

← All Posts


Comments

Log in to leave a comment!