Tiring of Lock-In

My main argument against owning an iPhone, despite their shininess, has been one of vendor lock-in. Once you have an iPhone, you are virtually compelled to also use iTunes, as it won’t sync with anything else. And that dictates your choice of operating system and primary media player, both of them towards software that I’d not otherwise pick (Windows or Mac over Linux, and iTunes over virtually anything else).

So I don’t have an iPhone. But I do have an Android phone, and even there the perceived lock-in is starting to irritate me. Android phones are at least indifferent to your choice of OS and media player, and do not pretend that in this day and age you still have a reason to sync your phone to your computer by a cable and dedicated software.

Even though I’m unlikely to abandon Google products — at least in the realms of web-based e-mail and calendaring, they’re almost certainly the best around — the fact that owning an Android handset would make it painful to do so if I wanted to is growing irritating. I’m for some reason tempted, next time my phone contract is up for renewal, to buy something like an unlocked N900, to forego shiny interfaces and thousands of apps in favour of a mediocre experience that at least doesn’t make my choices for me.

Perhaps this is leading my brain down dark, geeky alleyways, and I should go install Gentoo on my toaster or something to get it all out of my system.

All Bugs Are Shallow… Except This One

In his essay “The Cathedral and the Bazaar”, Eric S. Raymond coins the phrase “given enough eyeballs, all bugs are shallow” — meaning that with enough testers and enough programmers, it is possible to diagnose and fix any software bug.

So why can’t my computer suspend and resume properly?

The concept of ‘suspend’ — or ‘sleep’, or ‘standby’ — mode, whereby the computer dumps its internal state to RAM then enters a low-power state with its processor and other hardware turned off, is not new. The ACPI standard has been kicking around for 14 years now, a very long time compared to the life cycle of an operating system. These days, with laptop use on the rise, it’s a very common thing for users to want to do. And yet resuming from suspend is still hit-and-miss.

Why do I find it more reliable in Ubuntu than openSUSE for the same base kernel? Why does GNOME fare better than KDE? Why does my WiFi sometimes not come back? Why, with Microsoft’s million- if not billion-dollar operating system budgets, with Intel and AMD and nVidia’s decades’ of driver experience, is suspend and resume still frequently an issue even on Windows?

Only Apple, with its closed hardware / software ecosystem, seems to have cracked it.

I’d hate to think of that as the only way to a bug-free existence — I’m very fond of the idea of an open ecosystem where I can run whatever software I want on whatever hardware I want. But I’m worried. Is the range of (IBM-compatible, ACPI-supporting) hardware out there just too diverse and too widely different in its support for suspend-and-resume? Is it just infeasible for software to perfectly implement it on all devices?

Has hardware created the one software bug that, for any reasonable number of eyeballs, isn’t shallow?