I had everything working on my Lenovo U350 on 10.04. I figured I should upgrade to 10.10 because, well, things could only get better. Right? No. 10.10 completely broke everything. The graphics wouldn't work at first, and after I fixed them (with a simple but frustrating to find fix) they were jerky (there was a fix for that too), the internal mic died, the brightness keys became decoration, etc. I had to waste hours to reinstall 10.04 and fix some 10.04 errors.
I was telling my friend about the experience, who uses a Mac by the way, and he said, "Don't they check for hardware compatibility and hardware-specific fixes for these things when you upgrade?"
They do not. But why not? Much more important than having an extra monochrome indicator applet icon is to have a computer run Ubuntu in the first place. A user will never see the indicator applet, or even system tray for that matter, if he or she cannot get X to start without knowing a lot about Linux already. Even people who are familiar with Linux will have some difficulty hunting down information necessary to fix their system.
Two obvious and easy alternate solutions to this problem present themselves.
- Create a collection of relatively simple post-install scripts that fix common issues based on detected hardware. For example, if the script matches the output of lspci with the Lenovo U350 sound card, then execute
sudo apt-add-repository ppa:ubuntu-audio-dev/ppa && sudo apt-get update && sudo apt-get install linux-alsa-driver-modules-$(uname -r)
in order to prevent sound coming out from the speakers when headphones are plugged in (what an annoying bug).
Another example is the installation of Broadcom wireless drivers. Some BCM43xx chipsets do not work well with open source drivers. In my case, they do not work at all. I had to wade through that horrible Ubuntu "developer wiki" (read the heading page, the wiki isn't meant for finding help: https://wiki.ubuntu.com/) to figure out that I had to install three packages already on the CD. This wasted me hours, because there were many possible configurations and I wasn't sure which one to use so I had to try several (with steps including downloading data on another computer and transferring to this one because I had no Internet access). What should have happened is that Ubuntu should have figured out which driver I need (this is well documented, see http://forums.fedoraforum.org/showthread.php?t=239922, which has a freaking flow-chard of what to use), and then told me:
"We need to use non-free drivers, or else you won't have Internet. Clicking this button will install three packages on the CD for you, because you shouldn't dig through random files and documentation to figure out which. If this doesn't work, you'll be offered to revert to your previous configuration."
Finally, a lot of these common bugs (that you can expect simply by doing lspci and uname -r to match hardware and kernel) are fixable by adding just one option to one text file in /etc/something.conf. So a fix of the form
cat option snd-hda-intel model="ideapad" >> /etc/alsa.conf
(or whatever) can save the user a lot of time, nerves and (from a business perspective, most importantly) can make the user NOT switch away from Ubuntu.
- If these scripts are too much, then at least start a well organized hardware wiki that the users are informed about with a popup on the install disc
"Would you like to check hardware a compatibility to fix common issues?"
My point is, every time a user meets annoying bugs like sound not working or microphone not working or other hardware bugs, he or she will quit Linux and never come back. Linux desktop needs a bigger userbase to become better, more stable, and to start seeing more software ported to Linux. God forbid games, or something.
These bugs are often discovered in bug reports and fixed very quickly. If the developers, and bug-squashers had a standardized place to go to in order to implement a fix or document how to fix the bug for everybody with this bug, Ubuntu would benefit greatly.
All it takes is for a skilled programmer to create a script template that compares (as I said) the output of lspci and uname -r and then executes some code (with notification popups) based on this output AND for others (maybe only bug-fixers as a start) to know about this easily-accessible website and start adding information.
For this purpose, I am starting an Ubuntu Branstorm thread to help me get this started (with help of said skilled programmers ), If you feel like you can help out, please do so! I have limited time, but would be willing to do a little bit on this!
Related Ubuntu Brainstorm threads: