Raspberry Pi® Logo
Valid HTML 4.01 Transitional

Raspberry Pi 3B
Web Browser

Jim Carter, 2018-02-06

Update in 2020-01-30: I'm returning to the Raspberry Pi's. The first one is Holly (new name) with a role of desktop replacement or thin client. Unfortunately, Mozilla Firefox 72 is too fat for this thin client. Back in 2004 the old Mozilla browser had bloated up and needed to be replaced with a new, slimmed down model: Firefox. But the same code bloat overcame Firefox, and it's now too big to be effective on the Raspberry Pi with 1Gb RAM. The objective symptom is, everything runs very very slowly. My impression is that it's thrashing. Each of the main browser and Web Services has 2.5Gb of virtual memory, although there's only 1Gb RAM and 3Gb swap, so at least 1Gb of that virtual memory must be overbooked and must contain nothing. I need a different web browser.

Table of Contents

Picking a New Web Browser

Today's job is to review available web browsers and identify one that's satisfactory for the Raspberry Pi. My main source is this comparison of web browsers on Wikipedia. It has 62 of them, some from the dustbin of history. A second source is another Wikipedia article comparing lightweight web browsers, with 18 items, of which four are in both lists.

My first step was to restrict them with these properties:

I suspect that Chromium and its close relatives will have similar size problems as Firefox, so I'm excluding them. While I use w3m regularly, I'm looking here for a browser that's not text-only. Some browsers depend on a specific desktop environment that I don't use and am not going to switch to. I'm also sticking in this category two other items that I doubt are going to fly in my context. Links are to the browsers' Wikipedia pages.

The survivors are these, with links to their Wikipedia pages. The rendering engines are indicated in parens.

More details about these browsers from Wikipedia and from the project pages. The headlines are links to the various project pages.

Basilisk

It is a perpetual beta project to advance the codebase from which Pale Moon is built. Inception: 2017-11-17. I should not be pursuing this browser; rather I should look at Pale Moon.

Brave

Based on Chromium. It has a builtin advertising and tracker blocker. The business model is a little strange. It has, or may have had in the past, a feature to replace ads on the wire with different ads, which has been mentioned as an ethical issue. The project started around 2015-05-28; the first stable release came out on 2019-11-13. This browser has a number of negatives and I think I shouldn't put much effort into it.

Dooble

Its main goal is to improve privacy. Project started 2008-08-xx. Information about it is hard to get; the project site is useless.

Falkon

Built-in ad blocker. Inception 2010-12-xx.

Midori

It is part of the XFCE Goodies collection, and is/was the default browser for Raspbian and several other distros. The project site was written by non-English speakers. Phone: +57 313-532-6246 which is in Colombia. (I was guessing Japanese speakers.) There's lots of product hype but not a lot of details.

NetSurf

Inception: 2002-04-xx for RiscOS and later expanded to multiple platforms (OS types). Its main goals are to be lightweight and portable. It has both a normal GUI, and a text-only capability. It has its own custom rendering engine.

Pale Moon

It is a fork of Firefox but has diverged considerably; in particular it sticks with a single thread while Firefox multiplies. Its rendering engine, Goanna, is a fork of Gecko (on Firefox). Inception: 2009-10-09. There was a data breach incident on the download site around 2019-07-10. Archived old Windows exe's had a Trojan horse added to them.

About the rendering engines:

Here's a feature matrix of the surviving browsers. The original page reports on History, Favorites, and Opening tabs from previous sessions, but none of these browsers have an assessment of these aspects, so I deleted those rows. '--' indicates that this aspect was not reported (vs. Yes or No, for having or not having that function). Jimc's note: client side scripting, specifically JavaScript, is an invention of the devil.

Aspect Basilisk Brave Dooble Falkon Midori NetSurf Pale Moon
Bookmark Management Yes Yes Yes Yes Yes Yes Yes
Download Management Yes Yes Yes Yes Yes Yes Yes
Password Management Yes Yes Yes Yes No No Yes
Form Management Yes Yes Yes Yes Yes No Yes
Spell Check Yes Yes Yes Yes Yes No Yes
Search Engine Toolbar Yes Yes Yes Yes Yes Yes Yes
Per Site Security Yes Yes Yes No No No Yes
Privacy Mode Yes Yes Yes Yes Yes No Yes
Auto Updater Yes Yes Yes Yes No No Yes
Acid Test 1 -- PassPassPassPassPassPass
Acid Test 2 -- PassPassPassPass(?) Pass
Acid Test 3 -- 97% 100%100%100%Fail100%
CSS 2.1 Yes -- Yes Yes Yes Yes Yes
Frames Yes -- Yes Yes Yes Yes Yes
XHTML 1.0+1.1 Yes -- Yes Yes Yes No Yes
JavaScript Yes -- -- Yes Yes No Yes
HTTP/2 Yes -- -- Yes -- No Yes
SSL Yes -- -- Yes -- Yes Yes
Available on SuSE No No RPM SRPMSRPMRPM SRPM

For the Acid Tests above, see the Wikipedia page for a link to the test suite's description. Also, HTML5 test results are reported for the major browsers (which I'm trying to get away from) but not for the browsers that I'm assessing, but I should run these tests myself; see the link on the page.

Installing Web Browsers

These are links to the installable packages of the surviving browsers. Often package names differ from the official names in capitalization, word splitting and hyphens, as with every one of these browsers. The package name on SuSE is given for each as part of the anchor text.

The next step will be to install the five SuSE available browsers on Holly. I'm excluding Basilisk and Brave for the reasons mentioned earlier. Command lines to build SRPMs and to install RPMs:

/usr/bin/time zypper source-install --download-as-needed --no-recommends $URL.srpm |& tee /tmp/logfile
/usr/bin/time rpmbuild -bb /usr/src/packages/SPECS/${package}.spec |& tee /tmp/logfile
/usr/bin/time zypper install --download-as-needed --no-recommends $URL.rpm |& tee /tmp/logfile

Here's the outcome of the installation:

Dooble

Falkon

Midori

NetSurf

Pale Moon

Chromium

Testing the Web Browsers

Now for testing Falkon, Midori and NetSurf, plus Firefox and Chromium as positive controls. The first job is to decide on some tests. They should simulate my normal web browser use, but should also cover not-so-common aspects (like multimedia). I need to include a consistent set of pages to be viewed exactly the same on all of them, to demonstrate the slowness and thrashing I found with Firefox, and whether the others do better on this test, which is the whole point of the browser selection.

Test Results

Firefox 72 (x86_64 on Laptop)

This is a trial run. Since this is the first try, some of the elapsed times include fumbling around and moving windows.

Firefox 72 (on Holly)

This is (I hope) an objective rating of the previously noted subjectively poor performance.

Chromium

I had planned to just tar Chromium with the same brush as Firefox, but I decided to give it an objective test.

Midori

Falkon

NetSurf

It has a text-only version called netsurf-fb, and a normal GUI called netsurf-gtk3, which is the one being tested.

Thin Client

I'm running Firefox on a server with the display on Holly. Timing data are as seen on the server.

The Final Choice

So the conclusion is that I will use Firefox for Intel on a server, with the display on the Raspberry Pi. Unfortunately the mainstream desktop browsers and their relatives use more resources than the Raspberry Pi can provide. I wonder what they use the resources for?

It's worth remembering: In 1972 I had a job with my campus I.T. department, which ran an IBM System/360 model 91. This monster supercomputer, the top of IBM's product line, had a massive 4 megabytes of RAM and an insanely fast cycle time of 1 microsecond per instruction. One core with parallel execution of up to two additions and one multiply or divide. It served all the computing needs of the campus except accounting. The Raspberry Pi could run circles around it, and it seems ridiculous that low value commercial web pages demand even more resources than the Raspberry Pi can deliver.

NetSurf performed excellently as a lightweight browser, and I'm going to keep it installed for use on websites (like my own) that it's able to handle, but it can't deal with the steroidal pages that commercial web developers turn out these days, and as much as I may fulminate in favor of static and non-scripted pages, I have to deal with the content I'm given, meaning I will often have to turn to the thin client mode.

The last step is cleanup: de-installing devel packages, source RPMs, and wrecked hopes and dreams.

Raspberry Pi® Logo
Photo and Image Credit