Awesomely Bad

A coworker of mine, @teepark and I recently fell in love with tiling window managers, Awesome in particular. The project has been interesting to follow, to say the least. When I first installed Awesome, from the openSUSE package directory, I had version 2, it was fairly basic, relatively easy to configure and enough to hook me on the idea of a tiling window manager. After conferring with @teepark, I discovered that he had version 3 which was much better, had some new fancy features, and an incremented version number, therefore I required it.

In general, I'm a fairly competent open-source contributor and user. Autoconf and Automake, while I despise them, aren't mean and scary to me and I'm able to work with them to fit my needs. I run Linux on two laptops, and a few workstations, not to mention the myriad of servers I'm either directly or peripherally responsible for. I grok open sources. Thusly, I was not put off by the idea of grabbing the latest "stable" tarball of Awesome to build and install it. That began my slow and painful journey to get this software built, and installed.

  • Oh, it needs Lua, I'll install that from the repositories.
  • Hm, what's this xcb I need, and isn't in the repositories. I guess I'll have to build that myself, oh but wait, there's different subsets of xcb? xcb-util, xcb-proto, libxcb-xlib, xcb-kitchensink, etc.
  • Well, I need xproto as well, which isn't in the repositories either.
  • CMake? Really guys? Fine.
  • ImLib2, I've never even heard of that!
  • libstartup-notification huh? Fine, i'll build this too.

After compiling what felt like an eternity of subpackages, I discovered a number of interesting things about the varying versions of Awesome v3. The configuration file format has changed a few times, even between one release candidate to another. I ran across issues that other people had that effectively require recompilling X11's libraries to link against the newly built xcb libraries in order to work (/usr/lib/libxcb-xlib.so.0: undefined reference to _xcb_unlock_io). Nothing I seemed to try worked as I might expect, if I couldn't recompile the majority of my system to be "bleeding edge" I was screwed. The entire affair was absolutely infuriating.

There were a few major things that I think the team behind Awesome failed miserably at accomplishing, that every open source developer should consider when releasing software:

  • If you depend on a hodge-podge of libraries, don't make your dependency on the bleeding edge of each package
  • Maintain an open dialogue with those that package your software, don't try to make their job hell.
  • When a user cannot build your packages with the latest stable versions of their distribution without almost rebuilding their entire system, perhaps you're "doin' it wrong"
  • Changing file formats, or anything major between two release candidates is idiocy.
  • If you don't actually care about your users, be sure to state it clearly, so then we don't bother using or trying to improve your poor quality software

In the end, I decided that Haskell isn't scary enough not to install XMonad, so I've started replacing machines that run Awesome, with XMonad, and I'm not looking back. Ever.

Comments

Dependency hell - RPMism?

What is interesting is I just went to install the "bleeding" edge v3.3.1 on Ubuntu and had none of these problems. sudo apt-get install awesome awesome-extra and voila, done.

And...same goes for xmonad, too.

A little bit of clarification

I actually noticed the reddit thread regarding this post, and I felt like I needed to clarify somewhat.

I fully understand the problems with building "bleeding edge" code, and that it will likely depend on the newer dependencies.

One of the primary reasons Awesome, which is in the openSUSE repositories, is stuck at version 2 is because the Awesome team changes the application so drastically between point releases in version 3. openSUSE freezes things for point releases for months at a time, but I can get very current GTK+, Mono, etc from their "Factory" repositories much the same way debian/ubuntu users get newer packages from "unstable" apt repositories.

Awesome, while a very solid window manager, can only be a window manager if you manage to get it running (and your configs migrated to the new format/Lua API). It's just too much of a moving target in my opinion.

I personally think you're

I personally think you're quite right and most developers sort of fail at supporting things that are even 6 months old whereas on the other side, a app that hasn't been developed since Windows 95, will likely work just fine on Vista (or at least XP) and for about half the apps on the platform, a Vista app will work fine with Win2K. That's ~12 years of compatibility one direction, and ~7 years compatibility the other direction.

I'm running Debian Lenny on my Desktop. It was released in February and went into "Feature Freeze" late summer 2008. Any time i try to compile a app that's slightly newer than the one in the repos that requires GTK or Glib...Whoops, your GTK and Glib are too old, go away...I tried compiling Rhythmbox 0.12.1 on the system, not only did i have the GTK and Glib issue, but issues with too old totem-pl-parser and gstreamer and likely a few others.

I believe most developers target their apps to people running (currently) Fedora 11 or Ubuntu 9.04 or Gentoo/Archlinux and if you don't run one of those 4 distros and want something newer than what's in the repos, you're SOL.

distribution specific

I think in your situation Xmonad makes a lot of sense, and it's good software from what I can read. There are some additional things that awesome does (notification integration, theming) that are done really cleanly, and simplier than Xmonad from a day to day perspective. But I think that's as much a symptom of different development paces...

Having said that, I think on the right distribution awesome can be quite easy to use and install. Upcoming versions of ubuntu, and debian (if you're willign to pull a few things from sid) work really well with awesome (the awesome developer is a debian guy) and there are a lot of awesome developers on arch (which makes sense given the overlap in philosphy.)

Your criticisms are, I think mostly valid, and awesome, is I think pretty clear to statet the latest versions are pretty bleeding edge, with all that that entails.

Cheers,

Well, it depends on which

Well, it depends on which distribution you use.
I just type pacman -S awesome and I have it. Awesome authors decided to use XCB protocol, which is quite new and edgy. It may be hard to build on some systems, however there are lot of users who use it anyway.

Don't like it? Don't use it. Open Source is about choice.