Development
Uzbl: a browser following the UNIX philosophy
Over time, a great deal of functionality has been added to web browsers—extensions, download managers, PDF handling, and the like. This has caused some to become dissatisfied, fondly remembering when a browser was just a browser. Over the last few months, a new project, Uzbl (pronounced "usable
"),
has come along to create a browser that follows the
UNIX philosophy: "Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.
" The result is a refreshingly different browser, which has a minimal graphical interface, has minimal functionality and is controllable through external shell scripts with customizable key bindings.
Uzbl was born during a discussion about browsers in the Arch Linux user forum. At one point Dieter Plaetinck, a Belgian software developer and Arch Linux release engineer, voiced his opinion in the discussion:
Other participants were excited by the idea and asked if he was really planning to write such a program. After an initial hesitation ("Maybe, if I find the time
") and a promising experiment ("well I have been playing a bit with gtk and webkit. you may see some code online soon.. or maybe not
"), Plaetinck released the first code on April 21.
In the next couple of days, other Arch Linux users jumped on the bandwagon. They were all dissatisfied with current web browsers, because these are frequent violators of the Unix philosophy. Browsers integrate too many things such as management tools for bookmarks, history and downloads, decreasing the options for the user to handle them the way they want. Current browsers also store data in too-fancy file formats, such as XML, RDF and SQLite, making the data hard to reuse in other scripts. Plaetinck and his Arch fellows decided to change this, and he explains in the FAQ why he invented another browser:
Uzbl follows the UNIX philosophy in the following aspects:
- It has a minimal graphical interface. Users only see what they need: the webpage and little else.
- It has minimal functionality. Tasks that are not central to browsing are not in Uzbl. The user has to handle things like bookmarks, URI changing, history, downloads, etc. through external shell scripts.
- It is controllable through various means: the keyboard, stdin, pipes and socket files, etc.
- It has a highly customizable keyboard-centric input with support for modes, modkeys, variables and the like. As a consequence, the interface can be tweaked to be vim-like, emacs-like or any other scheme the user wishes.
- All data and configuration files are written in plain text.
Uzbl uses WebKit as the browser engine. This means that the user doesn't have to worry about Flash, JavaScript and all modern web standards: WebKit takes care of all this support (including Flash if the user has installed a Flash plugin such as Gnash or Adobe's) and even has a 100/100 score on the Acid3 test page.
Applications that follow the UNIX philosophy may require a fair amount of configuration in order to get them to a usable state; a large amount of that will impact the application's adoption. Your author installed Uzbl to put this to the test. There is no official release yet, but an alpha version can be downloaded for many distributions, and Arch Linux (which is the main development platform for Uzbl) has a PKGBUILD file. The adventurous user can pull the code from git and build Uzbl from source.
A freshly installed Uzbl includes fairly limited settings and is actually rather unusable. There is no status bar, the program has no key bindings, no handlers for the history or downloads, no buttons for navigation, and so on. The user can't even type anything into forms. However, there's a much more usable configuration file in the examples directory. Copy it to $XDG_CONFIG_HOME/uzbl/config (which expands to ~/.config/uzbl on most systems) and start Uzbl again, after which it really becomes usable, with a status bar and vim-like key bindings. Just as in vim, the user starts in command mode. Typing 'b' goes back, 'ZZ' quits the browser, etc. Typing something in a form can be done by first switching to insert mode ('i').
This UNIX-like rethinking of the interface has another strange consequence: Uzbl doesn't have the concept of a location bar. All changes to the currently loaded URI happen outside of the browser. So the user can't edit the current URI, can't load a URI from bookmarks, and so on. Uzbl comes with some example scripts that use dmenu to pick a URI from a history or bookmarks file. Just copy the scripts subdirectory in the examples directory to ~/.config/uzbl and read the example config file for the key bindings to activate the scripts. Users are even able to bind JavaScript code to a key.
While all other mainstream browsers support tabs, Uzbl doesn't like the concept and sticks to the "one page per instance" principle. Each instance of Uzbl is in essence just a small wrapper around WebKit. Although this will be a showstopper for a lot of people, there is some truth in the philosophy that multiple instances should be handled outside of the browser. In their FAQ, the developers point out that tabbing is something that can be handled by many window managers, such as xmonad and wmii. Another solution is to embed Uzbl instances in other Gtk applications, something that uzbl_tabbed.py has done, a Python script that made it into the example scripts of Uzbl. But the fact that Uzbl is focused on one page per instance means that everyone can write their own custom script for multiple instances management.
An active community
Although Uzbl is only a couple of months old, it already has a fairly active community, with a mailing list and an IRC channel (#uzbl on the Freenode network). The website also has a lot of information for users or developers that want to contribute. The wiki has a lot of community-provided information, such as configuration files, scripts for various tasks and screenshots. Browsing through all this, it becomes clear how powerful the UNIX philosophy is for a browser. For example, writing a script to send a link of the current web page to Twitter or to bookmark it to Delicious is dead simple.
According to Plaetinck, the project has 6 main developers and 28 contributors. Most of the contributors work on the core, programming in C. Surprisingly, Plaetinck himself is not that much of a coder:
There were lots of contributions right from the start. In April there were 28 commits per day, and every evening when Plaetinck came home from work he did nothing but merge code. The project also seems to attract a diverse group of people:
As interesting as the project may be, there are still some issues, and these are grave enough that Plaetinck doesn't eat his own dog food yet:
In the longer term, the Uzbl developers have a lot of plans:
Plaetinck says he also wants, in the long term, to split the browser into a rendering component and an interface component to help reusability. The key bindings should be improved too: at the moment users cannot bind the arrow keys, function keys, caps lock or mouse buttons.
For whom is Uzbl usable?
For users who find themselves regularly trying to optimize their "digital workspace", Uzbl is definitely a browser to consider, as Plaetinck explains: "I noticed that the best tools to solve my problems are the ones who are merely building blocks that allow me to implement my own methods.
" After swapping out bloated programs and replacing them by elegant, more UNIX-like programs, Plaetinck found out that pretty much all software for guys like him was out there: window managers like dwm and wmii of the suckless project, editors such as Vim, program launchers such as Bashrun, media players such as MPlayer and MPD, mail clients such as Mutt or Claws Mail, and so on. But until now, there was no web browser in the same spirit. Even "lightweight" browsers such as Midori or Lynx still do too much themselves and don't integrate well with their environment.
Your author is sympathetic to the idea of a browser following the UNIX philosophy, although that may be swimming against the stream. The core is simple and much less crash-prone than a complex browser with all kinds of management tools. And the developers are right to aim for a clean browser with all management tools outside. This makes it possible to adapt the browser to your own workflow and get a significant efficiency boost.
The end result is a lot more "usable" browsing experience. However, this comes with a significant price: a lot of custom scripting. This suggests that Uzbl will only appeal to people who have a very specific workflow, who are not satisfied with the behavior of current browsers, who like to memorize key bindings and who are not afraid of spending hours configuring their browser. Uzbl users should be confident to work with tools such as grep, awk, dmenu, zenity, wget and gnupg to build their own browser behavior. Users who want a browser that does everything and does it out-of-the-box, or who are addicted to a lot of Firefox extensions, will not like Uzbl. But then, looking at the speed of development of Uzbl (it's not even three months old), your author wouldn't be surprised if in one year the browser has an extensive set of helper scripts that can do many of the tasks that Firefox extensions do.
System Applications
Audio Projects
Rivendell 1.5.0 released
Version 1.5.0 of Rivendell, a radio station automation system, has been announced. "Changes: New RLM Plug-in. A new plug-in for the Innovonics model 713 RDS encoder has been added. Podcast System Enhancements. It is now possible to post new episodes via the remote web interface."
Database Software
PostgreSQL Weekly News
The July 12, 2009 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.
Web Site Development
Hatta 1.3.2 wiki engine released
Version 1.3.2 of the Hatta wiki engine has been announced. "Hatta is a small wiki engine designed to run locally or via WSGI inside a directory in a Mercurial repository. All the pages are normal text or binary (for images and such) files, also editable from outside of the wiki -- the page history is taken from the repository."
Plone 3.3 release candidate 4 released
Version 3.3 release candidate 4 of the Plone web content management system has been announced. "Version 3.3 is a feature release; it adds new features which will make it easier for integrators and developer to modify and extend Plone."
Desktop Applications
Audio Applications
Ardour 2.8.1 released
Version 2.8.1 of Ardour, a multi-track audio workstation, has been announced. "Although this is primarily a bug-fix release, the bugs that it fixes are important enough that we hope all users, especially those on OS X, will choose to upgrade. Crashes when deleting AudioUnit plugins, and a very important potential data loss issue with session cleanup are now fixed. 2.8.1 also has a builtin "Chat" option to connect (via your web browser) to our IRC channel." The Ardour site also has a new article on working with Ambisonics (3D Audio) using Ardour.
Desktop Environments
GNOME 2.27.4 released
Version 2.27.4 of the GNOME desktop environment has been announced. "This is already the 4th development release towards our 2.28 release that will happen in October 2009; this release comes just after the first joint GNOME / KDE conference, which was certainly great fun for all present people."
GNOME Software Announcements
The following new GNOME software has been announced this week:- Accerciser 1.7.4 (code cleanup and translation work)
- Brasero 2.27.4 (bug fixes, code cleanup and translation work)
- cairomm 1.8.2 (ABI fix)
- Cheese 2.27.4 (new features, bug fixes and translation work)
- CrunchyFrog 0.4.0 (new features and bug fixes)
- Deskbar-Applet 2.27.4 (new features, bug fixes and translation work)
- Empathy 2.27.4 (bug fixes and translation work)
- Evince 2.27.4 (bug fixes and translation work)
- Eye of GNOME 2.27.4 (new features, bug fixes and translation work)
- GCalctool 5.27.4 (new features, bug fixes, documentation and translation work)
- glibmm 2.21.2 (new features, bug fixes and code cleanup)
- gnome-control-center 2.27.4 (bug fixes, code cleanup and translation work)
- gnome-games 2.27.4 (new features, bug fixes and translation work)
- gnome-keyring 2.27.4 (new features and code cleanup)
- GNOME Media 2.27.4 (bug fixes and translation work)
- gnome-settings-daemon 2.27.4 (new features, bug fixes, code cleanup and translation work)
- GOK 2.27.4 (bug fixes and translation work)
- GTK+ 2.17.4 (new features, bug fixes and translation work)
- krb5-auth-dialog 0.12 (new features, bug fixes and translation work)
- librsvgmm 2.25.0 (development release)
- mousetweaks 2.27.4 (documentation and translation work)
- Orca 2.27.4 (bug fixes and translation work)
Growth Metrics for KDE Contributors (KDEDot)
KDE.News documents the growth metrics of KDE contributors. "In 1996 when KDE was first announced, it had only a handful of developers and the project could manage the source code without using a revision control system. More and more developers have begun to contribute to KDE over the years, and while there has been some attrition, the total number of active developers working on KDE has been steadily growing. In order to get a pulse from the current developer community, Simon St. James and Arthur Schiwon produced and plotted two basic metrics that show the continued growth within the KDE community."
KDE 4.3.0 RC2 released (KDEDot)
Version 4.3.0 RC2 of KDE has been announced. "The KDE Team has released another release candidate for KDE called "Canteras". It contains only few changes compared to RC1 which suggests that the 4.3 is stabilizing and shaping up well for the 4.3.0 release on 28th of July. KDE 4.3.0 will be followed up by a series of monthly bugfix and translation updates. Testers are asked to report bugs in this release so 4.3.0 becomes a release as smooth as possible."
KDE Software Announcements
The following new KDE software has been announced this week:- ATI Overclocking Utility X32 1.0.3 (bug fix)
- ATI Overclocking Utility X64 1.0.3 (bug fix)
- KAlarm 2.2.5 (bug fixes)
- Kall 0.9 (unspecified)
- KBibTeX 0.2.2 (new features and bug fixes)
- K Menu Gnome 1.0.1 (new features and code cleanup)
- KPS 0.9 (update for KDE 4.2)
- luckyBackup 0.3.3 (bug fix)
- PeaZip 2.6.3 (new features and bug fixes)
- QtCosmos 0.6 (bug fixes)
- Qt-SixA 0.3 (bug fixes)
- RSIBreak 0.9.0 (bug fixes and code cleanup)
- simon 0.2 (bug fixes and documentation work)
- Soprano 2.3.0 (new features and bug fixes)
- subdms 0.3.2 (unspecified)
- TaskJuggler 2.4.3 (bug fixes)
Xorg Software Announcements
The following new Xorg software has been announced this week:- inputproto 1.9.99.13 (new feature)
- inputproto 1.9.99.14 (new features and bug fixes)
- libX11 1.2.2 (bug fixes, code cleanup and documentation work)
- libXi 1.2.99.2 (new features, bug fixes and documentation work)
- pixman 0.15.16 (new features and bug fixes)
- renderproto 0.11 (new features and code cleanup)
- setxkbmap 1.1.0 (bug fixes and code cleanup)
- xkbcomp 1.1.0 (new features, bug fixes and code cleanup)
Electronics
gerbv 2.3 released
Version 2.3 of gerbv, a viewer for Gerber RS-274X files, Excellon drill files, and CSV pick-and-place files, has been announced on OpenCollector.org, it includes bug fixes and other improvements.
Games
Freecell Solver 2.34.0 released
Version 2.34.0 of Freecell Solver has been announced, it includes numerous improvements and some bug fixes. "Freecell Solver is an open-source (MIT/X11 Licensed) ANSI C-based library and some standalone command-line tools for solving Freecell and similar Solitaire variants such as Baker's Game, Seahaven Towers and Eight Off as well as Simple Simon."
Graphics
Inkscape 0.47 pre 1 is out
Version 0.47 pre 1 of Inkscape a scalable vector graphics (SVG) editor, is available. "Slowly, but surely we are getting there. First prerelease of v0.47 is out. Please test and report any issues you run into. The plan is to gain 500 points for closing bugs. At the moment of publishing this news we are at 304 points."
Multimedia
Moovida Media Center 1.0.5 released
Version 1.0.5 of Moovida Media Center has been announced, it includes a number of bug fixes. "Moovida, formerly known as Elisa, is a cross-platform and open-source Media Center written in Python. It uses GStreamer for media playback and pigment to create an appealing and intuitive user interface."
Music Applications
Denemo 0.8.6 released - Music Notation Editor
Version 0.8.6 of Denemo, a music notation editor, has been announced. "Notable new features are - Downloading new commands and edit scripts between releases - MIDI out, Tempo and Volume changes and insertion of arbitrary MIDI messages at any point in the music. - Edit lyrics in text editor and see the syllable placement as you type. Multiple verses per voice allowed. - Pasting LilyPond text directly into the Denemo window. By pasting the actual music text a Denemo editable score can be created from almost any LilyPond file. - With JACK, the playback starts from the cursor or plays back the selection if there is one."
Jackbeat 0.7.2
Version 0.7.2 of Jackbeat, a minimalistic sequencer, has been announced. "- Track solo controls have been added, OSC bindings included. - Minor file access and user interface bugs have been fixed. - Jackbeat now runs on Windows in addition to Mac OS X and Linux."
xwax 0.5 released
Version 0.5 of xwax has been announced. "xwax is open-source vinyl emulation software for Linux. It allows DJs and turntablists to playback digital audio files (MP3, Ogg Vorbis, FLAC, AAC and more), controlled using a normal pair of turntables via timecoded vinyls."
Office Applications
HylaFAX 6.0.3/4.4.5/4.3.8 releases
Three new releases of HylaFAX, a FAX modem control package, have been announced. "The HylaFAX development team is pleased to announce the maintenance releases of HylaFAX 6.0.3, 4.4.5 and 4.3.8."
Science
Sage 4.1 released
Version 4.1 of Sage has been announced, it includes new capabilities, optimizations and bug fixes. "Sage is a free open-source mathematics software system licensed under the GPL. It combines the power of many existing open-source packages into a common Python-based interface. Mission: Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab."
Languages and Tools
Caml
Caml Weekly News
The July 14, 2009 edition of the Caml Weekly News is out with new articles about the Caml language.
Python
Announcing freebase-python 1.0
Version 1.0 of freebase-python has been announced. "freebase-python is a library for accessing the open data repository stored at http://freebase.com. Freebase is huge, user-edited database of over 100 million of facts about over 5 million topics, all under the Creative Commons CC-BY license. The freebase-python library 1.0 is now available! It introduces a new syntax for accessing the freebase api, it updates the available commands to reflect the entire web api, and it introduces some cool schema manipulation utilities. It's backwards compatible with previous versions of the library."
Unladen Swallow 2009Q2 released
The Unladen Swallow 2009Q2 release is out. Unladen Swallow is an accelerated Python implementation; LWN covered it in May. It now uses LLVM to compile Python functions to machine code, and appears to be coming along nicely, even if the developers do not yet recommend its use in production situations. "Unladen Swallow 2009Q2 passes the tests for all the third-party tools and libraries listed on the Testing page. Significantly for many projects, this includes compatibility with Twisted, Django, NumPy and Swig."
Python-URL! - weekly Python news and links
The July 15, 2009 edition of the Python-URL! is online with a new collection of Python article links.
IDEs
Padre 0.39 released
Version 0.39 of Padre, an IDE for Perl, has been announced. This release includes new capabilities, bug fixes and code cleanup.Pydev 1.4.7 Released
Version 1.4.7 of Pydev an Eclipse plugin for Python, Jython and Iron Python, has been announced. This release adds some new features and includes numerous bug fixes.
Test Suites
oejskit 0.8.5 released
Version 0.8.5 of oejskit, a JavaScript in-browser testing and utility kit, has been released. "jskit contains infrastructure and in particular a py.test plugin to enable running unit tests for JavaScript code inside browsers. The plugin requires py.test 1.0 The approach also enables to write integration tests such that the JavaScript code is tested against server-side Python code mocked as necessary. Any server-side framework that can already be exposed through WSGI can play."
Miscellaneous
grc 1.3 released
Version 1.3 of grc has been announced. "grc is a colouriser configured by regular expressions, including a simple command line wrapper for some commonly used unix commands. Changes in this version: - CRTL+C propagation fixed - single hyphen in unified diff files is colourised - search for configuration files in current working directory properly".
Page editor: Forrest Cook
Next page:
Linux in the news>>
