Planning | Testing | Setup | Collapse | Gentoo | Top |
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.
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.
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.
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.
Its main goal is to improve privacy. Project started 2008-08-xx. Information about it is hard to get; the project site is useless.
Built-in ad blocker. Inception 2010-12-xx.
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.
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.
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 | -- | Pass | Pass | Pass | Pass | Pass | Pass |
Acid Test 2 | -- | Pass | Pass | Pass | Pass | (?) | Pass |
Acid Test 3 | -- | 97% | 100% | 100% | 100% | Fail | 100% |
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 | SRPM | SRPM | RPM | 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.
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:
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.
/usr/bin/time $browser http://jacinth.cft.ca.us/~jimc/hardware/rasp-pi-3b/webbrowser.shtml
Let it show this web page, which has links to the other tests.
Then shut it down. Record the elapsed time, user CPU time, and system
CPU time (report their sum). Do a similar procedure on all the tests.
I had planned to subtract the startup time from the reported times,
but the results and the way I used them made this irrelevant.
Wikipedia article
on The Squirrel
. Scroll over the whole page, which has 6
images (wait for them to be visible). The first paragraph has links to
7 sub-families starting with Tree Squirrels, including Groundhogs, and
ending with Prarie Dogs. Branch to each one in a separate tab (if
available) or window; scroll over the whole page; close it before
branching to the next one.
Jimc's browser test suite, with various image formats, sound, video, and a Java applet. [Try to] perform each of them and record which worked or failed. For longer clips, kill it after 10 sec. The main issue is whether it can perform the item, not how fast. Major image types were all successful: JPEG, PNG, GIF. Coverage of multimedia types is spotty and I ended up testing PDF, oga (Ogg Vorbis audio), MP3, and Ogg Theora (video and audio), omitting an exhaustive report that this that and the other rarely seen type could not be played. The Java applet was usually completely ignored (noscript alternative message was shown), or in one case was attempted but not executed.
CNN front page in a private window or other privacy-guarded context. Read (scroll through) the front page. Read (scroll through) three text articles (the same ones for all browsers) and one video clip; let it play 30sec and then shut it up.
Acid Tests: Run all three and note significant failures. Take failures with a grain of salt, particularly in Acid3, since the project is closed, and some web standards have evolved to differ from what's tested (see notes on the page).
How well does your browser support HTML5? It starts the test as soon as you follow the link. Currently (2020-02-01), 555 points is the top score.
These are the features that I particularly want to see. Some of these may require you to set options, which I didn't do; this is definitely true of Firefox.
This is a trial run. Since this is the first try, some of the elapsed times include fumbling around and moving windows.
Overall rating: Good. If it weren't such a memory and/or CPU pig, I would prefer to use Firefox on the Raspberry Pi.
This is (I hope) an objective rating of the previously noted subjectively poor performance.
Overall rating: Fail.
I had planned to just tar Chromium with the same brush as Firefox, but I decided to give it an objective test.
Page Unresponsivenotice was popped up by Chromium itself. I'm out of time; terminating this test.
Overall rating: Chromium is better than Firefox, but it was
disqualified by being unable to show CNN or presumably other
real world
commercial sites rife with client side scripting.
Overall rating: Midori is no better than Firefox in this context. Too bad; I was hoping Midori would work out.
Overall rating: It didn't crash, but it was so slow that I ran out of time to finish the test.
It has a text-only version called netsurf-fb, and a normal GUI called netsurf-gtk3, which is the one being tested.
The Squirrel, matching or maybe a little exceeding that of Firefox on the Intel laptop.
Overall rating: Small as a mouse, fast as a cheetah…
(from the product hype). It lives up to this claim, but failure to
render CNN (and presumably other real world
commercial pages)
kills this program.
I'm running Firefox on a server with the display on Holly. Timing data are as seen on the server.
The Squirrel, after NetSurf and Firefox on the laptop. Definitely acceptable.
Overall rating: Besides being the only mode that actually works, thin client mode is actually useable. I'm moving forward with nonlocal Firefox as the browser solution for Holly. The only problem is audio performance, and I'll investigate software that can forward audio over a graphics connection.
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.
Breakit; it does work with 5.30.
Planning | Testing | Setup | Collapse | Gentoo | Top |