Slippery Slopes
One of the most interesting thing about slippery slopes is how you never seem to be standing at the top of them, looking down. The slope seems fine at the top, and it’s only once you start down it that you realise this could end up with some broken limbs.
When Ubuntu was formed, Debian were having a debate about how to treat GFDL documentation. It was their opinion that the GFDL was inherently non-free, and they’ve since taken steps to remove all such licensed documentation from their main distribution. We took a more pragmatic approach, and decided that it maintained the spirit of freedom, and thus we continue to this day to ship that documentation in our main distribution.
A similar discussion resulted in the handling of data files such as graphics, icons, fonts, etc. We decided that such things didn’t necessarily need to ship with corresponding source code, as frequently they don’t have any such thing or when they do, it’s just as easy to modify the data file directly.
The slope didn’t seem at all slippery back then.
Then came the issue of firmware, binary blobs in the kernel which are uploaded into a flash (or similar) chip in the hardware. Could we distribute these? On one hand, these blobs have always existed, they just used to be in ROM in the hardware; the move to firmware doesn’t change that. On the other hand, they’re machine code and if we had the source, we could improve the hardware as well.
And what if we didn’t distribute them? Our users would be stuck without being able to use some fairly (to them) critical parts of their computer.
In the end, the argument that firmware isn’t inherently any less free on the disk than in the ROM won, so we opted to continue to ship it.
Perhaps that slope is a bit slippery, but we’ve got a good foothold.
Of course, at that point somebody notices the binary “Hardware Access Layer” in the Atheros WiFi card driver. It’s not firmware, it’s run on the host processor, and is separate to “comply with FCC law”. (The ipw3495 driver has a binary daemon that allegedly performs the same legal function).
Again, if we don’t distribute that, a large section of laptop users will not be able to use their WiFi cards. A compromise was reached; because the driver is necessary we’d ship it, but in a special restricted component that makes it absolutely clear that it’s not completely free. Users could choose to remove that component and any packages from it, to keep their system untainted.
Ok, foothold wasn’t as strong as we thought; tumbled a bit, but we’re definitely on solid ground now!
That’s what we thought, anyway. Unfortunately it seems that there’s a point a little bit lower down the slope which has a fantastic vista. The views from there are just incredible, people are saying, much prettier than where we are now. The only trouble is that we’re not sure there’s a foothold down there, if we try for the better view, we could end up broken at the bottom.
I’m talking, of course, about the NVIDIA binary X driver. (Some reports/blogs/etc. indicate we’re also considering the ATI fglrx driver, this isn’t true — that driver doesn’t support AIGLX, so it’s not being considered.)
We’ve shipped this driver in our restricted section, but not enabled it by default. It’s been there for people who want it to switch on, if they know how, but the default driver has always been the free (albeit obfuscated) one in the Xorg distribution.
The problem is that users do not need this driver, they can get decent enough 2D graphics support from the free(ish) driver. In the long term, they may even get decent 3D graphics support from the nouveau driver effort.
What’s the problem then? Simple, other operating systems use the 3D GPU to make the desktop seriously beautiful. If Linux doesn’t catch up and do the same, then we’ll be considered obsolete again.
And just to drive the point home, some of our Linux friends shipped similar support in their last releases. They don’t enable the NVIDIA binary driver, but this means that a large percentage of their user base can’t get the bling without manual hackery.
We needed a way to catch up with both the commerical operating systems and other Linux distributions; we have a policy of not doing our own software development, but only packaging what others have developed, so the only way for us to get ahead was to package something that others wouldn’t.
Which brings us back to the NVIDIA binary driver. If we install that by default, we’ll be bringing a 3D desktop to more people. And we’ll gain a step ahead of the other distributions.
Will our users care? To be brutally honest, I think the answer is no! In fact, I suspect our users will largely love us for this decision. Most probably already install the NVIDIA driver anyway, because they think it’s better, or because (sadly, like me) they have a card combination not supported by the free one.
Will this make any difference to the effort to get NVIDIA to free up the driver, or at least the specs? Sorry, but to be honest again, I don’t think it’ll make one little difference. Linux distributions have been refusing to install it for years, and yet NVIDIA haven’t budged in their position.
Perhaps a new tactic is required. Maybe if we do install it, we’ll be more likely to be chosen by OEMs as we can actually support the hardware they install. Then later, we may be able to actually affect their decision as to what hardware they install, and maybe then NVIDIA will pay attention.
Will this change the perception of Ubuntu in the Linux developer community? I’m not sure about this one, I think that those who already feel strongly about the distribution of binary drivers are probably already pretty grumpy at us distributing things like the Atheros and ipw3495 drivers. I suspect this will change the opinion of a lot of people who’ve been on the fence until now, probably equal in both directions.
Will we be able to sleep at night?
Despite all of the above, personally I still think that installing and using the nvidia driver by default, when the nv driver would do, is the wrong decision.
If the nv driver doesn’t work, I’m willing to accept the nvidia driver being used; provided that there’s some message informing the user what’s happened, why it has happened, and which alternate graphics cards they can purchase if they aren’t willing to accept a non-free binary driver.
If the nv driver is good enough for 2D, I would prefer that we instead disabled the 3D desktop effects for this group of users (by default). A similar message could explain why this is disabled, again which alternate graphics cards provide this by default, but also provide a button for the user to enable it if they wish. While we should make the correct moral decision for the defaults, we shouldn’t stand in the way of users who wish to make a different decision for themselves.
Later as the nouveau driver becomes stable, we may be able to activate 3D support for nvidia users by default.
I think that preserves our current foothold, we’d only activate it if there is no free alternative. Where there is, we’d be educating users about why they may wish to consider alternatives to NVIDIA in future, while at the same time not getting too much in their way if they want to see the better view down the slope.
Unfortunately it’s not my decision, and I suspect that the lure of the bling will win out. With any luck, we’ll find a foothold there, and the fallout of doing so won’t be too bad. I’m just worried that once we compromise on this, we’ll start compromising on other things … would we replace Firefox with a non-free web browser that rendered web pages “better”?
The slippery slope only gets steeper from here on …






Very well written…. You seemed to have covered much of the history and surrounding issues.
One issue that you didn’t touch that I’ve heard (and would be very interested to hear what people inside ubuntu thinks about) is the legal problems this might have for you.
All binary modules shipped apparently gets around the GPL requirements by not having producesd the code for linux from the beginning (not a derived work), and not linking it (themselves) to the linux kernel meaning they don’t need to think about the distribution requirements in the GPL. Instead they let the user link it together and it then becomes a derived work. If the user would distrubute their newly linked kernel (incl. modules) they would violate the GPL… Nvidia didn’t distribute the derived work, they just provides the user with the tools to let the user shoot themselves in the foot.
(Short: the two distributed separately is no problem, it’s only a problem when they are distributed together since they have conflicting licenses w.r.t. distribution.)
Now what happens if a distribution like Ubuntu automatically links inte the binary modules and distributes them? Wouldn’t this be a GPL violation?
IANAL and I din’t really care what you do…. It would still be interesting to hear the ubuntu opinion on this particular issue.
(And for extra bonus, what impact do you think this will have on developers wanting to work on Ubuntu? Mark Shuttleworth recently tried to lure OpenSuse developers to Ubuntu based on the Novell/Microsoft deal which IMHO very vagely _might_ have violated the GPL or the spirit of free software… This issue with binary only modules is still not clearly a violation in legal terms, but IMHO *alot* more clear then whatever Novell/MS did and certainly alot more in violation of the free software spirit….)
“[W]e have a policy of not doing our own software development, but only packaging what others have developed”
This clearly isn’t true, as many features in Ubuntu such as casper, ubiquity, upstart, apport, update-manager etc. were NIH’d by Canonical.
My point is, if the SABDFL is that determined that bling is the future, then perhaps funding of the development of nouveau would be a wise investment, if we have abandoned all hope of getting the graphics card companies to open up their drivers.
But either way, many new users are converted to Linux by seeing the bling being demo’s, but go right back when they get stuck in a maze of unofficial and hackish HOW-TOs proliferated all over the place. No matter what the solution is, pretending that people using binary-only drivers is OK, as long as we make them jump through obfuscated hoops clearly is no solution at all.
Well written and concise. Of course there is the alternative of simply adding 1 extra screen to the installer that says “Your card is capable of using our 3d desktop system. To do this we need to install a proprietary (non-free as in speech) driver. Do you wish to enable this facility?” with yes and no tabs. That keeps the free mongers happy as it isn’t installed by default but keeps the uses happy by installing the nvidia package and 3d desktop stuff at install.
You asked:
> Will this make any difference to the effort to get NVIDIA to free up the driver, or at least the specs? Sorry, but to be honest again, I don’t think it’ll make one little difference. Linux distributions have been refusing to install it for years, and yet NVIDIA haven’t budged in their position.
A lot of people seem to think this way. I wonder if they said the same thing about Sun freeing Java…
I like your proposed solution Scott, it should be carefully considered.
And while I would certainly second mc’s comment about investing in the open-source drivers (nouveau) I suspect that there would be some legal worries if Canoncial were to directly finance the reverse engineering of nvidia’s cards.
I 100% agree with you. Why am I doing a _lot_ of Ubuntu advocacy, to the point of leading the Belgian locoteam at many fairs, coming to Mountain View at my own expense,…? Because I appreciate how Ubuntu keeps seeking the delicate balance between software freedom and pragmatism. I believe in that as the way forward.
A short note on 3d bling first. The Belgian locoteam mainly targets users that only need to accomplish the 80% most common tasks on their computers. None of these absolutely need 3d bling.
Now to the core of the thing…
We probably all agree that we need to force the user to make an informed choice between well-supported freedom and less or unsupported non-freedom all around the system. We also need to make it much easier for users to vote with their wallets.
Some ideas:
* The installer should force the user to make a well informed choice. It should suggest well known supported free hardware (e.g. ralink wifi) and ways to buy it. Put pressure on vendors by making it really easy for the user to send them a copy of their receipt for freedom hardware. Referral sales might also result in some pocket money to fund reverse engineering specs.
* The package manager should label non-free components more clearly. Think red color & warning sign in package description.
* Config menus should label non-free packages more clearly. Think different color & warning signs for proprietary nvidia driver config tool.
* Printing dialogs and scanning programs should include a warning about relying on non-free drivers, with links maybe to suggested supported hardware.
* Bug reports should by default contain all enabled non-free software running on the reporter’s machine, and inform the reporter why.
So many things that can be done on a development level!
Hi Scott, I don’t agree with you about binary blobs being the same whether they’re built in into your firmware or whether they are distributed with the operating system. If they’re included with Ubuntu, then it means that each time I’m giving away an Ubuntu disc, that I’m distributing non-free software: not cool. If the user have the firmware built in, it means that I don’t have to distribute someone elses proprietary code.
Also, I don’t think Ubuntu /needs/ bling to survive. It’s considered widely the most popular distribution used by end-users and Linux enthusiasts. It’s also #1 on the distrowatch charts, which means that it generates huge interest without any unnecassary bling. Saying that Ubuntu needs bling is like saying that Ubuntu is useless if it doesn’t play mp3’s out of the box, or if it doesn’t support WPA. It will remain a fantastic system, with its shortcommings and all.
my 2c, thanks for your great work on Ubuntu
> would we replace Firefox with a non-free web browser
I hate to break it to you, but Mark Shuttleworth has already stated[1] that the Feisty Firefox package will include the “official” artwork. The official artwork is not available under an open source license; it has a strict copyright. You can verify this by going to “about:license” in Firefox, or reading the license in the source code itself[2].
Note that the “non-open-source-ness” has nothing to do with their trademark policy (which may be a practical problem, but not a legal one). All the files in the other-licenses/branding/firefox directory are under a strict copyright. Feisty will be shipping these strictly-copyrighted files in the Firefox package. That means the package will not be open source. Which means the package should be moved into the “restricted” or “multiverse” repository — probably “restricted”, if Canonical is going to continue shipping it as the default browser.
[1] http://www.markshuttleworth.com/archives/79
[2] http://lxr.mozilla.org/mozilla1.8/source/other-licenses/branding/firefox/LICENSE
Well the slope is slippery for a reason. I know people with 1600×1200 screens who can’t get that resolution without using the binary nvidia driver. I know someone whose nvidia card fan will sound like a jet engine unless the binary driver is installed. I know people who can’t use their dual head screens without the nvidia binary driver. It can be argued that in these cases the nv driver doesn’t work. If ubuntu is going to ship with the driver on by default I guess I will point these people towards ubuntu and won’t look back.
My take is that I prefer free/open source drivers in the box and having to manually enable the drivers as it indicates that I can’t go to ubuntu for support with problems arising from the binary driver (my binary driver problems are between me and the binary driver vendor). If you are enabling the drivers out of the box then ubuntu must take responsibility for the problems that arise from them. I don’t know what your kernel devs are going to think about that but that is the extra burden you accept for happier users.
Hopefully nvidia would respond to this step and provide engineers with nvidia addresses to look at (reply and fix!) nvidia related bugs in launchpad.
Of course if nvidia are being invited to the party it seems unfair to leave out other binary driver vendors…
So long as responsibility is being accepted for bugs arising from binary drivers shipped by default (and those bugs are fixed) it is hard to argue with ubuntu’s stance. It would be interesting to see if that will lead to ubuntu pushing things like a stable api in the kernel (or some glue shim to try and achieve the same results).
Scott,
Great post, I appreciate your input on these topics. If you want to hear my take on this situation, please read these posts:
[Ubuntu to become even easier to use!](http://useopensource.blogspot.com/2006/11/ubuntu-to-become-even-easier-to-use_14.html)
[Why I support the use of non-free software in Linux](http://useopensource.blogspot.com/2006/11/why-i-support-use-of-non-free-software.html)
[Why do we believe in open source software?](http://useopensource.blogspot.com/2006/11/why-do-we-believe-in-open-source.html)
> Very well written…. You seemed to have covered much of the history and surrounding issues.
disagree. he just describet the NVidia use POV. This about the same as complaining why ones Zune is not properly working on Ubuntu.
If you decide against free drivers when you buy hardware, its logigal that you have a harder time in getting it to work. (i.e. having to install the nvidia driver manually)
You could have chosen an Ati <=X800 or Intel onboard instead.
Those two together make the majority on the market btw.
So you are going to sacrifice freedom just to make some NVidia users happy…
(comprehensible, since you are one yourself)
Hrm. This ties back to a very different issue, Scott- what we do to advertise our Freedom. Arguably the top of the slope was the use of ‘open source’ over ‘free software’, really. Putting a big warning in the installer about nvidia, at this point, is going to get a lot of users saying ‘hrm? non-free? I don’t pay for it, so how is it not free?’ None of the three big desktop distro community players (ubuntu, fedora, opensuse) play up Freedom on their homepages, and I’m pretty sure none discuss it in their installers. So it isn’t clear to me how much warning about non-libre software will actually help.
To put it another way- there are two axes here- one is how much non-free software is included in the distro; the other is how actively we push to make new users aware of the value of libre. In the past, we’ve mostly been fairly happy to downplay *advertising* libre as long as the software itself was libre- I think we mostly figured that people would come around once they started using it. As we increase the amount of non-libre or dubiously-libre software, though, we may have to revisit that decision, and more actively promote libre to make up for the unfortunate compromises we’re making elsewhere. I’m not sure how to make that balance, though.
“We needed a way to catch up with both the commerical operating systems and other Linux distributions; we have a policy of not doing our own software development, but only packaging what others have developed, so the only way for us to get ahead was to package something that others wouldn’t.”
You think Linux would be as good today if the commercial distributions weren’t doing any develoment ?
Is Ubuntu the Microsoft of Linux ? ( cf QDOS and Bill Gates. )
What will you do if Novell dies ? You included F-Spot and tomboy in your distribution. Would you pay the Mono developers as Novell is doing today ?
Will you pay the guy that did so much work for the x86-64 platform ? will you pay Greg Kroah-Hartman ?
Mark Shuttleworth making fun of Novell sounds so bad in the mouth of someone who’s not really working upstream, who’s draining the blood of debian and who doesn’t care about the proprietary drivers issue.
The slippery slope cliche “has this insidious character of making the speaker look like they hold a non black-and-white moral world view, while effectively reducing moral discussion to black and white.”
I write off arguments that make use of it.
Scott:
“I’m talking, of course, about the NVIDIA binary X driver. (Some reports/blogs/etc. indicate we’re also considering the ATI fglrx driver, this isn’t true – that driver doesn’t support AIGLX, so it’s not being considered.)”
But https://wiki.ubuntu.com/AcceleratedX states clearly: “Both NVIDIA and ATI proprietary drivers will be installed by default, on Ubuntu Feisty. That does NOT mean they will be enabled for all video boards, but, instead, they will be enabled on a per-board case, as explained below”
Please explain, I am now very confused. ?
See the bullet point a little below:
* Official ATI representatives state the ATI proprietary doesn’t supports Composite, and thus, this driver will only be enabled by default for users whose video boards are not supported by the open source ‘ati’ video driver. For these users, 3D acceleration will be supported, but Composite will be explicitly disabled in the X.Org configuration file
I don’t believe that enabling a non-free driver where there’s no free alternative is a change in our policy, so this can be ignored.
As long as Ubuntu is not violating any licenses, we could say there is not a problem. So we might need to have someone like Mr Moglen come over.
The problem is so many people blog about this, leaving comments all over the place saying it is either a shame and a violation of at least the spirit of the GPL, or a necessity in order for desktop Linux to ever gain substantial marketshare.
So what we need, really, is not more people like me who could only say IANAL, but some genuine expertise on the GPL.
Personally, I don’t use any blobs for graphics, I just want a stable system, preferable free software. I want to pay for it if I see real value for money. And I have to admit that all sorts of codecs, mp3, DVD you name it are having a great time on my HDD.
But for some reason, the slope you described just doesn’t feel good. Free software, also called open source, was meant to be fixable by the user. Now if you have this nVidia blob, and you do happen to get a kernel panic and stuff crashes, there’s no way you can understand what’s really going on.
So people should not get pampered too much, I think. Let them choose the right hardware (Apple users do!), let them use open source drivers, and if they really want, well give them the blob. But offering the blob in an easy way and saying in a sidenote “this blob might hurt you, we couldn’t tell”, that’s not really my idea of a quality distribution.
> Unfortunately it’s not my decision, and I suspect that the lure of the bling will win out. With any luck, we’ll find a foothold there, and the fallout of doing so won’t be too bad. I’m just worried that once we compromise on this, we’ll start compromising on other things
It might not be your decision alone, but voicing your concerns will definitely be a strong signal in the Ubuntu community, as for example Mako’s post.
I have posted this on some blogs discussing the topic, as a member of a local Ubuntu user group, I don’t see bling having more importance than freedom. Most people are normal users and yet they don’t have a problem to do a little work to get their bling going, if that means not to sacrifice some core values. Make this process as smooth as possible and most users will love you.
Thanks for the interesting post!
The problem of this slippery slope is that even if it wasn’t slippy, it’s still compromises and compromission.
It’s *not* by doing compromises that free software reached the point where it is today, and I think it is a bad idea to start now.
“slippery slope” is properly considered [a fallacy](http://www.nizkor.org/features/fallacies/slippery-slope.html). What you have described is not a slippery slope, but rather a series of considered decisions. You disagreement with some of those decisions is not validated simply by labeling them a slippery slope.