
Uzbl
» see uzbl.org as it lived, on the wayback machine
~ the last words ~
Dieter Plaetinck published the first code on 21 April 2009, two days after posting the idea to the Arch Linux forums, and the README opened with a complaint rather than a feature list. Browsers build too many things into one program, it said, and they store what they know in formats too elaborate to keep under version control or reuse from a script. The quote at the top was the old Unix line about writing programs that do one thing well and writing programs that work together.
What came out of that was deliberately unfinished. uzbl-core gave you a WebKit view and nothing else: no address bar, no history, no bookmarks, no keybindings. What it did have was plumbing, which is to say you could talk to it over standard input or a Unix socket, and it would report everything that happened back out as a stream of events. A Python event manager sat alongside to turn key presses into commands. The browser people actually ran, uzbl-browser, was that core plus a pile of shell scripts, so your bookmarks were a text file and your history was a text file and your download manager was whatever you already used.
For a couple of years it was the reference example of the idea. LWN wrote it up in July 2009 and Arch Linux Magazine covered it in January 2010, with the French Linux press running a piece of its own. The repository collected a thousand stars, which for a browser with no user interface is a lot of people agreeing with a principle. The tinkering was the point: your configuration was a dotfile of commands, and the appeal was being able to reach in and change how the thing behaved without compiling anything.
Releases came slowly and then not at all. Version 0.9.0 landed on 28 February 2016 after years of nothing, 0.9.1 followed on 27 October 2016, and the last patch merged into master on 5 January 2018, a fix for partial writes to a stream. The repository is still open, still unarchived, with seventy-two issues nobody will close. uzbl.org still serves the original site.
~ the record ~
| Born | 21 April 2009, first public code, announced on the Arch Linux forums two days earlier |
|---|---|
| Peak | LWN coverage in July 2009, a GNU/Linux Magazine France writeup, and 1,045 stars on GitHub |
| Killed | 5 January 2018, last commit to master |
| Lifespan | eight years and nine months, the last fifteen months of it silent |
| Made by | Dieter Plaetinck, later maintained by David Keijser |
| Killed by | nobody in particular, which is how most of these end |
~ the pitch ~
The argument was about trust as much as size. If the browser cannot store anything in a format you cannot read, it cannot quietly accumulate a profile of you, and if every feature is a separate script then every feature is auditable by a person with twenty minutes. This was the same instinct that produced tiling window managers and single-purpose terminal tools in the same years, from more or less the same people.
It also had a hard ceiling. One WebKit view per window and no tab model meant a tabbed version had to be assembled out of a second program, and the engine underneath aged badly: WebKit1 stopped being maintained upstream, and a browser pinned to it inherits every unpatched hole in it. That is the same wall that killed Xombrero on OpenBSD and most of this generation of minimalist browsers.
~ the gentoo burial ~
The clearest death notice came two years before the last commit, and from a distribution rather than the project. Gentoo bug 570836 was opened on 4 January 2016 by the person who maintained the package, asking for his own package to go. The mask went in the next day, signed by Patrice Clement, and the wording survives in the tree history: "According to its maintainer. this project is slowly dying and there's no activity occuring on mailing lists / git repo. Masked for removal." Thirty days of notice, then removal on 5 February 2016.
What makes it worth recording is what happened next. Somebody had already opened an issue called "No new releases?" on 12 January 2016, a week after the mask, and the maintainer answered it by doing the work. He closed the thread on 28 February with one line: "Released 0.9 just now. Here's to not waiting several years for the next!" It was several years. The next release was the last one, and then the silence resumed.
~ what inherited it ~
In the same issue thread, a user asking for something more usable was pointed at qutebrowser, which was described as heavily inspired by uzbl and which is still actively developed today. The inheritance is visible in the keyboard-driven browsing and the config file you edit by hand, both of which qutebrowser kept. The difference is that qutebrowser ships the bookmarks and the tab bar inside the program, where uzbl insisted they belonged in your scripts.
I was a working engineer when all of this was happening and I recognized the aesthetic immediately, in the way you recognize a neighborhood you have walked through without living in. My actual browser in 2010 had tabs in it. There is a particular kind of software that exists to be an argument, and it only has to convince the next thing to win.
~ leave a rose ~
an anonymous tribute. one rose per visitor per day.
@}-->-- ... roses left here
~ leave a wreath ~
a rose fades by morning. a wreath stays on this grave for good, with your name on it.
from $1, paid once through stripe. it keeps the graveyard running: the hosting and the nightly digging. adopt it and the headstone reads "maintained in memory by" you. the groundskeeper plants new wreaths at the next tending, usually within a day.
» one email a week: new graves and the anniversaries of the dead. subscribe
~ leave a note ~
visitors before you have left these graveside notes. anonymous welcome.