The modern web browsers are usually huge in all aspects: they have a lot of chrome, a lot of functionality, a lot of RAM used. The most prominent example of such thing was the Mozilla Suit, which included all the functionality one would use (including e-mail client!) and could be possibly extended with more functionality that no one would ever use.
Happily the dinosaurs era is over now (though Opera is still somewhere around with it's all-in-one approach and invisible usage share), so the world is now dominated by mammoths and machairodontinae. Still oversized, but not that.
Minimalist web browsers
Though Firefox and Chrome are now usable, there number of those consuming all their functionality is really low. While using 10% of program's functionality is OK for mainstream user, the powerusers and programmers, who know from their own practice that every kilobyte of unused functionality can be directly translated to stability and security risks value, prefer using 100% of functionality of a tinier tool.
In the world of web browsers such tools are called minimalist web browsers. This article is devoted to the tiniest of them (to my knowledge) — surf.
Place of birth
This browser originates from the fairly interesting community of suckless.org. This team of programmers has already created several prominent minimalist pieces software like dwm and wmi X window managers and a general-purpose TDI embedder tabbed. Now they are working on several interesting projects like the modern terminal emulator and staticly linked linux distribution.
All their software (including surf) is supposed to follow the ideology, which is summed up as suck less. This can be possibly translated from programmers' language as having the smallest possible codebase, limit the overall complexity of software to the bare minimum, leave out the buzzy but really unneeded functionality (specially when it can be further re-added by user with the special utilities) and narrow the scope of the tool to its main usage.
This approach made surf the really bare bones browser. All it can is just browsing the web. All it options are set by editing the configuration files before it is actually compiled. The magic starts when You use it with external tools:
surf properly supports XEmbed protocol, so it can be nested in the tabbed instance. So, if You want it, You have it. If You don't - Your web browser is not tainted with this extra functionality You don't need.
You can use generic X11 tools like xprop to manipulate the current browser's URL. That said, You can even use surf as a mean of presentation controlled by the remote and a tiny script! You can also use xprop to extract the current URL without actually switching touching surf.
Though it isn't very useful on its own, You can make use of this feature in some interesting ways in combination with other tools.
surf doesn't feature the built-in bookmarks support. This functionality, while not actually used by some users, can be also added to surf using the combination of dmenu and built-in setprop function so, that You'll have an ability to choose bookmarks in find-as-You-type manner.
Ad block and URL spoof protection
Strictly speaking, surf has no such things. As with other minimalist browsers, any functionality of this kind is handled by the local proxy: squid can somehow handle this, or one can use a specifically targeted at ads Adsuck! local proxy.
Though the default installation of surf is fairly limited, it helps You focus on Your current tasks and provokes You to get one thing done before passing to another thing.
As shown above, surf still can be tuned to be as functional as, say, Internet Explorer, while still being far ahead of the current IE version in terms of standard compliance — surf is based on WebKit!
Though surf still suffers from several major disadvantages:
- configuration requires time and expertise: if you were not interested in XEmbed, xprop and friends before, You will become an expert in this stuff after configuring surf, regardless of Your will to keep away from this stuff;
- tuning in compile time is a pain. Whenever You want to add, modify or remove the shortcuts, You have to recompile surf;
- updating surf may require rewriting Your scripts and configuration patches; if you use official patches, You'll have to wait (possibly forever) until they are ported to the newer version;
- consequently, surf is a package management disaster. You can't update it by the means of Your distribution, until it's source based; and even then You face the problem of updating Your ebuild, PKGBUILD or whatever to include updates You had to make to Your patches;
- surf can't be properly used without mouse! You don't get URL hinting, caret or whatever You need until You write it Yourself!
This browser is good candidate for those, who prefer minimalist solutions and see web browsing as a secondary function of there computer. It is a fairly reasonable choice for those who expect to use a tiling window manager with several terminals and browser windows, though it would be too limited for most of us.
Don't even consider it as a Firefox replacement — several much less limited browsers exist in the wild, which would be better suited for this task. You should consider surf only if Firefox is overcluttered in Your opinion.