| GNOME Web | |
|---|---|
Newest logo of GNOME Web since version 40 | |
GNOME Web 48 | |
| Original author | Marco Pesenti Gritti |
| Developers | The GNOME Project (mostly by Michael Catanzaro and Xan Lopez, both fromIgalia)[1] |
| Initial release | 24 December 2002; 22 years ago (2002-12-24)[2] |
| Stable release(s) | |
| Preview release(s) | |
| Repository | |
| Written in | C (GTK) |
| Engine | WebKitGTK |
| Operating system | Unix-like,Haiku[5] |
| Platform | GNOME |
| Size | 2.6 MB[6] (compiled package forAMD64, without dependencies) |
| Available in | many languages with different translation percentage ofUser Interface and documents[7] |
| Type | Web browser |
| License | GPL-3.0-or-later |
| Website | apps |
GNOME Web, calledEpiphany until 2012 and still known by thatcode name,[8] is afree and open-sourceweb browser based on theGTK port ofApple'sWebKit rendering engine, calledWebKitGTK. It is developed bythe GNOME project forUnix-like systems. It is the default and official web browser ofGNOME, and part of theGNOME Core Applications.
GNOME Web is the default web browser onelementary OS,[9]Bodhi Linux version 5[10][11][12][13] andPureOS GNOME Edition.[14]
GNOME Web was originally named "Epiphany", but was rebranded in 2012 as part of GNOME 3.4.[15] The name Epiphany is still used internally, as its code name,[8] for development and in the source code.[16] The package remainsepiphany-browser inDebian[17] (to avoid a name collision with a video game that is also called "Epiphany") andepiphany inFedora andArch Linux.[18][19]
Marco Pesenti Gritti, the initiator ofGaleon, originally developed Epiphany in 2002 as afork 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.[citation needed]
Around the same time, the GNOME project adopted a set ofhuman interface guidelines, which promoted simplification of user interfaces. As Galeon was oriented towardspower 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.[20][21]
Gritti explained his motivations:
While Mozilla has an excellent rendering engine, its defaultXUL-based interface is considered to be overcrowded and bloated. Furthermore, on slower processors even trivial tasks such as pulling down a menu is less than responsive.
Epiphany aims to utilize the simplest interface possible for a browser. Keep in mind that simple does not necessarily mean less powerful. We believe the commonly used browsers of today are too big, buggy, and bloated. Epiphany addresses simplicity with a small browser designed for the web—not mail, newsgroups, file management, instant messaging or coffee making. TheUnix philosophy is to design small tools that do one thing, and do it well.
[..]
Epiphany's main goal is to be integrated with the gnome desktop. We don't aim to make Epiphany usable outside Gnome. If someone will like to use it anyway, it's just a plus. For example: Making people happy that don't have control center installed is not a good reason to have mime configuration in Epiphany itself.
— Marco Pesenti Gritti[22]
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.[21]
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.[23] Gritti died of cancer on May 23, 2015.[24]
The first version of Epiphany was released on December 24, 2002.[2]
Epiphany initially used theGecko layout engine from theMozilla project to display web pages. It provided a GNOMEgraphical user interface for Gecko, instead of Mozilla's cross-platform interface.[25]
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.[26]
The next major milestone was version 2.14, which was the first to follow GNOME's version numbering. It also featured network awareness usingNetworkManager,smart bookmarks improvements, and the option to build withXULRunner.[citation needed]
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.[27][28]

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.[23] To address these issues, in July 2007, the Epiphany team added support forWebKit as an alternative rendering engine.[29] OnApril 1, 2008, the team announced that it would remove the ability to build it using Gecko and proceed using only WebKit.[23]
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,[30] so the releases stagnated untilJuly 1, 2009, when it was announced that 2.26 would be the final Gecko-based version.[31]
In September 2009, the transition to WebKit was completed as part of GNOME 2.28.[32]
Developers of GNOME Web maintain a complete and accuratechangelog in its official repository that shows complete and detailed changes between all the releases,[33] following table just shows arbitrarily mentioned some notable and important changes:[34][35]
| Version | Date | Notable and important changes |
|---|---|---|
| 0.4 | December 25, 2002[36] | Initial release. |
| 0.5 | April 13, 2003[37] | Ability to drag bookmarks, smart bookmarks, and topics to the toolbar. Optional "Go" button for URL bar. "Help" support. |
| 0.6 | May 4, 2003[38] | Drag and drop of links totab bar. Security preferences. User language automatic detection. New history dialog. Default bookmarks toolbar. |
| 0.7 | June 7, 2003[39] | Zoom control for the toolbar. Ability to reload page while bypassing cache (shift+reload). Traditional bookmarks menu.Exit fullscreen button. |
| 0.8 | July 13, 2003[40] | Tooltips. Improved GNOME integration. Fast search for bookmarks and history. Drag and drop ofURLs in the bookmarks toolbar. |
| 0.9 | August 22, 2003[41] | Bugfixes only. |
| 1.0 | September 8, 2003[42] GNOME 2.04 | Support for Mozilla 1.6. |
| 1.2 | March 15, 2004[43] GNOME 2.06 | Support for Mozilla 1.7 and 1.8, Lockdown mode.Caret navigation. |
| 1.4 | September 13, 2004[44] GNOME 2.08 | Offline mode. Per-sitepop-up blocking. |
| 1.6 | March 9, 2005[45] GNOME 2.10 | Extensions manager. |
| 1.8 | September 5, 2005[46] GNOME 2.12 | Python bindings,Find toolbar,Favicon andSSLicons displayed in location bar.[26] Gecko 1.8 support. Error messages display in content area. Use of the GNOME printing system. |
| 2.14 | March 12, 2006[47] | XULRunner backend supported. Topic suggestions in bookmarks manager.[48] Version numbering synced toGNOME.[27]NetworkManagerDBUS interface support. |
| 2.16 | September 6, 2006[49] | History preserved for links opened in new tabs.[50]Spell checking support. Page security info dialogue from Certificates extension. New GTK Printing dialog. Stability improvements.[51] |
| 2.18 | March 14, 2007[52] | Bookmarks online storage.[53] UI for Ad Blocker. |
| 2.20 | September 19, 2007[54] | Migration from Gecko to WebKit.[30]PDF printing. Migration fromGnomeVFS toGIO. |
| 2.22 | March 12, 2008[55] | |
| 2.24 | September 24, 2008[56] | |
| 2.26 | March 31, 2009[57] | |
| 2.28 | September 24, 2009[58] | Gecko backends removed. Python extension support removed. WebInspector.[59] |
| 2.30 | March 31, 2010[60] | Broken SSL certificate warning, custom page menus support. |
| 2.32 | September 29, 2010[61] | Bugfixes only. |
| 3.0 | April 6, 2011[62] | Reduced the amount ofuser interface chrome.Geolocation support. Switched from text zooming to full content zooming. New download manager. Migration toGTK 3 and GNOME 3 technologies. |
| 3.2 | September 28, 2011[63] | Separate font settings. WebKit's page source viewer made default.Web Applications mode introduced. |
| 3.4 | March 28, 2012[15] | Renamed fromEpiphany toWeb. Major interface overhaul. Performance improvements. Super menu introduced. |
| 3.6 | September 26, 2012[64] | Overview screen and Full Screen mode introduced. |
| 3.8 | March 27, 2013[65] | SupportAdobe Flash and other plug-ins usingWebKit2. Privacy mode.New Tab button. Removes the ability to disableJavaScript.[66] |
| 3.10 | September 26, 2013[67] | New toolbar placement into "Header Bar", the newGNOME titlebar design. |
| 3.12 | March 25, 2014[68] | A major update version, including improved performance and user interface enhancements. Implemented a single process for each tab.[69] |
| 3.14 | September 24, 2014[70] | 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.[71] |
| 3.16 | March 23, 2015[72] | UI updated, fixes to improve incognito mode's privacy and discoverability.[73] |
| 3.18 | September 23, 2015[72] | UI improvements. EnabledDo Not Track and the ad blocker by default.[73] |
| 3.20 | March 23, 2016[72] | UI improvements. Session restore. |
| 3.22 | September 21, 2016[72] | UI improvements. |
| 3.30 | September 6, 2018[74] | Reader mode, others. |
| 3.34 | September 12, 2019[72] | Rewritten and improved ad blocker which uses WebKit's content filtering. Web process sandboxing for improved security. Favorite tabs can be pinned.[75] plug-in support removed.[76] |
| 3.36 | March 7, 2020[72] | User interface improvements for small screens. Native support forPDF documents. Improved support for handling dark GTK themes. Native viewing of web page source. Removal of vestigial NPAPI support. Support forService workers. More secure handling of cookies. Security improvements to better isolate sites from each other in a tab process.[77][78] |
| 3.38 | September 16, 2020[33] | Intelligent Tracking Prevention added and enabled by default, and option added to turn off websites storinglocal data.[79] |
| 40 | March 26, 2021[33] | New option for Google search suggestions, revamped tabs, andGoogle Safe Browsing disabled by default. |


As a component ofGNOME Core Applications, it provides full integration withGNOME settings and other components likeGNOME Keyring to securely store passwords, following theGNOME Human Interface Guidelines and the GNOMEsoftware stack to provide first-class support for the all new-adopted edge technologies such asWayland and the latest majorGTK versions,[80] multimedia support usingGStreamer, small package size (2.6MB)[6] and very fast execution/startup time due to using shared components; other features include thereader mode,[81]mouse gestures,smart bookmarks, praisedweb application integration mechanism,[82] built-inad blocking, the "Insert Emoji" option in thecontext menu for quick and easy inserting ofEmoji andMiscellaneous Symbols and Pictographs into thetext boxes,Google Safe Browsing,[83] supports reading and savingMHTML,[84] an archive format for web pages that combines all the files of web pages into only one single file; and consume fewersystem resources than the major cross-platform web browsers.[citation needed]
The underlyingWebKit browser engine provides support forHTML 4,XHTML,CSS 1 and 2, most ofHTML 5 and CSS 3,[85] and aWeb Inspector (web development debugging tool).[59]
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 imposesdigital rights management that hides what the user's computer is doing to make copying "premium content" difficult. However,Media Source Extensions is supported, asYouTube began to require this technology in November 2018.[86]
Apple, which is the primary corporate backer of WebKit, rejected at least 16 web APIs because they could be used in afingerprinting attack to help personally identify users and track them, while providing limited or no benefit to the user.[87] AsHTML5test checks for most of these APIs, it artificially lowers WebKit's "score" in points (as does lack of DRM support).[citation needed]
Web once supportedNPAPI plug-ins, such asJava andAdobe Flash, but support was removed in GNOME 3.34.[76] In the modern web platform, these have fallen out of favor and support has been removed from all major browsers. Flash has been deprecated by Adobe itself.[88] Flash had gained infamy throughout the years for usability and stability issues, incessant security vulnerabilities,[89] its proprietary nature, its ability to let sites deploy particularly obnoxious web ads,[90] and Adobe's poor and inconsistent Linux support.[91] Many of these issues were raised bySteve Jobs, then CEO of Apple, in his essayThoughts on Flash.[92]

Web reuses GNOME frameworks and settings,[93][94] including the user interface theme, network settings, and printing. Settings are stored with GSettings and GNOME default applications are used forinternet media types handling. The user configures these, centrally, in GNOME's settings app.
The built-in preference manager for Web presents basic browser-specific settings while advanced settings which could radically alter Web's behavior can be changed with utilities such asdconf (command line) anddconf-editor (graphical).[95]
Web follows theGNOME Human Interface Guidelines and platform-wide design decisions.[96] For example, in Web 3.4, the menu for application actions was moved to theGNOME Shell's top panel application menu and themenu bar was replaced with "super menu" button, which triggers the display of window-specific menu entries.[97]
Since GNOME 3.32, Web can adjust to various form factors with the help ofLibadwaita.[98] It supports desktop, tablet and phone form factors. ("Narrow Mode").[99]
Since GNOME 3.18, Web is configured toblock ads and pop-ups by default.[73] In GNOME 3.34, the existing ad blocker was removed. This code was only partially functional and had been the source of many bugs. Web adopted the "Content Blockers" system from the WebKit engine.[100][101]
One of the developers, Adrián Pérez de Castro, compared the old and new ad blockers. He found that the switch saved approximately 80 MiB of RAM per browser tab.[102]
Since GNOME 3.28, Web has support forGoogle Safe Browsing, to help prevent users from visiting malicious websites.[83]
Since GNOME 3.34, Web explicitly requires a minimum of WebKitGTK 2.26 or later.[75][103][76] This provides the "Bubblewrap Sandbox"[104] for tab processes, which is intended to prevent malicious websites from hijacking the browser and using it to spy on other tabs or run malicious code on the user's computer. If such code found another exploit in the operating system allowing it to becomeroot, the result could be a disaster for all users of the system.
Making the sandbox a priority was brought on, according to Michael Catanzaro, because he was particularly concerned with the code quality ofOpenJPEG and the numerous security problems that had been discovered in it, including many years of failing security reviews by Ubuntu.[105] He further explained that web compatibility requires that sites believe that Web is a major browser. Sending them theuser agent ofApple Safari causes fewer broken websites than others (due to sharing the WebKit engine), but also causes caching servers to deliverJPEG 2000 images,[106] of which Safari is the only major browser to support. There is no other usable open source option for JPEG 2000 support. Fixing OpenJPEG, which is the officialreference software, will be a massive undertaking that could take years to sort out. Enabling the Bubblewrap Sandbox would cause many vulnerabilities in this and other components to become "minimally useful" to potential attackers.[107]
In GNOME 3.36, Web gained native support for PDF documents by usingPDF.js. Michael Catanzaro explained that having websites openEvince to display PDF files was insecure, as it could be used to escape the browser's security sandbox. Since Evince was the last user of NPAPI, this allowed the remaining support code for the obsolete plug-in model (where additional vulnerabilities could be hiding) to be removed. Since the NPAPI support had a hard dependency on X11, moving to PDF.js also allowed that dependency to be dropped.[78]
Since PDF.js internally converts PDF documents so that they can be displayed by the web browser's engine, it does not add security vulnerabilities to the browser the way that compiled plug-ins such asAdobe Acrobat or Evince could.[78]

While most browsers feature a hierarchical folder-basedbookmark system, Web uses categorized bookmarks, where a single bookmark (e.g. this page) can exist in multiple categories (such as "Web Browsers", "GNOME", and "Computer Software").[108] A special category includes bookmarks that have not yet been categorized. Bookmarks, along with browsing history, are accessed from the address bar in find-as-you-type manner.[109]
Another innovative concept supported by Web (though originally fromGaleon)[20] is "smart bookmarks". These take a single argument specified from the address bar, or from a textbox in a toolbar.[21]

Since GNOME 3.2, released in September 2011,[110] Web allows creating application launchers forweb applications. The subsequent invocation of a launcher brings up a plainsite-specific browser (single instance) of Web limited to one domain, with off-site links opening in a normal browser.[111] The launcher created this way is accessible from the desktop and is not limited toGNOME Shell. For instance it may be used withUnity, used onUbuntu.[112] This feature facilitates the integration of the desktop andWorld Wide Web, which is a goal of Web's developers.[113] Similar features can be found in the Windows version ofGoogle Chrome. For the same purposeMozilla Foundation previously developed a standalone applicationMozilla Prism, which was superseded by the projectChromeless.[114]
Web applications are managed within the browser's main instance. The applications can be deleted from the page, accessible with aspecial URIabout:applications. This approach was supposed to be a temporary while a centralized GNOME web application management was to be implemented in GNOME 3.4, but this never happened.[35]
Since GNOME 3.26 and until GNOME 47, Web had support for Firefox Sync, which allowed users to sync their bookmarks, history, passwords, and open tabs with Firefox Sync, which could then be shared between any copy of Firefox or Web that the user signed into Firefox Sync with.[115]
In GNOME 47, it was disabled because of Mozilla changing the way Firefox Sync worked.[116]
Web once supported extensions and a package was maintained containing the official ones. This was later removed due to problems with stability and maintainability.[citation needed]
Some popular extensions, such asad blocking, were moved to the core application.[citation needed]
The project has expressed an interest in implementing support for theWebExtension add-on format used by Chrome, Firefox, and some other major browsers, if interested contributors can be found.[117] Experimental support for WebExtensions was introduced in GNOME 43.[118]

In reviewing the WebKit-powered Epiphany 2.28 in September 2009, Ryan Paul ofArs Technica said "Epiphany is quite snappy in GNOME 2.28 and scores 100/100 on theAcid3 test. Using WebKit will help differentiate Epiphany from Firefox, which is shipped as the default browser by most of the major Linux distributors."[32]
In reviewing Epiphany 2.30 in July 2010, Jack Wallen described it as "efficient, but different" and noted its problem with crashes. "When I first started working with Epiphany it crashed on most sites I visited. After doing a little research (and then a little debugging) I realized the issue was with JavaScript. Epiphany (in its current release), for some strange reason, doesn't like JavaScript. The only way around this was to disable JavaScript. Yes this means a lot of features won't work on a lot of sites – but this also means those same sites will load faster and won't be so prone to having issues (like crashing my browser)."[108] Wallen concluded positively about the browser, "Although Epiphany hasn't fully replaced Chrome and Firefox as my one-stop-shop browser, I now use it much more than I would have previously.[108] [It has a] small footprint, fast startup, and clean interface."[108]
In March 2011, Veronica Henry reviewed Epiphany 2.32, saying "To be fair, this would be a hard sell as a primary desktop browser for most users. In fact, there isn't even a setting to let you designate it as your default browser. But for those instance where you need to fire up a lightning-fast browser for quick surfing, Epiphany will do the trick."[119] She further noted, "Though I still use Firefox as my primary browser, lately it seems to run at a snail's pace. So, one of the first things I noticed about Epiphany is how quickly it launches. And subsequent page loads on my system are equally as fast."[119] Henry criticized Epiphany for its short list of extensions, singling out the lack ofFirebug as a deficiency.[119] Web instead supports Web Inspector offered by the WebKit engine, which has similar functionality.[59]
In April 2012, Ryan Paul ofArs Technica used Web as an example to his criticism of GNOME 3.4 design decisions: "Aside from the poor initial discoverability of the panel menu, this model works reasonably well for simple applications. [...] Unfortunately, it doesn't scale well in complex applications. The best example of where this approach can pose difficulties is in GNOME's default Web browser. [...] Having the application's functionality split across two completely separate menus does not constitute a usability improvement."[97] This was addressed in later versions, with a single unified menu.
In an October 2016 review, Bertel King Jr. noted onMakeUseOf, "Later versions offer the best integration you will find with GNOME Shell. It lacks the add-ons found in mainstream browsers, but some users will like the minimalism, the speed, and the tab isolation that prevents one misbehaving site from crashing the entire browser."[120]
In an April 2019 review, Bertel King Jr. wrote another article onMakeUseOf, this time reviewing GNOME Web for its Web Applications Mode. He stated, "When you check your email, you’re using a web app. If you open YouTube, Netflix, or Spotify in a browser, again, you’re using a web app. These days, you can replace most of your desktop apps with web apps. [...] GNOME Web provides tools to better integrate web apps with the rest of your desktop, so you can open them via your app launcher and view them in your dock or taskbar. This way they feel more like apps and less like sites." He also praised the security provided by walling off Web Applications from the rest of the browser and each other. Like Mozilla's container feature, this helps prevent sites such as Facebook from seeing what the user is doing in the main browser. It also allows the user to create multiple "apps" for the same site, to easily switch between different accounts.[82]
In addition to replacing epad with leafpad, midori with epiphany
Web have two modes that I named normal and narrow. The normal mode is Web as you know it, while the narrow mode moves all buttons from the header bar but the hamburger menu to a new action bar at the bottom, letting the windows reach yet unreachable widths.