That post about the pledge I’ve been meaning to do

by davidnielsen

The following is bound to be long… consider yourself warned.

Some amongst my readers might know of the pledge drive for the makers of an open source driver implementation for nvidia cards on pledgebank. What not so many might know is that I started it and what follows is a story of the motivation, history and the lessons I learned on the way.

Being a long term user of Free Software and Linux in it’s many forms. I’ve been using Linux as my only desktop machine 8 years ago and as such I feel I might have a thing or two reminding me of the amazing progress and innovation on the Linux desktop over that time. With that in mind, when it was announced that a goal for Ubuntu’ Feisty Fawn release would be to enable users to have a better and blinger desktop experience, one could imagine how trilled and at the same time saddened to see this move. On one hand I can personally say that I enjoy the desktop effects I have thanks to Compiz and while this technology is not perfect yet, I would like it in the hands of as many as possible. On the other hand, their choice of implementation involved a solution for people to use their hardware, a lofty goal at any rate, which basically will have to rely on proprietary drivers. Just a few of the problems this creates is locking people to platforms the vendor supports, this means if I’m up to date on the nvidia driver, that a PPC target for Ubuntu will automatically loose out and the market probably isn’t there for nvidia to develop it. It also makes debugging harder since the module is largely a black box in the system, a big problem here is that we can’t vet it for security but there are other issues as well.

So I thought, since there are a lot of vocal people in that community for keeping the system clear of this being the default setting. Might it be possible to rally them for a purpose, aim in one direction, see if people are willing to put their money where their mouths are?

So I decided that I would test the community, what if we pledged to collect 10.000$ to give to a project as a no strings attached donation, as a thank you for taking on a hard task like writing a graphics driver. But what project would be the target?

When people want proprietary drivers, by and large they mean they want functionality – in this situation the need for functionality, a noble goal in itself, would have required introducing a potential security hole, limited deployment and made lots of jobs harder, all thanks to the fun that is proprietary drivers.

Now, I’ve been here a while, I know the pain of having non-functional hardware. Over the years I’ve had some hardware that required a bit of work or a binary driver, the one thing this has taught me is that no matter how much research you do before buying new hardware, remember these 5 words: “This does support Linux right?”. Not so much because I didn’t know, I sometimes spends hours or days selecting the best possible replacement og upgrade so I generally know that I’m only getting supported stuff, but the more people in general hear that type of question the more leverage it gets – it is thus more likely that if a significant portion of your customers ask about Linux support, you as a reseller will take the question up the ladder. However given the problems and potential license violations with proprietary drivers we should look at what we need support to and how we can get it on our terms. There are 3 main areas where we do not have top of the line support which are of interest to a desktop deployment: accelerated 3d for ATI cards above the r300 make, accelerated 3d for Nvidia and wifi in general.

That seems like comparatively small area, clearly something we should be able to supply if we decide to, even if it’s a big task. Since I know people are working hard on the wifi issue and the fact that older ATI cards are well supported using a free driver that leaves nvidia users with the largest possible gain in users who could be run a blingy X using free, secure and portable drivers.

It just so happens that there is a project call Nouveau which aims to provide just such a driver. Since this was mainly a first attempt to see if we could do something like this, I didn’t contact the project thinking that it would be nicer in case we make the pledge to be able to hand them an concrete offer of at least 10.000$ to use as they saw fit than to start out by going them to see if they wanted free money – a slight mistake on my part. They could buy hardware for testing or maybe some paid development, for all I care they could buy “free” beer with it. This would be a thank you for doing this thing, we know it’s hard work, not a charter to say “Here’s 10 grand, will you please develop us a driver”. Mainly because for a project this size giving it support to drive the early development so they might build the foundation in my opinion would work better than chartering them to bring us a functional driver. A functional driver is likely to take longer and require considerable manpower, by showing support now we encourage the road to a free, stable driver could be paved.

Since pledgebank requires pledges to have deadline and because I wanted this to have a pretty fast return so that people who were willing to pledge won’t sit in a queue for years and the developers hopefully get a gift in hand within a reasonable period of time. Thus I decided that the pledge would run from the 14th of November 2006 till 8th of February. The deadline date was selected because that was at the time, and likely still is, the Ubuntu Feisty feature freeze, in the hope that in the same time it was decided to solve the functionality issue their way, we would be able to take the first step towards solving it in an open and free manner.

I decided that I would set up one ground rule: I would only do things to promote this any member of our community could do, since my blog gets around on a few planets, using it for teling people about this project would seem a bit of an unfair leverage so I avoided that. Instead I made a post on the Ubuntu Forums, being a regular there using only my meager leverage in that community to tell people about the idea. Using stats given on those forums I had figured out that a 1000 pledges meant I had to reach less than 1% of their active userbase. This number encouraged me, suddenly 1000 people seems like far less. I also posted on a smaller forum and told a friend about the project and convinced him to sign up. This was all I did to inform people aside keeping on top of both the threads I started.

In the first few days the Ubuntu community provided a good 50 people and it looked like people were doing good compaigning and advocay. Then the small forum put the pledge on Digg.com and in a matter of hours there were +200 people signed up. The project has also been mentioned on the Linux Action Show!.

What can be learned? First up getting a 1000 people to give 10$ is fully possible though in this case unlikely and after extending an apology to the Nouveau developers for using their project as the guinea pig, it was also revealed that money was not especially needed. Though who would say no if kind users come to you with a gift of cash?

Another thing that can be learned is that we have a failure of the imagination when we come up with solutions like the one presented to solve the lack of functionality originally. We should look at what we are trying to do and evaluate what the effort level would be for all possible approaches to see what can be done. Noted developer and all round nice guy Micro Müller recently did a survey to establish what hardware and driver combinations people used to display their GNOME desktop: Roughly 50% of the users were on Nvidia cards and the proprietary drivers. An important thing however is to note that the users of the open X.org ATI driver not only is the second biggest piece of the pie but it also outweights users of ATIs own drivers. This means that people are likely to pick free drivers when given the chance. By questioning users we find that they like that there’s zero work involved, the fact that the code is open and as such there’s a bit of trust by disclosure and many users also want to run their hardware in configurations that might not be supported by their vendor supplied driver. So the biggest bang for our buck right now is to work on getting a free driver for the nvidia cards, it’s a 50% share of our desktop we get on secure free drivers and that we can enable all this nice eye candy for with zero work.

This process is likely to take a while, I hate to speculate but if history is any lesson it might just be sooner than we expect. If 2 years ago I would have said that today we would be seriously implementing a laptop with entirely open specs and implementation, from the BIOS and up to the GUI, with wireless mesh network, innovative new technology developed especially for and with the community on all levels. Or that we would see the explosion of powerful tools in so many areas, did anyone believe two years ago that we would have a fully featured audio editing tool with a usable interface that tops market leaders like GarageBand or that there might be a serious chance we get a fully functional MMORPG, one of the most popular and addictive forms of gaming, under the GPL?

I doubt it’s a unfair assumption to make that if we nurish our dedication to providing the best possible solution to ensure that in 2 years or less, the dream that at least this remaining gap might be filled – maybe not a full replacement but good enough to do some work reliably.

I guess in the time between now and this not so distance hopeful Utopia, one might consider a deployment of the few proprietary driver that would be needed. This would naturally mean relying on a legal definition of derivative work that would while not be universially accepted at least is a enough of a grey area for this to proceed. I wouldn’t like to see this personally, at least not unless a strong commitment to open drivers was made.

Say on the day this was announced, the Ubuntu foundation issued a statement something along the lines of this: “In the interst of showing Ubuntus foundation in and support of open drivers, we will to give the first person or team who can present a well design, legally clean implemented/reverse engineered, open source driver for the nvidia card series that can start up the GNOME desktop with DRI enabled on at least on machine within the feature freeze for Feisty+1, the sum of 10.000$.” Maybe then I wouldn’t have been inspired to take this journey?