This is a post from my blog, which I have long since stopped maintaining. The page has been preserved in case its content is of any interest. Please go back to the homepage to see the current contents of this site.
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?