GNU IceCat
GNU IceCat on a GNU/Linux machine showing the IceCat/Gnuzilla homepage | |
Developer(s) | Mozilla Corporation |
---|---|
Stable release | 78.2.0esr
/ August 25, 2020 |
Repository | https://git.savannah.gnu.org /cgit/gnuzilla.git/ |
Written in | C, C++, JavaScript, Rust |
Engine | Quantum |
Operating system | Multi-platform (Linux, Windows, macOS, *BSD, Android) |
Standard(s) | HTML5, CSS3, WebP, VP9, AV1 |
Type | Web browser |
License |
|
Website | https://www.gnu.org /software/gnuzilla/ |
The GNU IceCat web browser is a re-branded Mozilla Firefox Extended Support Release version with slightly different more privacy-respecting defaults, different graphics and branding, some additionally really strange bugs and a hand-full of bundled extensions meant to provide more end-user freedom. The practical result of those extensions is a close to useless browser which is not suitable for most people. IceCat can be configured to be a somewhat usable privacy-respecting web browser given some time and effort even it if by default does not provide anything remotely resembling a good user-experience.
GNU IceCat is a re-brand, not a fork. It is literally just a bash build-script called makeicecat, some configuration files and extensions and a different logo. It is not a fork like Pale Moon, GNU IceCat has no changes to the original Mozilla Firefox source code.
The GNU IceCat Specific Features Who Set It Apart from Mozilla Firefox[edit]
The differences between GNU IcatCat and plain stock Mozilla Firefox are:
- GNU IceCat is built using the Firefox "extended support" releases (ESR).
- The logo and other graphics is blue instead of red and the icon features a cat instead of a fox.
- The pre-configured defaults are different. Most of the differing default settings are privacy-related. Telemetry spyware and the Firefox "studies" backdoor are disabled.
- GNU IceCat includes several mostly privacy-enhancing web browser extensions that are enabled by default. One of them, Reveal hidden HTML is useless and extremely annoying and another, LibreJS, breaks most websites.
disable-polymer-youtube | "Disables the use of polymer on YouTube" Only active on |
GNU LibreJS | GNU LibreJS which disables most JavaScript thus breaking most websites (See Features and usability below). It claims to block "non-free" JavaScript but it doesn't actually care (or know) if scripts are free or non-free. |
HTTPS Everywhere | Ensures that sites that are available using both http:// and https:// use https:// . Practically useful if you visit the few sites that do not redirect http requests to https and do not set a Strict-Transport-Security header.
|
LibreJS/USPS compatibility | Ensures that USPS.com, and just that site, works when the GNU LibreJS extension is active |
Reveal hidden HTML | Makes a very annoying "Hidden HTML detected, would you like to reveal it?" dialog box pop-up on half the sites you visit. Complete garbage. First thing you should do if you try GNU IceCat is to disable this trash. |
Searxes' Third-party Request Blocker | "Prevent your browser from connecting to third-party resource without user consent." The homepage (searxes.danwin1210.me) is dead. A close-up inspection of tprb_core.js reveals a long list of hard-coded domains, the block-list is built into the extension itself (as opposed to Ublock Origin which updates the filter lists from external sources regularly).
|
ViewTube | "Watch videos from video sharing websites with extra options". Provides extra functionality on 3 Italian-language video sharing websites. |
Workarounds for nonfree JS | "A collection of work-around scripts for a few different websites that are impossible to use without non-free JavaScript". Has site-specific fixes for sites that break with LibreJS, concretely:
|
GNU IceCat used to bundle an additional extension called "Onion Browser Button" which claimed to allow you to "Easily browse the internet using TOR proxy with just one click!". It didn't, it would claim to enable Tor and do absolutely nothing beyond claiming Tor was enabled. That extension, last updated in 2010, was finally removed from the GNU IceCat git repository in June 2020 after it had been included in a broken state for half a decade. Don't use it if your distribution still ships a GNU IceCat version with that extension. Fedora eradicated it from their packages for Fedora 31, 32 and 33 in September 2020.
Features and usability[edit]
GNU IceCat 78.2esr showing a broken YouTube website. This is LibreJS at work.
GNU IceCat is in most ways identical to the very mature Mozilla Firefox web browser. The page rendering engine is mature and sound. The vast majority of web pages can, in theory, be rendered correctly and used as they were intended. Most websites are not rendered correctly or usable in a stock out-of-the-box GNU IceCat web browser. This is mostly thanks to the LibreJS extension.
JavaScript is a computer programming language websites can use to execute simple code in web browsers. The vast majority of big websites, and a large portion of smaller ones, use small programs written in JavaScript to add various functionality. These JavaScript programs are in many cases just used for advertising and tracking "features". JavaScript programs can also be used to provide features like editors, media players and a range of other things. Richard Stallman has written a long essay titled "The JavaScript Trap" where he explains that much of the JavaScript served by modern websites is plain malware. He does have a point.
GNU IceCat comes with an extension called GNU LibreJS
which disables all JavaScript that is not marked as being free software. That means that as good as all JavaScript, including free software JavaScript, is blocked by default. The practical effect is that most sites will either not load at all or lack functionality. As good as all the bigger websites are broken and most smaller ones are also broken in GNU IceCat thanks to the LibreJS extension.
Most of the JavaScript embedded in for-profit websites is non-free software. We can understand why a web browser made by a free software advocacy group would block it. That being said: This decision does have a hugely negative and very noticeable impact on the end-user experience. Anyone who is not particularly tech-savvy or tech-interested will simply see that most websites are broken and conclude that GNU IceCat is a fundamentally broken and practically useless web browser. Demanding that your wife use GNU IceCat with LibreJS enabled as her default web browser will likely get you divorced.
GNU IceCat tries to solve the problem of sites requiring non-free JavaScript programs by providing an extensions that provides free JavaScript replacement programs for a handful of specific websites. The intentions may be good but this approach is just silly and not feasible. There are at least two major problems which simply can not be solved:
- Websites change. JavaScript replacement extensions require constant update and will regularly break as the websites they are for change.
- There are a whole lot of websites on the Internet. The Internet is a really big and very diverse place. Creating free JavaScript programs for hundreds of thousands of different websites is simply not realistic. Shipping GNU IceCat with thousands of extensions in constant need of updates would not be a good idea even if it was possible to write some JS for every website out there.
The GNU LibreJS does have a button you can click on to get a menu where specific JavaScript can be white-listed. This is useful since GNU LibreJS fails to identify free software JavaScript as free, resulting in most scripts being disabled by default. It is not a very practically usable feature, you do have to manually tweak every single website. That's a lot of work.
Another extension GNU IceCat ships with called Searxes makes the IceCat JavaScript allergy mess worse because it has also got JavaScript disabling functionality. That means that you have to fight it too on some of the sites you visit.
Odd IceCat-Specific Bugs[edit]
Menu navigation (when the menu is enabled) using the keyboard is utterly broken in GNU IceCat if layers.acceleration.force-enabled
is set to true
. That setting enables OpenGL accelerated rendering. It is not enabled by default, the special about:support
page reveals that GNU IceCat uses "Basic" non-accelerated rendering by default. Navigating the menu with OpenGL acceleration results in up-arrow moving down and down-arrow up the first time you change direction. This very odd bug is not present in Firefox 78esr when OpenGL accelerated rendering. Disabling all extensions makes no difference, it is entirely depended on the layers.acceleration.force-enabled
setting.
The other "feature-adding" extensions[edit]
A really annoying pop-up will appear on half the web pages you visit using GNU IceCat.
GNU IceCat comes with a "Reveal hidden HTML" extension that will frequently show a pop-up claiming there is somehow "Hidden HTML" on page which can be "revealed". There is typically nothing to "reveal". This extension will just annoy you regularly and never do anything useful. It is just an huge annoyance.
The included HTTPS Everywhere extension does not hamper general usability (unlike most of the included extensions). Why it's installed or what it is supposed to do are good questions. It does not and can not turn https on everywhere, either a site uses https or it doesn't. That's server-side, not client-side and no extension or plugin can change that. It will supposedly redirect you from http to https if a site supports both. Most sites with https will do that for you anyway and most will set a policy asking browsers only use https the first time you visit. This extension seems utterly pointless but it's inclusion fine, it does not appear to have any negative effects.
Mozilla-Provided Themes And Extensions[edit]
GNU IceCat with a Oh My Girl theme made for Mozilla Firefox
GNU IceCat used to refuse to install any Mozilla Firefox themes or extensions from addons.mozilla.org. That decision put huge restrictions on what you could do with GNU IceCat.
GNU IceCat 78.2.0esr does allow you to install and use any theme or extension made for Mozilla Firefox from addons.mozilla.org.
Verdict and Conclusion[edit]
The GNU IceCat web browser is border-line useless out of the box. While the "don't subject users to non-free JavaScript software" stance is admirable, the practical effect is a dismal, frustrating and outright bad end-user experience.
Having to turn JavaScript on for every site which uses it, even sites running free software with free software JavaScript which is what this site does, is annoying, impractical and not something less tech-savvy computers users will be able to do. A few tech-savvy power-users may appreciate it: Mozilla Firefox with both the NoScript and the Ublock Origin extensions behaves similarly.
The very annoying "Reveal hidden HTML" that causes a meaningless pop-up to appear on half the websites out there adds to the very bad end-user experience.
It is possible to make IceCat a somewhat acceptable browser by disabling all the bundled extensions. Doing that kind of negates the point of using GNU IceCat, but it is does solve some of the usability problems.
GNU IceCat is, all-in-all, a broken web browser and a horrible end-user experience. If you just want to get on Instagram and browse your favorite k-pop idol's latest selfies or watch music videos on Naver TV then GNU IceCat is absolutely not for you. It may be someone attractive if you're a die-hard free software enthusiast, but even then it's a hard sell due to the broken preference menu.
Under the hood[edit]
GNU IceCat stores it's settings in $HOME/.mozilla/icecat
where there will be a "profile" created when you first start it. It is possible to have several profiles. These can be created and managed by starting it with icecat -P ProfileManager
just like then can in Mozilla Firefox. Profiles can be used by starting it with icecat -P NameOfProfileToUse
The icecat
package will typically install to /usr/lib64/icecat/
with extensions in /usr/lib64/icecat/browser/extensions
LibreJS Script Licensing[edit]
The GNU Project has a "Setting Your JavaScript Free" page where they explain how they would like everyone on the web using free JavaScript software. They also maintain a script-libraries.json file listing well-known free JavaScript which is bundled with the LibreJS extension.
It is, in practice, a bit hard to make free software content management systems tag JavaScript with a license the way the GNU project proposes because they tend to minify JavaScript. It is further complicated if you use some extensions or modules with GNU GPL v2 JS and some with GNU GPL v3 JS if all scripts are minified into one file since each individual script should in that case be market separately.
Links[edit]
GNU IceCat's homepage is at www.gnu.org/software/gnuzilla/ even tough it's been a while since it was renamed from GnuZilla to GNU IceCat.
The git repository is at git.savannah.gnu.org /cgit/gnuzilla.git/.
Enable comment auto-refresher
Anonymous (8ea6dfe037)
Permalink |
Anonymous (a2098b0d20)
Permalink |
Anonymous (fb60b7a48c)
Permalink |
Anonymous (22d08addd5)
Permalink |
Anonymous (df0a3e1419)
Permalink |
Anonymous (07d118606b)
Permalink |