I am an ex-Microsoft programmer of 10 years who hadn’t spent 10 minutes with any Open Source code till I left Microsoft–which is actually very typical for MS employees.
After leaving 1 year ago and spending it with Linux (most of that time with Ubuntu) I’ve gained tremendous respect for the Open Source world as a whole but more than that, had an epiphany that Linux on the desktop is 99.999% ready to go. Linux is lean, stable, polished and extremely rich. All of the pieces needed for world domination on the desktop are there. If every Microsoft employee installed Linux, the attrition rate would double–which would be considered a catastrophe. If Bill Gates were to install Linux, he’d hire someone to smash one of his plasma TVs.
When I first investigated Linux, many of the obvious stuff I thought would be problems were not:
- Linux supports a wide variety of PC devices. The driver support in Linux is as least as good as Windows and must represent an enormous effort by a veritable army of programmers.
- The modern GUIs have all the nice features you’d expect: a clean, rich, stable, customizable & dynamic shell, consistency and interoperability among applications, and administrative UIs for all essential features.
- Linux supports laptops now with sleep & hibernate, power management, Wi-Fi, external monitors, ability to plugin USB keys and cameras, Cleartype (LCD sub-pixel smoothing), etc.
- Linux has all the important apps: FireFox, Thunderbird/Evolution, OpenOffice, GAIM, games, accessories and multimedia apps.
- Excellent interoperability with Windows: SAMBA file sharing, Office file-format interop, WMA/WMV codecs, dual-boot, NTFS resize on install, MSN IM protocol support, WINE, and probably much more I haven’t discovered yet.
In fact, Linux hasn’t just reached parity with Windows, it has significant functionality that Window doesn’t have:
- Linux distributions contain thousands of applications and installing them requires just 1 click. The market for 3rd party apps on Linux is much healthier than the 3rd-party market on Windows today and it is almost all free! Computing has become fun again because I can download all kinds of cool tools and instantly start learning and creating.
- I never run into walls with the ability to grep through essential system logs, tweak and re-compile code, google the actual development design discussions, jump into a rich command shell, have lots of choices for tools when one doesn’t meet my needs because of either bugs or missing features, and I can browse excellent support forums. My mom won’t use all those options but they are great to have.
An important point here is that Linux already has all the needed desktop features. What is holding it back is not features anymore, but bugs. Here are a few of the bugs that I see on my one English install: (UPDATE: I could probably file 50 bugs if I had the time and expertise and had a clean room setup to repro them in)
- Multimedia often skips or doesn’t display properly in the browser
- Sleep and hibernate don’t work on my hardware yet
- Gnome will mount NTFS, and create an icon on my desktop, but I can’t browse it because of permission problems
- Enabling external monitors isn’t easy
- Remote printing requires manual textfile configuration
- Installing non-free software or drivers requires lots of manual work
- Driver bugs, some hangs and crashes
- apt-get dist-upgrade hosed my machine (had to do a fresh install)
- ogg-vorbis is 5x slower at encoding a CD compared to Windows Media
These things are problems, but most are really just bugs. For example, the kernel and shell UI support hibernation, but it doesn’t yet work on many laptops–each problematic chipset is a bug. Gnome can detect and mount my NTFS partition and it actually understands the complicated NTFS format, but I am forced to jump to the command line to view my files. These problems can usually be worked around by a Linux guru but they shouldn’t exist and in many cases are just tiny bugs breaking a scenario from being easy.
My diagnosis is that the problem with Linux is that it doesn’t have anyone pushing to get the newbie bugs fixed first. At Microsoft, we had Program Managers and one of their responsibilities was to be customer advocates to prioritize the bugs for the devs to fix. In many open source groups, it sometimes appears that bugs get fixed when the dev decides to work on it, not because an important user scenario is broken. The Wi-Fi tool was broken in Gnome for many months, but the bugs just sat there languishing in the database. Microsoft or Apple would not have shipped a Wi-Fi UI that was completely broken in that way.
I believe the Linux development process overall is working just fine, shipping high quality code on a regular basis, so I think the problem is simply an issue of socalization. Many bug databases allow people to vote for bugs, and that might be an interesting democratic way to go about it, but I also think that having more focus and vocal user advocates would be enough.
One of the reasons why I like Ubuntu is that because it is being run on a wide variety hardware by newbies like me, it is building up a knowledgebase of these issues.
How much needs to be done? My estimate is that Ubuntu needs on the order of 10,000 bugs to be fixed to get that last .001%. If you want to make your own number, here one place to start: Ubuntu bugs. How long will that take? If we assume it takes 1 day per bug, then 10,000 bugs is 50 man-years. By Microsoft standards, 50 man-years is tiny: Windows Vista will probably have 5000 man-years of effort beyond Windows XP. In other words 10,000 bugs is 1% of the effort MS will spend on Vista.
The bad news is that while 50 man-years is small, it is still large for an organization like Ubuntu which I estimate has the equivalent of 30 full-time devs. In addition, many of their bugs exist in other codebases manned by volunteers.
How and when those bugs get fixed, or whether another distro will get there first, I’ll leave as an exercise for the reader, but I do feel that the big guys should jump in a bit and help out. IBM claims to be a big supporter of Linux, but their employees all run Windows, which shows you what they think about Linux on the desktop. It is a shame because IBM could lose 50 employees under the cushions of their couch.
Linux on the desktop is very, very close and can happen as soon as we want it to.
Update: Only 21 Diggs–Digg it?
Update 2: The 10,000 bugs number is just a back of the envelope calculation. I looked at the Ubuntu bug database, but also at the kernel, Gnome, and OpenOffice bug databases as well. I looked at Debian’s ‘Release-Critical’ bugs, but think I could ship with all of them–there may be wisdom with Ubuntu just snapshotting Debian-unstable to start a new release.
I actually think fixing just the right 1,000 bugs would move it forward a huge amount for me at least, but I still imagine that running Ubuntu on 100 million different desktops around the world would bring out more issues with a much wider variety of hardware, software, .DOC files, other writing scripts, etc.
Another approach: I think I could file 50 Ubuntu bugs, yet I don’t believe that my testing is 1/20th of the Ubuntu codebase but I do imagine that it is at least 1/200th.
When I realized that Ubuntu is just getting going, that many people don’t file bugs, and that 10,000 bugs is a relatively small number, I quit work on estimating. If Ubuntu could fix the right 10,000 bugs, it would be a superb system indeed.
Update 3: I just posted an Open Letter to the new Debian Project Leader about the ‘complicated’ relationship between Debian and Ubuntu.