Browser

If you thought Uzbl was a minimal WebKit browser, you should see surf

If your standards for a Web browser involve being as lightweight as reasonably possible while still offering an at least somewhat mouse-driven interface and the ability to support a Flash plugin, surf may be the browser for you.

For people who appreciate the functionality benefits of a complete WebKit browser, but otherwise prefer minimalism and simple, lightweight design to characterize their applications, surf may be the closest thing to an ideal browser choice. Where Uzbl is pretty lightweight by comparison with feature-rich options like Chromium, Firefox, Internet Explorer, Opera, and Safari, surf is downright sparse in its feature set. In fact, it barely provides more than the raw WebKit rendering engine itself.

As explained on the surf page at suckless.org:

surf is a simple web browser based on WebKit/GTK+. It is able to display websites and follow links. It supports the XEmbed protocol which makes it possible to embed it in another application. Furthermore, one can point surf to another URI by setting its XProperties.

It does not do much else.

The result is a blazing fast, extremely lightweight Web browser that is fully functional in terms of the most basic capabilities demanded of a modern browser, but a browser that falls well short of the expectations of the average user. It has:

  • no auto-update
  • no built-in search engine access
  • no cookie management
  • no configuration file
  • no extension system
  • no password management
  • no standard bookmark system
  • no tabbing
  • no toolbars
  • . . . and no bloat.

Its entire source code repository contains about 30 kilobytes of files, including the license file, readme file, makefile, and logo image file. While it does not quite reach the standards of usefulness required to serve as my primary browser, I use it heavily as a back-up browser. I find it especially useful when I just want to open up a browser window to get past the login page to get Internet access at Panera Bread.

There is not much more to say about it. In my use, it has been stable, performs adequately, and is well-suited to the tasks for which I use it, and it has almost no features. It is distributed under copyfree terms, using the MIT/X11 License. The tale ends here.

It seems fitting that such an elegant little browser should be represented by such a brief article.

About

Chad Perrin is an IT consultant, developer, and freelance professional writer. He holds both Microsoft and CompTIA certifications and is a graduate of two IT industry trade schools.

18 comments
seanferd
seanferd

suckless looks like it has some other interesting tools. suckless seems to adhere rather strictly to the Unix philosophy.

Spitfire_Sysop
Spitfire_Sysop

So does it's simplicity make it safer or less safe? For example, how does it deal with Javascript, java and flash? I imagine Flash can't be installed in to it. What does Chad think?

apotheon
apotheon

Surf supports Flash quite well. Its simplicity is mostly a security advantage. Simplicity is security, after all -- and it's an important part of open source security in particular. The simplicity of its interface is a bit of a problem, however, because it is not configurable in any reasonable sense to tighten security according to your usage needs. It also does not have an extension system, which means that security extensions such as HTTPS Everywhere and Perspectives are essentially impossible for Surf. In short, there are trade-offs.

seanferd
seanferd

You can make it a tabbed browser if you use tabbed with it. How Unixy! edit: The code tag display still slays me.

AnsuGisalas
AnsuGisalas

or secure? I'm pretty much sure it doesn't constitute a fire hazard ;) BTW: I only make a note of this because I always choke on "safe" and "secure" in my work, you see, in Danish both are "sikker". Safety = "sikkerhed". Security = "sikkerhed". Makes a person pop a vein, let me tell you!

apotheon
apotheon

You deserve extra upvotes just for that incredibly relevant and appropriate pun.

Spitfire_Sysop
Spitfire_Sysop

I was thinking that it would be vulnerable to things like malicious Javascript and click-jacking, XSS. The sort of exploits that can punish you for just loading the page. Yes, so are most browsers without special plugins to filter content.

apotheon
apotheon

Flash isn't strictly necessary for (most of) YouTube's videos. Google has made sure that YouTube supports HTML 5 video as well, though you have to change a preference on YouTube to use HTML 5 instead of Flash. . . . but Flash does work in Surf. For inline code, use <tt> instead of <code> tags. TechRepublic's CSS for code tags is kinda broken, unless you use tr-rectify in Firefox (or something equivalent) to apply some custom styling to the page.

Neon Samurai
Neon Samurai

free as in no cost or free as in liberty to do? one word, drasticly different meanings depending on context. Though, we also secure things to make them safe. An insecure structure with risk of collaps could be very unsafe. An insecure web browser is not safe to use.

apotheon
apotheon

I went with the assumption Spitfire_Sysop meant "secure".

apotheon
apotheon

Yeah, the simplicity of surf's design should minimize the kind of problem you describe in the core implementation. There just aren't any available end-user mitigations, generally speaking, due to the lack of configurability or extensibility.

apotheon
apotheon

I wonder who's downvoting you, and why.

apotheon
apotheon

Middle English etimologie, from Old French ethimologie, from Medieval Latin ethimologia, from Latin etymologia, from Greek etumologi : etumon, true sense of a word ; see etymon + -logi, -logy . . . from The American Heritage Dictionary of the English Language.

Spitfire_Sysop
Spitfire_Sysop

Seriously, it's a strange word and it sounds like Entomology which is something completely different.

AnsuGisalas
AnsuGisalas

but the interesting thing is often in the non-conflation of another language: the speakers of a language rarely think about the differences of meanings assigned to a single word, but seeing the different meanings assigned to different words in another language can really drive it home : these are different things. Like not_dark and flux_of_photons - it can be difficult at times to keep them apart, but physically they're completely different things. There's one theory out there which tries to establish universals of meaning by collecting instances of meanings that all (of a pathetically limited set of) languages agree to place within single-word boundaries. It's called natural semantics I think. Its major problem is its limited sample; by just including a handful of additional languages the whole set of "universals of meaning" could be blown to bits... for example, it already precludes "water" from universal meaning because Japanese (one of the few languages in its sample) differentiates cold water and hot water to different words. That practical implementation flaw aside, its concept is also more fundamentally flawed since it's an exclusive measuring... it implies that natural and random language change is subject to an insurmountable blocking of all changes to words of these "universal meanings" - even though Saussure has very convincingly argued that meaning is amorphous, and that the specific meanings crystallized into our lexicons are ultimately arbitrary (but he was an exceptionally sharp dude, that one). A valid method would go the other way; being inclusive. In the scope of universal field theory, it'd be to assemble as complete field-sets as possible (the field set is composed of examples like the above, light = let(+)/lys = kevyt/vaalea/valo [the (+) just means that let introduced a meaning not covered on the left or right of the equation - the way to handle that would be to link to these meanings on both sides of the equation, making for a 3+ -dimensional object]. To get useful information out of it, one should take the finest distinctions: that way one gets a map of the meanings which humans have actually seen a need for - which is far more informative than the arbitrary set of meanings which some languages have not seen a need to discern in greater detail than an arbitrary mean. :D

apotheon
apotheon

It seems easy to imagine the etymological path through metaphorical connotation from one meaning out of several for a term to others, in each example you've provided of such multiple meanings.

AnsuGisalas
AnsuGisalas

It's playing with meanings in different languages: For example; Light in english can mean not_heavy and not_dark and a_flux_of_photons. In Danish not_heavy can be covered by the word "let", which can also mean not_difficult. not_dark in Danish, is "lys" which can also be that flux_of_photons. In finnish however, not_heavy is "kevyt", not_dark is "vaalea" and flux_of_photons is "valo".