The Malware You Installed, Part 1

Originally, I intended to make just a single post about my experience with Mozilla Firefox. However, after doing more digging into the subject, I've decided it would be better to release a series of posts detailing different aspects of the modern web. This first post is a rough overview on the history of modern engines; the next will be a closer look at Firefox itself, and the glaring flaws which warrant its reclassification as malware.

In the present day, only a handful of browser engines still exist. Although there's many, many different browsers, like Microsoft Edge, Brave, Opera, and various others, almost all of them use Google's browser engine, developed for Google Chrome.

In 1998, KHTML came into existence. It was a fork of an earlier engine named "khtmlw", or "KDE HTML Widget" (although in 1999 KHTML was almost completely rewritten). KHTML is the ancestor of almost all modern browser engines. The original khtmlw project only had limited HTML support, but KHTML apired to implement full HTML support, in addition to CSS and JavaScript. But, of course, as the web grew more complicated, and other engines branched out from KHTML, development slowed down, and in 2016, development stopped entirely.

As mentioned though, KHTML is the ancestor of most modern engines. In 2002, Apple forked KHTML for use in their Safari web browser, naming their new engine "WebKit". At first there was some attempt to exchange code between KHTML and WebKit, however the KHTML developers eventually distanced themselves from Apple, complaining that Apple submitted their changes in large, poorly documented patches, and depanded that developers sign non-disclosure agreements before working with their code. Following some negative publicity however, Apple eventually released WebKit under an open source license, as well as reverting many of their OSX-specific changes, allowing the engine to be used on other platforms. WebKit was hugely influential, with many, many different browsers being written around it, and it's one of the three engines which still exist today. Various wrappers around WebKit are also available, such as WebKitGTK, and QtWebKit (which is now deprecated).

In 2008, Google took their first venture in what was to become one of the most egregious monopolies in the software industry. Their new "Google Chrome" browser used Apple's WebKit as a base. As they continued to implement new features, Google Chrome's copy of WebKit accumulated heavy modifications from upstream, and was eventually formally forked under the new name, "Blink" (although Google Chrome for iOS still uses WebKit, as is required by the iOS platform). Various components of WebKit were replaced entirely, such as the JavaScript engine being replaced with Google's V8 JavaScript engine, making modern day Blink barely comparable to modern day WebKit. Blink is one of the three engines which still exist today. Various wrappers around Blink are also available, such as Electron, and QtWebEngine (which superseded QtWebKit in 2013.

Let's take a short detour to talk about Internet Explorer, a browser that had a monopoly that would make Google blush. Internet Explorer began in 1994 when Microsoft adapted some code from the Spyglass Mosaic browser, which was based on NCSA Mosaic. After some lawsuits and trademark infringements, Microsoft made it to Internet Explorer 2, which boasted support for the Macintosh. In later versions they would go on to add support for various other platforms, such as Solaris and OSX, and with the release of Internet Explorer 4, they formalized their web engine under the name MSHTML.

Of course, Internet Explorer's legacy was not to last forever. In 2015, Microsoft Edge made its debut, using the MSHTML browser and marking the beginning of the end for Internet Explorer. It wasn't just Internet Explorer on the chopping block though, as in 2020, Edge switched to Google's Blink web engine, and MSHTML was no more. It's perhaps the digital equivalent of convergent evolution; MSHTML was the only modern web engine whose roots went all the way back to NCSA Mosaic, but it too succumbed to Google's monopoly.

Returning from our detour, it's clear that KHTML has deep roots in the history of web modern web engines. But, there's one more engine we haven't talked about yet. Our story begins with Mosaic Netscape, a browser which was promptly renamed to Netscape Navigator after threat of legal action from NCSA Mosaic (not sure what they though would happen there). Netscape Navigator's populator immediately exploded, and remained nearly unchallenged until Internet Explorer eventually took its throne. Since development began, Netscape had developed a whole suite of software using their engine, which became known as Netscape Communicator, which included various programs such as Netscape Navigator, Netscape Mail, Netscape Address Book, and Netscape Composer. In 1998 however, the Netscape Communications Corporation was bought by AOL, and development was quickly discontinued.

There was an ace up their sleeve, though. Earlier in 1998, prior to being bought by AOL, Netscape had announced that their software would be developed as open source software under a new organization. This organization went by the name of Mozilla, and later that year, they began developing a new web engine, named "Gecko", which would be released as the Mozilla web browser. Later versions of Netscape were based on the Mozilla browser, but mostly failed due to competition from Mozilla itself, and in 2003, AOL shut down Netscape for good.

Mozilla still persisted, though. The original Mozilla browser was adapted into a new browser, which after several name changes due to legal issues, was eventually released in 2002 under the name it's known by today: Mozilla Firefox. Firefox introduced a number of new features such as integrated pop-up blockers and extensions, and quickly began to compete with Internet Explorer for dominance. Firefox continues to use the Gecko web engine, which is one of the three engines which still exist today.

And so, we've come to the end of our journey. Many browsers have come and gone, but in the present day, we are left with only three competitors: Google's Blink, Apple's WebKit, and Mozilla's Gecko. Unfortunately, Blink has a disproportionate market share, and is threatening to extinguish the remaining WebKit and Gecko.

In the interests of preventing stagnation and encouraging good software development, this is very, very bad. Modern web engines are threatened by the constant addition of new, increasingly complex features, which has transformed web browsers from simple document readers to entire operating systems, and introduced an endless number of performance and security issues along the way. Additionally, the obscene complexity of modern web engines has made it effectively impossible to develop a new engine, meaning that we are stuck with the trio that have survived thus far. Surely it's not a good idea to bring that number down to one.