GNOME Web, called Epiphany until 2012 and still known by that code name, is a free and open-source web browser based on the GTK port of Apple's WebKit rendering engine, called WebKitGTK. It is developed by the GNOME project for GNOME on Linux. It is the default and official web browser of GNOME, and part of the GNOME Core Applications. It also runs on BSD and has been ported to Haiku.

GNOME Web is the default web browser on elementary OS, Bodhi Linux version 5 and PureOS GNOME Edition.

History Naming GNOME Web was originally named "Epiphany", but was rebranded in 2012 as part of GNOME 3.4. The name Epiphany is still used internally, as its code name, for development and in the source code. The package remains epiphany-browser in Debian (to avoid a name collision with a video game that is also called "Epiphany") and epiphany in Fedora and Arch Linux.

Development Galeon

Marco Pesenti Gritti, the initiator of Galeon, originally developed Epiphany in 2002 as a fork of Galeon. The fork occurred because of the disagreement between Gritti and the rest of Galeon developers about new features. Gritti regarded Galeon's monolithic design and the number of user-configurable features as factors that were limiting Galeon's maintainability and usability, but the rest of the Galeon developers wanted to add more features.

Around the same time, the GNOME project adopted a set of human interface guidelines, which promoted simplification of user interfaces. As Galeon was oriented towards power users, most developers disapproved. As a result, Gritti created a new browser based on Galeon, with most of the non-critical features removed. He intended Epiphany to comply with the GNOME HIG. As such, Epiphany used the global GNOME theme and other settings from inception.

Gritti explained his motivations:

Galeon continued after the fork, but lost momentum due to the remaining developers' failure to keep up with changes in the Mozilla platform. Galeon development stalled and the developers decided to work on extensions to bring Galeon's advanced features to Epiphany.

On April 2008, Gritti ended his work on Epiphany and a GNOME team led by Xan Lopez, Christian Persch and Jean-François Rameau now direct the project. Gritti died of cancer on May 23, 2015.

Gecko-based The first version of Epiphany was released on December 24, 2002.

Epiphany initially used the Gecko layout engine from the Mozilla project to display web pages. It provided a GNOME graphical user interface for Gecko, instead of Mozilla's cross-platform interface.

The development of Epiphany was mainly focused on usability improvements compared to major browsers at the time. The most notable was the new text entry widget, which was introduced in version 1.8. The new widget supported icons inside the text area and reduced the screen space needed to present information, while improving GNOME integration.

The next major milestone was version 2.14, which was the first to follow GNOME's version numbering. It also featured network awareness using NetworkManager, smart bookmarks improvements, and the option to build with XULRunner.

The latter was critical. Previously, Epiphany could only use an installed Mozilla web browser as a web engine provider. The XULRunner support made it possible to install Epiphany as the only web browser on the system.

WebKit-based

The development process suffered from major problems related to the Gecko backend. Notably, the release cycles of the two projects did not line up efficiently. Additionally, Mozilla increasingly disregarded third-party software that wished to make use of Gecko, until it became viewed as an integrated Firefox component. To address these issues, in July 2007, the Epiphany team added support for WebKit as an alternative rendering engine. On , the team announced that it would remove the ability to build it using Gecko and proceed using only WebKit.

The size of the team and complexity of porting the browser to WebKit caused version 2.22 to be re-released with bugfixes alongside GNOME 2.24, so the releases stagnated until , when it was announced that 2.26 would be the final Gecko-based version.

In September 2009, the transition to WebKit was completed as part of GNOME 2.28.

Version history Developers of GNOME Web maintain a complete and accurate changelog in its official repository that shows complete and detailed changes between all the releases. The following table shows some important changes:

Version Date Notable and important changes 0.4 Initial release. 0.5 Ability to drag bookmarks, smart bookmarks, and topics to the toolbar. Optional "Go" button for URL bar. "Help" support. 0.6 Drag and drop of links to tab bar. Security preferences. User language automatic detection. New history dialog. Default bookmarks toolbar. 0.7 Zoom control for the toolbar. Ability to reload page while bypassing cache (shift+reload). Traditional bookmarks menu. Exit fullscreen button. 0.8 Tooltips. Improved GNOME integration. Fast search for bookmarks and history. Drag and drop of URLs in the bookmarks toolbar. 0.9 Bugfixes only. 1.0 GNOME 2.04 Support for Mozilla 1.6. 1.2 GNOME 2.06 Support for Mozilla 1.7 and 1.8, Lockdown mode. Caret navigation. 1.4 GNOME 2.08 Offline mode. Per-site pop-up blocking. 1.6 GNOME 2.10 Extensions manager. 1.8 GNOME 2.12 Python bindings, Find toolbar, Favicon and SSL icons displayed in location bar. Gecko 1.8 support. Error messages display in content area. Use of the GNOME printing system. 2.14 XULRunner backend supported. Topic suggestions in bookmarks manager. Version numbering synced to GNOME. NetworkManager DBUS interface support. 2.16 History preserved for links opened in new tabs. Spell checking support. Page security info dialogue from Certificates extension. New GTK Printing dialog. Stability improvements. 2.18 Bookmarks online storage. UI for Ad Blocker. 2.20 Migration from Gecko to WebKit. PDF printing. Migration from GnomeVFS to GIO. 2.22 2.24 2.26 2.28 Gecko backends removed. Python extension support removed. WebInspector. 2.30 Broken SSL certificate warning, custom page menus support. 2.32 Bugfixes only. 3.0 Reduced the amount of user interface chrome. Geolocation support. Switched from text zooming to full content zooming. New download manager. Migration to GTK 3 and GNOME 3 technologies. 3.2 Separate font settings. WebKit's page source viewer made default. Web Applications mode introduced. 3.4 Renamed from Epiphany to Web. Major interface overhaul. Performance improvements. Super menu introduced. 3.6 Overview screen and Full Screen mode introduced. 3.8 Support Adobe Flash and other plug-ins using WebKit2. Privacy mode. New Tab button. Removes the ability to disable JavaScript.3.10 New toolbar placement into "Header Bar", the new GNOME titlebar design.3.12 A major update version, including improved performance and user interface enhancements. Implemented a single process for each tab.3.14 A minor update adding support blocking invalid SSL certificates, warning users about mixed content for improved security, adblocker performance improvements and overall small UI improvements and polishing.3.16 UI updated, fixes to improve incognito mode's privacy and discoverability.3.18 UI improvements. Enabled Do Not Track and the ad blocker by default.3.20 UI improvements. Session restore.3.22 UI improvements.3.30 Reader mode, others.3.34 Rewritten and improved ad blocker which uses WebKit's content filtering. Web process sandboxing for improved security. Favorite tabs can be pinned. plug-in support removed.3.36 User interface improvements for small screens. Native support for PDF documents. Improved support for handling dark GTK themes. Native viewing of web page source. Removal of vestigial NPAPI support. Support for Service workers. More secure handling of cookies. Security improvements to better isolate sites from each other in a tab process. 3.38 Intelligent Tracking Prevention added and enabled by default, and option added to turn off websites storing local data.40 New option for Google search suggestions, revamped tabs, and Google Safe Browsing disabled by default. 43 Transition to libsoup 3.0 and WebKit2GTK 4.1. Major rearchitecting of WebExtensions API support. Revamped web application support using a new D-Bus provider. Native PDF handling shifted entirely to the WebKit engine. 44 Major user interface overhaul migrating to GTK 4, libadwaita, and WebKitGTK 6.0. Expanded WebExtensions API support, including special shortcut commands and redesigned browser actions. 47 Introduced form autofill support. Redesigned bookmarks user interface, shifting from a popover to a persistent sidebar. Added a new Privacy Report feature and explicit WebExtensions installation confirmations. 49 Major redesign of the address bar with inline completion. Introduction of a Kiosk mode.

Features

As a component of GNOME Core Applications, it provides full integration with GNOME settings and other components like GNOME Keyring to securely store passwords, following the GNOME Human Interface Guidelines and the GNOME software stack to provide support for features such as Wayland and the latest major GTK versions, multimedia support using GStreamer, small package size (2.6MB) and fast execution/startup time due to using shared components; other features include the reader mode, mouse gestures, smart bookmarks, praised web application integration mechanism, built-in ad blocking, the "Insert Emoji" option in the context menu for quick and easy inserting of Emoji and Miscellaneous Symbols and Pictographs into the text boxes, Google Safe Browsing, supports reading and saving MHTML, an archive format for web pages that combines all the files of web pages into only one single file; and consume fewer system resources than the major cross-platform web browsers.

Web standards support The underlying WebKit browser engine provides support for HTML 4, XHTML, CSS 1 and 2, most of HTML 5 and CSS 3, and a Web Inspector (web development debugging tool).

Encrypted Media Extensions support is not a goal, as the standard does not specify a Content Decryption Module to use, all available modules are proprietary even if licensing is possible, and the system imposes digital rights management that hides what the user's computer is doing to make copying "premium content" difficult. However, Media Source Extensions is supported, as YouTube began to require this technology in November 2018.

Apple, which is the primary corporate backer of WebKit, rejected at least 16 web APIs because they could be used in a fingerprinting attack to help personally identify users and track them, while providing limited or no benefit to the user. As HTML5test checks for most of these APIs, it lowers WebKit's "score" in points (as does lack of DRM support).

Web once supported NPAPI plug-ins, such as Java and Adobe Flash, but support was removed in GNOME 3.34. In the modern web platform, these have fallen out of favor and support has been removed from all major browsers. Flash was deprecated by Adobe in 2017 and reached end-of-life in 2020. Flash had gained infamy throughout the years for usability and stability issues, incessant security vulnerabilities, its proprietary nature, its ability to let sites deploy particularly obnoxious web ads, and Adobe's poor and inconsistent Linux support. Many of these issues were raised by Steve Jobs, then CEO of Apple, in his essay Thoughts on Flash.

GNOME integration

Web reuses GNOME frameworks and settings, including the user interface theme, network settings, and printing. Settings are stored with GSettings and GNOME default applications are used for internet media types handling. The user configures these, centrally, in GNOME's settings app.