Oli Warner About Contact Oli on Twitter Subscribe

My issues with Linux et al

Wednesday, 23 July 2008 linux

Like a warm ocean current, the tides of contempt are slowly eroding my enjoyment of Ubuntu. I’ve been using it full time for eleven months now but I feel I have to write down my grievances before I find myself jumping ship.

I’ll start by reiterating my faith. My name is Oli Warner and I believe in open source. Everybody has the code, everybody can improve on it and the choice to use one application over another is the ultimate quality control. Despite there being some excellent examples of FOSS (Free and open source software), use some of it for long enough and you’ll discover its weaknesses.

I love Linux but I’m losing my religion.

Before you ask me why I’m using the following apps, allow me to tell you that I do shop around. I do try different distributions, different desktops and different combinations of applications. I use everything here because, in my opinion, it’s the best of what’s available.

Gnome and GTK+

Despite it being the primary interface for the most widely used desktop distribution, the Gnome desktop has some serious ideological problems.

First up is configuration. Gnome developers seem to share a mantra: configuration is both confusing and evil, and it’s their mission to shield users from it. Newsflash: configuration is useful at times! Sane defaults will only get you so far. The first place I ran into this issue was the Places menu. 4 bookmarks or mounts is fine but six is apparently far too many to list and requires truncating:

Shoddy default menu settings

Doesn’t that look intuitive?! It’s a usability dream, I’ll tell you. Now this would all be fine, if I could change the limit but the variable is hard-coded in the source. I could download the source, find the file and line, make the edit, compile and re-install, but let’s face it, I’d probably cock it up and life is just too damned short.

If I had my wish, I’d have a dozen bookmarks because they’re so useful, but because of this EPIC FAIL, I stick to four or five.

Next up is Nautilus, Gnome’s answer to Windows’ Explorer. In a very similar fashion it manages the desktop and the panels and it’s also a file browser. My main complaint lies with the latter. Its file-managing abilities aren’t bad but it needs more power. They helpfully include a drop-down box on the tool-bar but it seems a bit overkill; there are only two options within.

Nautilus view modes

I need a real (a-la Windows) list view. Not details! List. A small icon and the filename, in columns, scrolling horizontally. Please! Thunar (XFCE’s Nautilus) does include this but lacks several important features deemed too heavy for its lightweight parent. Another nice feature would be file details and meta-data when you hover over a file, its content changing depending on the file type.

The desktop is a bit rough in areas too. Icon alignment works on a rough grid system that might be nice if it worked.

Desktop grid

It allows you to overlap icons, they never ever line up correctly and, all in all, I end up wasting more time arranging icons on my desktop than I ever did under Explorer’s fascist regime. I’m sure people enjoy the flexibility of an fluid-ish grid — but I don’t. Please give us the option!

Pulseaudio

Pulseaudio

Pulseaudio (PA herein) is yet another answer to one of Linux’s longest weaknesses: sound. Linux has too many sound solutions that do fairly specific tasks but nothing has all the features to keep people happy. As a result, apps and frameworks (eg SDL) have to support multiple sound output configurations. It’s a complete mess and adding PA hasn’t helped in recent months.

Unifying everybody under a fresh banner might sound like a good idea, but all the apps that need sound need to feed through PA. All fine as long as one of two conditions are met:

  1. Devs create a PA module to output sound
  2. They use PA’s virtual inputs.

The first requires more work but tends to produce a better result. The second requires the devs to use the virtual inputs in a standard manner. The issue, as I’ve come to understand it, is people don’t always follow APIs to the letter. They hack their way around them to get things working.

My complaint: PA + Wine + Steam + any Steam game = FAIL.

Steam requires its own sound channel and so does the game. Wine doesn’t support PA but that’s fine because ALSA lets you do multiple simultaneous sources, so we pick ALSA. The problem is Wine doesn’t use the API properly (according to PA devs) and/or PA doesn’t implement the ALSA API correctly (according to Wine devs).

The only workaround involves disabling Wine’s sound, then starting Steam, then re-enabling sound, and using virtual-OSS, which only allows one app to connect to it at once. Or dump PA.

And that’s been the situation for months. I’ve been desperately looking for a sane fix but until somebody takes some responsibility, it’s just us, the users, taking it on the chin. I hope it’s not another four months before somebody grows a pair and digs in.

Stability is another issue for me in particular. Sometimes PA’ll crash and you can load it back up, but over the past few weeks, it’s been crashing and taking the entire system with it. PA crashing could be a symptom of something else. It’s still under investigation but at the moment, I’m considering ditching PA.

Compiz

Compiz Fusion

Compiz has quickly become the standard bearer for Linux’s desktop abilities. It gives you tons of desktop-wizardry at a tiny portion of Vista’s system requirements. What users don’t first see are the numerous bugs floating around.

You could blame several of these points on other projects, some of them closed source (Flash, nvidia), but my frustration ends up with Compiz because of the frivolous things they keep churning out. I know they owe me nothing but it’s frustrating when instead of bugs getting fixed, there’s another fish tank or snow globe plug-in.

Repositories and releases

Ubuntu’s six month release cycle is there for good reason: stability. By limiting the number of large updates during a cycle, users don’t receive any nasty shocks when something suddenly stops working. The problem with this model is application maturity. Only a few a few desktop applications can say they’re truly stable or even feature complete at release and this means that lots of the apps in Hardy are outdated just two months after its release.

Then there are applications that must always be the latest version. Anti-virus scanners. Multiplayer games. The kinds of apps whose updates aren’t necessarily security patches but are required for optimal operation.

Users are free to download the latest source and install it themselves but there must be a better way. Some have suggested implementing a Debian-style volatile repository which would cover specific apps, as I’ve described but it’s not quite enough in my eyes.

I would go one further and say that apt needs re-engineering to enable users to choose between three states of upgrade policy on a package-by-package basis:

  1. Do not upgrade at all.

  2. Upgrade security and stability patches.

  3. Use bleeding edge.

Ghosts in the machine

By definition, these are accumulations of issues causing random-looking behaviour:

It’s extremely difficult to target the issue for each of these. I’ve reported bugs to Launchpad for most of them but they’ll either be ignored or inaccurately assigned as duplicates.

Application deficit

There are lots and lots of apps for Linux and I’ve replaced many of the ones I used in Windows with viable alternatives, but what happens when your work-flow depends on specific tasks that just aren’t available in a Linux app?

We’re probably still a couple of years off Adobe porting their suite of creative applications across to Linux, so I’m left having to use a VM or Wine for Photoshop (no, The GIMP doesn’t do all I need of it), Illustrator (same comment at Inksape) and Fireworks (a pretty unique mix of features).

Linux NEEDS commercial application support. Or Wine needs to get really good.

On another note, I use Xine UI to play all my video files because it’s unobtrusive and you can configure EVERY shortcut you can imagine, however, its interface (hidden 99% of the time) is ugly and it doesn’t play digital TV, requiring me to load Kaffeine. Totem would be okay but it fails on all counts. VLC doesn’t handle my mouse shortcuts for some reason. Mplayer is too minimal. SMplayer doesn’t do everything.

Similarly, I’ve used Thunderbird for years. I used it under Windows so it was my natural choice. However, they’ve been pretty slow at integrating Outlook-style tools (calendering, todo listing, sync). Evolution is integrated into Gnome. It can display your upcoming items on the main clock and does everything I could want… Except work. Evolution appears to have a pretty critical IMAP bug. I need IMAP more than I need Evolution.

My point: choice can be an illusion when you’re left between a rock and a hard place.

I’ve mentioned bugs and vented my frustration that they’re not fixed fast enough. This is exacerbated by knowing that it would take somebody with knowledge of the relevant projects just a few hours, if not minutes in some cases, to relieve my stress.

And I’d be willing to pay them. This is a refinement model that FOSS has to seize upon. There needs to be an open marketplace where users can out their woes and ask for developers to bid on bugs. Deliverable through upstream patches and instructions on how to apply and compile, or pre-built packages. Multiple users could share the cost.

There are obvious downsides to this plan: developers may adjust their behaviour and only do paying work, or, worse still, deliberately place bugs or limit functionality. But I think it’s worth that risk.

Will I dump Linux?

It may look like I’ve just slammed out ~1600 words blasting Linux and its sub-projects but I could write infinitely more in its favour. And it’s constantly improving. No, I’m not leaving Linux. I might be frustrated at the speed of some advancements but I’m sure as more and more developers join projects, more eyes will equate higher quality.

I still believe.

In time I hope to be able to resolve my own issues. I’m trying to get into it but it’s a pretty steep learning curve for a web developer familiar in VB.NET/C#/PHP. If any of you reading have any tips, tutorials or time to kick me into gear, I’d love to learn.