Linux on the desktop is important – and it continues to slide around in a sea of mess. Sure, there is a lot of optimism around Ubuntu’s future in Mir/Unity/Qt and Android/Chrome OS. But, the underlying components still are frustrating as ever.
Case in point: Ubuntu 12.04 to 13.04. I decided to make a big push to get everything over to 13.04 as 12.04 has become ancient, and incompatible with most newer systems to begin with. It may be the latest LTS release, and still “recommended” by Google for building Android – but those recommendations don’t even work anymore. Google’s own guides for compiling Android System have woes and aren’t even maintained based on the changes to 12.04 that have taken place.
Unfortunately, I found the vast majority of long-term 12.04 deployments failed, downright failed, to upgrade to 13.04. The problems varied, on UEFI systems I saw bootloader update errors, on BIOS systems I noticed package updates that failed to a degree that the resulting system was totally unusable.
Even the process of starting the upgrade was a mess. Do-release-upgrade is the command you’re supposed to issue, wait, hold that thought for a second. Most (if not all) 12.04 systems I’ve tested didn’t even get a notice that 13.04 came out. That I can forgive, perhaps its a bug that 12.04 could be patched via software update to fix. But, do-release-upgrade failed, too… and I’m far from alone in noticing that.
That left booting from a flash drive with Ubuntu 13.04 on it, and allowing Ubiquity to run the upgrade. The results weren’t impressive, and I’ve lost several hours this week renovating, wiping, restoring, reinstalling, and reconfiguring as fast as possible.
I’m patient, I realize with open source software you aren’t going to get WHQL certification on each driver. I’ve paid for that with my time in rolling back driver updates here and there that go awry. This, however, is about making sure that a system can boot and operate properly.
I think the best proposal I would make for improving Ubiquity, the Ubuntu installer, is a better failsafe initially for what to do when things don’t work. When OS X and Windows (NT-derived, think 2000/XP) were in their infancy, I’m talking early 2000s, they offered full reinstall options for how to triage a failed install. They would package up everything and stash it in a Windows.old or Previous Systems folder on Windows and Mac, respectively. Ubiquity really doesn’t give a lot of these options.
Your choices are to either wipe the drive (not ideal, considering data migration) and/or reinstall with file deletion (not ideal, since you don’t know what will get wiped). Why can’t Ubiquity offer an option to push everything into /Ubuntu-old and let me pick through it if the install fails? At least then I’m not tethering to an unstable flash drive installation, with no swap, and limited options for data migration — especially if a Wi-Fi driver or some other critical driver is absent.
Ubuntu’s installer now requires GPU acceleration, so if your Ubuntu install disc is missing GPU and Wi-Fi drivers… yeah, have fun migrating data with that.*
Don’t get me wrong, I really like Ubuntu. But these package-based approaches to Debian Linux really hurt the experience. I’d love to see Ubuntu take a more modular approach with apps (and, eventually, system components). After all, if you’re going to move away from X, why not move away from apt?
* Ubuntu 12.10 and up no longer include Unity 2D, the software-accelerated GNOME fork. Unity 3D will run with the software-accelerated VESA driver, but performance is painfully slow on the Live USB/CD disc, especially when doing anything outside of the Ubiquity installer (such as data recovery/migration, as exampled above).