explicitClick to confirm you are 18+

Internet Browsers and Web Rendering Engines

Mark EdworthyJul 8, 2018, 7:04:37 PM

An Internet browser is a software application that provides access for users to locate, view and interact with web pages. Internet browsers are used primarily for displaying content that is created using languages such as Hypertext Markup Language (HTML), Hypertext Preprocessor (a recursive acronym for PHP) and Active Server Pages (ASP).

Internet browsers date back to the late 1980s when Tim Berners-Lee developed ideas that led to the creation of the World Wide Web (WWW), these ideas consisted of a series of pages that would be linked together with pointers otherwise known as hyperlinks.

In 1993, a browser that was known as NCSA Mosaic was developed. NCSA Mosaic soon gained widespread usage due to the graphical interface, this browser was provided for Microsoft Windows, Apple Mac and UNIX based operating systems, this development allowed users to view Internet pages easily.

Within the following year, various developers of NCSA Mosaic (including Marc Andreessen and Jamie Zawinski) developed the Netscape browser. The first version of Netscape was available from October 1994 and was developed under the codename “Mozilla”. By version 2.0, Netscape (released in October 1995) allowed for the usage of tables, frames, Java applets and JavaScript. This version introduced the majority of features that all Internet browsers still use today. Later version improved reliability, stability and introduced other features. AOL (which acquired the Netscape Communications Corporation in 1998), decided to release their browser source code under an open source license in 1998, which allowed for the start of the Mozilla project and would eventually be used to produce the Mozilla Firefox browser.

Not wanting to be left out of providing an alternative Internet browser, Microsoft released their Internet Explorer in August 1995 and implemented the browser into their Windows 95 operating system. Internet Explorer version 1.0 did not provide any new functionality that was missing from the existing Netscape project but later versions of Internet Explorer quickly caught up with the existing version of Netscape. Internet Explorer version 3.0 included features that were very similar to those introduced with Netscape version 2.0. Version 3.0 of Microsoft Internet Explorer also introduced the first useful implementation of cascading style sheets (CSS) which allowed for greater control over displaying Internet page content.

Since the release of NCSA Mosaic, several other Internet browsers have been developed and publicly released, with Opera (first released in 1996) and Chromium (version 1.0 being released in late 2008) being two of the most well known alternative browsers. Within the last couple of years, we have seen a plethora of new browsers emerging on to the market. Whilst some of these new Internet browsers do come with interesting new features, most of these new browsers are based upon existing projects.

Most of these new Internet browsers are released with an open source license agreement and are based on code provided by either existing Chromium or Mozilla Firefox code (note that some browsers such as Opera and Google Chrome uses existing code from the aforementioned project but due to having implemented proprietary code, these browsers shouldn’t be considered as open source based projects). As explored within my previous article about Open Source Forks and Derivatives (URL provided below), open source license agreements allows for developers to produce new projects whilst reusing code from existing developments.

Having Internet browsers share code allows for rendering engines to be used between projects. The web rendering engine allows for the parsing of code to be displayed as Internet page content. Without a rendering engine, the resulting view of a site would only consist of the raw code and would not display any images, multimedia content or any resulting functionality.

Generally speaking, an Internet page is based upon three core components, these elements include:

1. code that represents the structure of a page layout

2. code that provides style: the visual appearance of the structure

3. code that acts as a script of actions for the browser to take (ie. reacting to user actions and modifying the structure and style beyond what was initially intended for the page)

Not only do modern rendering engines allow for the transcribing of code to provide resulting user friendly displaying of Internet pages but most engines can also display other content (ie. PDF content) and with the usage of plug-ins, can display other content that were developed using third party frameworks (such as content that was developed using Adobe’s Flash framework).

There are several common rendering engines that are available, these include:

This open source rendering engine is used within various open source browser, these browsers includes K-Meleon and (up until recently) Mozilla Firefox, as well as various derivatives of the Firefox browser (ie. Waterfox, Tor Browser and GNU IceCat). Whilst Gecko is an open source project, there are a couple of closed source projects that incorporates this rendering engine (including Comodo IceDragon, Lunascape Orion and Avant Browser. Note that both Lunascape Orion and Avant Browser incorporates both Gecko, WebKit and Trident rendering engines into a single package).

Gecko development began at the Netscape Communications Corporation in 1997 after they acquired DigitalStyle, after AOL acquisitions of Netscape Communications in 1998, Gecko development continued and in 2003, AOL ended the employment contracts of the Gecko developers which resulted in the formation of the Mozilla Foundation.

Since then the Mozilla Corporation was established to coordinate the further development of the Gecko rendering engine and is supported by the Mozilla Foundation, which is a non-profit US 501(c)(3) organisation.

Quantum is a fairly new open source rendering engine that has been developed by Mozilla. This rendering engine is based on the Gecko engine but also includes various improvement and new features.

The Quantum rendering engine largely incorporates code from the experimental Servo project (another open source based rendering engine which is also being developed by the Mozilla community and also is supported by Samsung) but due to the complexity of Servo, it has been suggested by several developers that Servo will not be available as an independent fully developed rendering engine for several years to come, therefore Quantum is intended as a bridged development between the Gecko and Servo projects.

Quantum has been implemented as the rendering engine for Mozilla Firefox from version 57.0 (released in November 2017).

Goanna was introduced as an open source rendering engine in 2016. Moonchild productions (an organisation that is the collective name for all projects that are developed and provided by M.C. Straver) developed the Gonna rendering engine as a derivative of Mozilla’s Gecko engine.

The Goanna rendering engine was developed due to M.C. Straver wanting to provide a new engine for the open source licensed Pale Moon browser. Goanna has also been used as the rendering engine for the Basilisk browser and FossaMail e-mail client (both of these projects have been release as open source products).

Blink is an open source rendering engine that has been developed as part of the Chromium project, this rendering engine has been developed with support from Google (which is the largest contributor to this project), Opera Software, Adobe, Samsung, Intel, Nvidia and various other contributors.

This rendering engine was first released with Chromium version 28.0.1463.0 (2013) and is available as an open source project. Blink is a derivative project that is based upon the WebKit rendering engine and since the release of Android version 4.4 (2013), the WebView component (Android’s internal web rendering engine) has been using Blink instead of the WebKit engine.

The Blink rendering engine is used within a number of open source based Internet browsers (including Chromium, Brave, Liri and Iridium Browser), as well as various proprietary browsers (which includes Opera, Google Chrome, Comodo Dragon, SRWare Iron and Yandex Browser).

This rendering engine has been the basis of many Internet browser and has been used within various proprietary, closed source projects (including Apple Safari, OmniWeb, Runecats Roccat Browser and iCab), as well as several open source projects (Midori, Dooble, Uzbi and Epiphany).

WebKit is a forked derivative of the KHTML rendering engine and was introduced by Apple in 2002. However, when Apple announced the development for their Safari Internet browser at the Macworld Expo (Macworld conference and exposition) in 2003, WebKit was considered to be a closed source, proprietary rendering engine. At this time, Apple stated that due to changes within Mac OS X specific features (that are absent in the KHTML source code), WebKit needed a different development approach to that being provided by the open source community.

In 2005, Dave Hyatt (Apple Safari developer) stated that Apple was going to provide the WebKit rendering engine as an open source project. Apple would provide the revision control logs and the bug / issue tracker to public scrutiny, this was formally announced at the following Apple Worldwide Developers Conference by Bertrand Serlet (Senior Vice President of Software Engineering of Apple). By the beginning of 2006, WebKit was available with the complete source code as an open source project.

2010 saw the introduction of WebKit2, which is a derivative of the original WebKit rendering engine. The goal of WebKit2 was to abstract the components that provided the web rendering engine from the surrounding interface or application shell and create a situation which would allow Internet page content to become a separate process from the application UI. This idea was intended to provide a more straightforward process for rendering Internet based content.

WebKit has also been used as the rendering engine for the Chromium browser project until April 2013 and has been implemented by LG, Nokia, Samsung and other cell phone manufacturers for use within their own mobile devices. WebKit was also used as the rendering engine for Android up until the release of Android version 4.4. WebKit has also been implemented within Sony’s PlayStation 3 system software, Adobe Integrated Runtime (AIR), Adobe Creative Suite (version CS5), Valves Steam client and various other projects (both proprietary and other open source based products).

When considering open source projects, many people may think of community supported projects that may have had very very little original corporate backing, the KHTML rendering engine started life as one of these projects. This rendering engine began development in 1998 by Torben Weis and Martin Jones. KHTML was introduced as part of the open source based K Desktop Environment in 2000 (KDE version 2.0) and was incorporated into Konqueror (which was KDE’s default Internet browser and file management tool).

As stated above, the open source KHTML project was adopted by Apple in 2002 for use within the Safari Internet browser and Apple introduced the project as WebKit, also KHTML has been used within other separate projects and was implemented as the rendering engine for the Abrowse Internet browser, which was introduced with the AtheOS operating system (in 2002 the source code for AtheOS was used as the basis of the Syllable operating system. Note that Abrowser, Syllable and AtheOS have had no new publicly available releases for several years, and these projects are now considered as being discontinued).

Whilst the Konqueror project is still being regularly maintained by the open source community and the development teams, KHTML has not been maintained or updated since 2014 (version 4.13.2). The KHTML rendering engine is now considered as being a discontinued projects by most Internet browsers and online services.

Presto is the rendering engine that was implemented within Opera (both as part of the desktop, mobile and mini browser variants) and was developed by Opera Software to replace the Elektra engine, Elektra was used as the rendering engine for Opera between version 4.0 (released in 2000) and version 7.0 (released in early 2003).

Whilst Presto is a closed source, proprietary engine, Presto was also licensed and implemented within other projects, including as the engine for Nintendo DS and DSi’s browser, Nintendo’s Wii Internet Channel browser, the Nokia 770 browser and Sony’s Mylo COM-1 browser.

Presto was also used as part of Macromedia Dreamweaver (version MX to CS3), Adobe Creative suite (versions 2 and 3) and Virtual Mechanics SiteSpinner Pro.

As of version 15 of Opera (released in 2013), Presto was replaced with the Blink rendering engine.

Microsoft introduce the EdgeHTML proprietary, closed source rendering engine as part of Microsoft Internet Explorer version 11 (as part of Microsoft Windows Technical Preview build 9879 in 2014) and replaced the previously used Trident engine.

Microsoft originally planned to use EdgeHTML alongside the Trident engine but later decided to only use EdgeHTML within their Edge browser product. With the introduction of the Edge browser, Microsoft ceased support for their ActiveX project. EdgeHTML also had significant performance improvements when compared to the former Trident engine and improved the speed of rendering various page elements, most notably the speed of Javascript code.

EdgeHTML was officially released in July 2015 as part of Microsoft Windows 10 operating system and the corresponding Microsoft Edge browser (version 20.10240).

Released with the introduction of Microsoft Internet Explorer version 4.0 (1997), the closed-source, proprietary Trident rendering engine was shipped with Microsoft Windows 95 OEM service release 2.5 and then was integrated as part of the framework of Microsoft Windows 98.

Trident continued to be the rendering engine until the discontinuation of Microsoft Internet Explorer and the beginning of Microsoft Edge implementation within Microsoft Windows 10.

Tasman is a closed-source, proprietary rendering engine that was developed by Microsoft for inclusion within the Apple Macintosh edition of Internet Explorer version 5 (released in 2000) and was used as the rendering engine for Microsoft's Network service (MSN) for Apple Mac OS X browser (2003), the Microsoft Entourage e-mail client that was used within Microsoft Office for Apple Mac (2004 to 2011) and also has been used within several television set-top box projects.

Tasman was discontinued in 2011 when Microsoft Entourage was replaced with Microsoft Outlook for Apple Mac, This variant of Microsoft Outlook uses the Apple Mac OS implementation of the WebKit engine (as provided by Apple Safari).

The web rendering engine is the most important component of any Internet browser and allows for the rendering of page content (including HTML, PHP, JavaScript, Cascading Style Sheets and other web development languages) to be viewed by the end user.

Various engines may start rendering content before all of a web page resources are downloaded and viewable by the end user, this can result in changes in the visual representation of the page as more data is received. These changes could also be represented by an image being gradually filled or typography details being changed during the download and rendering process.

According to NetMarketShare (a marketing statistics organisation), Blink is currently the most popular engine that is used by end users, followed up with Trident, WebKit (which also includes Quantum) and the EdgeHTML rendering engine respectively.

References & Other Resources:
* Wikipedia: Web Browser Comparison
* Wikipedia: Web Browser Timeline
* NetMarketShare Browser Usage Statistics
* Technology and Open Source Blog