BinaryDriverEducation

Revision 56 as of 2007-02-23 21:28:41

Clear message

Summary

We are installing non-Free drivers by default, but this situation causes both support problems in the short term and viability problems in the long term. Therefore we need to educate users about the problem, encouraging them to avoid hardware that requires such drivers. This should be done using a notification bubble on login, an extra section in the Device Manager, and a CGI script on Ubuntu.com for providing up-to-date information about alternative hardware.

Rationale

A large proportion of people using Ubuntu -- including 70%-80% of people with new computers -- need a non-Free driver for reasonable performance from their graphics card, wireless card, or modem, because there is no Free driver available. This is a problem, because:

  • we are completely dependent on the hardware vendor for bug fixes, even for security bugs
  • security fixes need careful testing, because we don't know what changed in the update
  • we don't know the vendor's roadmap for updates
  • we don't have any service-level agreement
  • any problems with the "tainted" kernel [http://www.tux.org/lkml/#s1-18 will not get attention from upstream kernel developers].

In most cases there is alternative hardware with Free drivers available. In the case of graphics cards, Intel onboard cards are available, but their performance isn't as good (lagging behind the ATI/Nvidia cards), and they aren't available as separate components.

We have chosen to install non-Free drivers by default. This is a polarizing issue, because other distributors have made different choices — [http://wiki.debian.org/NvidiaGraphicsDrivers#head-406d3dad648f663d3a578addb21f289fd5daa658 Debian], [http://lwn.net/Articles/195351/ Fedora], and [http://lists.opensuse.org/opensuse-announce/2006-02/msg00003.html OpenSuse] do not install proprietary drivers by default — and because some see proprietary drivers as [http://ussg.iu.edu/hypermail/linux/kernel/0512.0/0972.html a threat to the future viability of Linux].

As long as Ubuntu does ship proprietary drivers in the short term, we should take steps to improve the situation in the long term. We believe the best way to do this is to convey the problem to people using Ubuntu — explaining why we distribute non-Free drivers at all, what the risks are, and what people can do to avoid such hardware in future.

Scope

To begin with, the notification should apply to modules provided in linux-restricted-modules:

  • video (fglrx, nvidia)
  • modems (fritz isdn/dsl modules, lt-modem)
  • wifi (ath_hal aka madwifi, contains a binary blob for FCC compliance — work has begun on a Free version, but nothing usable yet)
  • 3945 Intel wireless card, which has Free driver + binary blob (though this should be replaced by a Free version in Feisty)

Out of scope:

  • firmware (even upstream kernel hackers don't worry about that)
  • ndiswrapper (see "Future work")

  • what happens if a fully functional Free driver becomes available for hardware that formerly didn't have one (see [:AcceleratedX:AcceleratedX]).

Use cases

  • Danilo is a gamer who currently dual-boots Windows 2000. He upgrades his system every six months or so, and is interested in getting the best video performance possible.
  • Clara administers her own computer in a small accounting office, but will not have the budget to upgrade her computer any time soon. She does not want to be pestered about hardware problems.
  • Federico's work laptop was stolen at a conference. He bought a new one in a hurry, and didn't pay much attention to what Ubuntu said about proprietary drivers. A week later, he remembers that Ubuntu said something about the Device Manager, so he opens it out of curiosity.
  • Harriet had Ubuntu installed on her computer a couple of days ago, by a nephew who has now gone on a camping holiday. Harriet does not know what a "driver" is.

Design

Startup notification

When you log in to Ubuntu on a computer where non-Free drivers are required for acceptable performance:

  • If you are not an administrator, you likely can do nothing about the hardware situation, so nothing special should happen.
  • If you are an administrator who is logging in to an Ubuntu installation for the first time, it is important for your first impression to be of an elegant uncluttered system, so nothing special should happen.
  • If you are an administrator, and:
    • you are logging in to an Ubuntu installation for the second time, or

    • your hardware has changed such that this is the first time you are using a particular non-Free driver, or

    • you are using a live CD (we detect this by adding a switch --force-run and casper changes the /etc/xdg/autostart file to use this)
    Ubuntu should notify you about the problem with the non-Free drivers.

The notification should take the form of a notification bubble, which should read:

  • To make this computer’s ______ work properly, Ubuntu is using driver software that cannot be supported. To learn more, open the Device Manager.

    Open Device Manager

The first sentence should refer to "display", "modem", "wireless connection", or (if multiple devices have the problem) "hardware".

Device Manager notification

On a system using proprietary drivers, the Device Manager should have a "Proprietary Drivers" section above the "Computer" section. This section should be selected by default whenever the Device Manager is launched. Whenever it is selected, the main pane should explain the problem in this format:

  • To make this computer’s ______ work properly, Ubuntu is using driver software that cannot be supported. Because the software is proprietary, it cannot easily be changed to fix any future problems. Proprietary drivers in use:

    • foo (video card)
    • bar (wireless card)
    You can avoid this issue with your next computer, by choosing hardware from more cooperative manufacturers. ( More Information... )

Ubuntu.com site

Clicking "More Information..." should open your default Web browser to a page on ubuntu.com that:

  • explains the problem in general
  • describes the particular device (or devices) with the problem on your computer in particular
  • links to vendors of alternative hardware, if available
  • possibly links to an Ubuntu forum section for discussing the issue.

The page should be iteratively redesigned to be understandable, tactful, and non-confrontational.

To count the proportion of users using proprietary drivers without breaching people's privacy, the hardware database client should record and calculate the proportion of people using each proprietary driver (see also IncreaseHardwareDatabaseParticipation).

ubuntu.com should count the number of Ubuntu installations (not including live CD sessions) that access its information on each driver.

Implementation

Local code

A small pygtk program should be put in the user's session using /etc/xdg/autostart. Because this application is run in every session we may consider writing it in C to optimize for slower hardware and faster startup (this needs to be benchmarked). It will have a switch "--force-check" that will makes it always check. This will be used on the livecd (casper changes the autostart file).

For counting the number of times people click "More Information..." for each driver:

  • the URL is opened with an extra parameter indicating it was accessed from the Device Manager
  • ubuntu.com redirects from any URL containing the parameter to the same URL without the parameter, so that if the resulting page is bookmarked/e-mailed/etc, subsequent visits aren't counted
  • in a live CD session, Ubuntu opens the URL without the parameter.

The appropriate URL pattern and values should be finalized with the Ubuntu Web team during the Feisty cycle.

To tell whether the ATI or Nvidia package is being used, we should check /etc/X11/xorg.conf for not-commented-out "Driver 'nvidia/fglrx'". For the other drivers we should check /proc/modules.

Ubuntu.com code

Ubuntu.com should have a CGI that accepts one or more parameters identifying particular proprietary drivers, and returns the page containing information about those drivers.

  • Canonical support staff are writing whitepapers; Kurt von Finck's (mneptok's) first will be about the pitfalls of binary drivers. When done, this should be adapted for the overview section of the Web page.
  • A very simple database will be needed on ubuntu.com, to count (to the extent practical without unique IDs) how many unique visitors there were to pages about each driver.

Future work

  • We should extend this to detect use of ndiswrapper, for which Ubuntu will need to determine whether there is a Free equivalent to the Windows driver being used.

  • Implement for Kubuntu.

See also EthicalInfo, IssueNotificationServiceSpecification.

Alternative approaches

  • We considered using ubuntu.com to count the number of unique Ubuntu installations on which people accessed information on each driver:
    • Ubuntu would generate a UUID for the system
    • this ID would be included in the URL
    • ubuntu.com would redirect from any URL containing the ID parameter to the same URL without the ID, so that if the page was bookmarked/e-mailed/etc, visits from other computers wouldn't be counted
    • in a live CD session, Ubuntu would open the URL without any ID parameter.
    We decided not to do this, because people might not like Ubuntu giving their system a unique identifier.
  • We considered presenting the notification regularly but very infrequently (once every three months), but this approach was rejected.
  • Instead of checking at the session level for non-free modules, we could do it at the modprobe level. This would be better in reacting immediately to newly-connected hardware, but much more complicated to implement.

Comments

Considering graphics cards, >50% (ca. 65%?) of graphics chips sold in new computers are Intel graphics, which have completely Free drivers. So Intel dominates the market, and the newer chipsets, while not rocket speed, are completely capable of smooth Compiz operation etc. Additionally, ATI Radeon 7000 - 9800 and X300 - X800 cards have working 2D & 3D open source drivers, and with those cards fglrx should not be used by default (even though the open source drivers are not optimal in performance). Also NVIDIA cards have 3D drivers in [http://nouveau.freedesktop.org development].

  • LunaTick : If Ubuntu insists on installing proprietary drivers by default instead of making them easier to install, then the damage is largely done. In order for this spec to have any actual impact, it should make it easy for the user to revert to the open source drivers and accept the performance hit. Could we tell them the difference between the drivers (e.g. "The open source driver is unable to perform well in 3D applications", "Cannot connect to WPA networks" or "Does not work at all") and provide an option to use the open source driver instead. I agree that we need to encourage the purchase of hardware that supports open source but the other method to address this issue is to encourage the use of the open source drivers when they are good enough for the user. To just tell the user that they have done a bad thing without offering any solution but changing their hardware leaves them hanging...

  • timbobsteve: I think choice is great, as long as the user actually gets to choose. Automatically installing binary blob drivers by default is not really a choice. I personally think that during the installation procedure there should be a simple question, "Would you like to install binary drivers (non-Open Sourced Drivers) onto this system?", along with a simple Yes/No radio-button. I think that way the user is actually given the choice and users who believe in 100% OSS can choose no. By installing binary drivers by default the Ubuntu team is automatically denying users the ability to choose. While I personally have no problem using a binary driver on my system, others might. Linux is about choice, please give us that choice.
    • ColinWatson: I think this would be perfectly doable, and I'd be happy to roll it into Ubiquity under an "Advanced Options" button (which is needed for some other things in Feisty anyway). I'd like this to be included in this specification.

  • unlambda: It would be very helpful if there were an Ubuntu hardware compatibility matrix with information about binary vs. free drivers, as well as what level of support & performance to expect (alpha/beta/stable quality, how fast compared to the binary driver, etc). I was recently trying to build a new machine that I could run 100% F/L/OSS on, and I couldn't figure out without digging deep into an Xorg bugtracker that the new i965 chipset, though it had free drivers, was not ready for everyday use. This current proposal involves educating users who already have hardware with no free drivers; how about educating the users who are looking to purchase new hardware?

    • LiamMcDermott2: Agreed with unlambda, users should be empowered, informed, then given the options. They should be able to pick the proprietary option, and click a link to see alternative hardware with Free drivers. Personally I dislike the proposed prompting upon startup (or any of those Microsoft-like balloon effects). Popups are usually annoying and an unwelcome interruption. At least when installing the user is expecting to be prompted.

  • ErikPostma: This text is self-contradictory: in the Rationale, it says that 70-80% of the people with new computers will need a non-Free driver; in the first comment it says that more than 50% will be able to use a Free driver. [http://www.xbitlabs.com/news/video/display/20060731234259.html] seems to say that intel is at 40%. (For the record, the decision to ship binary drivers (video, wifi or otherwise) by default might very well turn me off Ubuntu entirely; I think it's an extremely bad decision.)

    • You didn't get it. The 70% was for graphics card + wifi + modem. I agree that people should have the choice for graphic cards, But this is clearly an other issue for wifi and modem. For some of them, there is simply no alternative to binary driver.
  • smurf: Maybe we should ask people to consider sending their hardware's manufacturer a nice nonconfrontational email, asking them to support an open-source driver. We have enough users by now that manufacturers might actually notice this.
    • ["Warbo"]: I like the thinking behind this, but sending emails might not be the best approach. Firstly, we should try to encourage the device manufacturers to join our community willingly, rather than force them to do something they don't want to do (yet), and also there would not be that many users which actually do it (and those that do might give COMPLETELY the wrong impression. For example, [http://www.defectivebydesign.org/ DefectiveByDesign's] phone campaigns seem like a good idea, but some people started hurling abuse at media company executives which just alienates them even more). I think a better approach would be to draw up a kind of perpetual petition and encourage users to sign it. That way, not much user interaction is involved (therefore more people might be willing to spend the 30 seconds or so it takes to sign it), the message is unfied, clear and well thought out, and it would serve as an incentive to say "why you should be open" rather than "I hate you for being closed". If companies are regularly contacted about the petition as it grows it would have the same kind of effect as individuals emailing, but instead of being a constant nuisance (like the Simpson's "Can we go to Mount Splashmore?") it is more of an update showing "look, even MORE people want you to do it now than last time we asked".

      • LunaTick : This is a great idea. A periodic "50 people now ask you to open your drivers" "100 people now ask you to open your drivers", with a website listing them all, would be far more effective than encouraging individuals to email. Perhaps we could drive this through Launchpad, or at least link it to Launchpad accounts. This way, manufacturers can be confident it is actually that many individuals but there aren't extra privacy issues. Then we can link to this petition site on the window alerting the user to the fact that they are using closed drivers.

      • Mhall119 : How about doing it all at install time in Ubiquity? If it finds hardware that needs proprietary drivers to run correctly, tell the user, ask them if they want to use the OSS or binary driver (default to binary), and give a checkbox if they want to have their name added to a list of people requesting the manufacturer open their driver. All this can be done on one screen.
      • Mhall119 : Of course, this should be made available to any distrobution who wants to be involved, the more people that sign on to the petition, the better.
  • I would like to see a page added to the Ubuntu Installer that explains the situation and lets the user choose if they want to install non free drivers or not, I don't understand how waiting until everything is installed before explaining what's going on is a good idea. - EricButler

  • MarcusDapp: How is the HW information collected through the "Ubuntu device database collection" actually used? I think it would make a lot of sense to make all this collected information available on a website where users can browse through and see which HW components work and which do not BEFORE they buy HW. In order for that to happen, we need to work on IncreaseHardwareDatabaseParticipation as well. Having such an "Ubuntu Hardware Compatibility" website that is regularly (with every 6m-release) updated when people upgrade or start using Ubuntu would be a very valuable tool to users and can also be used to inform vendors whenever their HW "just does not work"tm on Ubuntu. (By showing a counter of received HW specs, we would also get an indicator of how many Ubuntu users are out there, for free.)


Startup notification about binary-only drivers looks like a preferred choice in Ubuntu Forum poll http://ubuntuforums.org/showthread.php?t=297392 I voted for it too Smile :-)

Obviously, if binary drivers are the only option, just use it.

Display a warning like this, with a checkbox for later action:


Your system has ______ for which only binary drivers are available.

  • Remind me to learn more about the possible issues, and what I can do to help solving this problem


If we have also free drivers (even with <100% functionality), user should have a choice.

But I dislike notification message "To make this computer’s ______ work properly, Ubuntu is using driver software that cannot be supported"

It sounds like Ubuntu is wrong and inferior. Something more positive can be used:


Your system has ______ for which both free and binary drivers are available.

  • I prefer stability and good suport, use supported free drivers only
  • I need the best performance. If something goes wrong with binary drivers, I'll figure it out.

You can change drivers later using System/Administration/Device manager.

  • Remind me to learn more about the possible issues, and what I can do to help solving this problem


I either case hardware works properly - according to user's preferences.

During installation there is no time to pester user with more info, just make it work.

Later, when system is up and running, and user is happy, we have all the time to explain details as needed. So, if user asked to learn more, we can show her:

  • links to read about binary-only drivers:
    • support issues, security bugs may not get fixed, etc.
    • legal problems, kernel developers position on drivers
    • Need to pressure manufacturers to open drivers - to keep the freedom
    • Where to learn about compatibility issues for different devices

AND we can suggest what s/he can do about it if in "activist" mood:

  • contact manufacturer with a petition to open drivers.
  • donate to support development of free drivers for his devices

AND we can provide information and suggestions how to contact manufacturers in a way to make better impression, to help solving it:

  • write a polite letter - "jerk response" is not going to be forwarded to management, but deleted.
  • mention exact model you have (show them you know what you are doing)
  • mention what other competing products (more friendly to free software) you will consider next time.

Last point is the killer, of course Smile :-) That will definitely get their attention.

This "remind me about my hardware" application can be run once in a while ("remind me again in X weeks"), so user could keep pestering the manufacturer. I know I would if system could provide me all info. I am too busy to look it up (because "it just works"), but occasionally I might shoot an email to the manufacturer. No websites sending petitions, no sample letters. Each one is an original.

Peter Masiar


  • A warning on the botton of the screen at init, like "Using hardware not supported by Free drivers - See Device Manager" should catch the attention of some users.
    • Offering alternative ISOs without binary drivers should not solve the sittuation, but would show to the users that care a lot with Free sofware philosophy that he was not forgot. This kind of user i the one that does divulgation and report bugs, without then (us) thi distro would not be what it is today! -- EduardoEdcryptDeOliveiraPadoan

  • If we do install proprietary graphics drivers by default (which I am against), we should add to the notification a warning, that most of the kernel developers believe that these drivers are illegal - we can say something like "this is a legal grey zone - installing these drivers may get better functionality but is against the spirit of free software and may be illegal". --Rubinstein


The proposed popup is way too short for people to make a seriously informed decision and to look up further information in the device manager. It must at least contain a few hints, about why that driver software might be undesired or advisable for him/her personally. How about:

  • To make this computer’s ______ work properly(...) This driver software might be of lower quality than the "open source" variant, infrequently updated, or contain errors and even security problems. (...) To learn more, open the Device Manager...

Apart from that, please support users Freedom of choice. Default installation of binary drivers does in no way contribute to informed users and decisions. --mario