Linux's Growing Pains

The last two releases of Ubuntu (9.04 and 9.10) seem to generate a lot of complaints of bugs. The biggest problem is hardware because if your hardware doesn’t work, you can’t test out the software, and the hardware bugs are the hardest to find because nearly every computer on the planet is different!

I agree and I have found bad bugs in both releases. In 9.04, my Intel video driver was slow and leaked memory like a sieve. In 9.10, that problem has been fixed, but now sound volume maxes out at 26%, my mouse doesn’t work when coming out of sleep, and when I open the laptop lid, the backlight doesn’t always come on. (The last two bugs appear to have been fixed post-ship.) Of course, I’ve found bugs in every release.

The good news is that this is all very natural, and even to be expected given the deep changes that are being made to the stack. And for every user that has problems, there are users who have a better situation with the latest release. Bugs cannot be fixed until they are found, and they cannot be found until users are running the code. Ubuntu’s large user base means that it will find bugs not found by the upstream developers, which are mostly teams of just handfuls of people. And the bugs that Ubuntu users run into are nearly always bugs in the upstream code, so it isn’t entirely Ubuntu’s fault.

Solutions

Ubuntu has several choices. It can be conservative about what versions of software it runs, especially hardware-related components, so as to let the smaller distros find and fix the bugs. The downside of this is that Ubuntu is not carrying its own weight, and in general new software has new features that users want. What is the point of making a release every 6 months if it contains 6-month old software? A corollary of this is Mark Shuttleworth’s “cadence” suggestion: by having multiple distributions ship on the same day, they would presumably choose to use the same versions of software and share the load in finding bugs.

Some say that Ubuntu should ship less frequently, but a better solution is for Ubuntu to put more resources on the fundamentals. With every release, Ubuntu seems to have some shiny new trend it is talking about: cloud computing, new notifications, etc. and I worry they seem to become easily distracted and forget to keep fortifying their investments in the basics: Step 1 of Linux World Domination is World Installation.

Another reason that this problem is happening is that Ubuntu has chosen to be a separate team from Debian. Many of the bugs were found before the release of Ubuntu, but there just wasn’t enough people / time to track them down, and work with the upstreams to find a fix. And because Debian is a separate team, they are not engaged in this battle. (I have been complaining about the mistake of Ubuntu being a separate organization from Debian for 3.5 years so I won’t go into this any more.)

Linux is making good progress but has a ways to go still. Ubuntu currently has 74823 bugs. Focus on the bugs! You might not believe it, but at Microsoft we had it beaten into our heads to fix bugs: a bug meant an unhappy customer, and a bug that affected just 1% of users meant that there were millions of unhappy customers. Software that doesn’t work is not worth anything, and the bug list is the most important metric an organization could possibly be focused on. It is a problem that people in the Linux community talk much more about boot time than bug count.

The point is: how do you know? None of the bugs I’m talking about exist in “Ubuntu’s code”. The bugs exist in the upstreams. Ubuntu is basically snapshotting the free software stack and the hardware bugs show up only on specific machines. With Slackware’s tiny userbase there are likely lots of bugs that they don’t even know about. If you don’t have users, you don’t have bugs.

“.. and they cannot be found until users are running the code.”
I call rubbish. Most of the bugs would be found if the releases were tested properly. Part of the problem is that the releases are rushed out the door without proper testing. Some of the bugs I have found can’t possibly be missed if the release were tested properly. I feel that too many bugs should prompt the dev team to switch libs or write their own, the end user would have a much more enjoyable experience.

I wonder how much of the recent uproar would have been non-existent had the release been properly tested. As long as bugs are acceptable, we will always have bugs.

I think there is a degree of overstatement of the problem going on here. Sure there are annoying bugs in recent Ubuntu releases but when you compare a Ubuntu system now with that of even 3 years ago the contrast is strong. The bugs then were in my experience more profound because the open source stack was less mature then. I currently run 5 Ubuntu boxes of quite varying hardware and in the last 3 releases I have had a few niggling bugs that took a few days to sort out but compared to the situation 3 years ago things are fairly humming along.

Proof of my assertion I believe is the ever expanding (and bitching) userbase.

I had Ubuntu 9.04 on my laptop, It worked nice. Some days ago I decided to upgrade to 9.10. I found really bad bugs, specially about hardware, so I decided to migrate to Mandriva 2010 and I am really happy with it!

OpenBSD has a six-month release schedule, and its user base is probably even smaller than Slackware. OpenBSD is renown for its stability, lack of bugs, *very* good documentation, and generally good coding standards. Ubuntu is subpar in all these areas, IMO. It is rubbish to say that you can’t fix the bugs “until users are running the code”.

For the record, I am still running Ubuntu 8.04 in our local library, and I don’t dare upgrade until the next LTS version has been out for a while and tested in userland. I am pretty disgusted by the quality of Ubuntu releases compared to Slackware and OpenBSD, and am looking to abandon Ubuntu for another FLOSS operating system ASAP.