Home
devinjh
The economics of LinuxTV driver development 
9th-Jun-2009 10:16 am
For the eighteen months or so, I've been actively contributing to the LinuxTV project. It all started with a personal need - I wanted the Hauppauge HVR-950 to work under the default Linux kernel so I could watch TV. This prompted me to learn the intricacies of the DVB subsystem, how devices such as this are designed, how ATSC worked, the relationships between demodulators, tuners, bridges, i2c, etc. I got the device working, and then wanted to leverage the time and knowledge gained to see if I could make other devices work. So I bought another device... And another... And the next thing you know I have a rather sizable collection of devices that now all work under Linux.

Hundreds of dollars spent. Hundreds of hours spent. Lots of devices working, even though I only needed one of them myself. I've convinced myself to buy devices that I failed to successfully debug in the field with users, since I didn't want to admit that all the time was wasted for nothing. To this day, I have never received a single dollar for any of this work.

Now, I'm more than happy to help the community with my time and energy. But the situation with the money has gotten out of control. More recently a couple of vendors have been kind enough to provide free sample hardware under the presumption that I would improve the driver support, which helps alot. However, I'm getting requests from people abroad now to help them with devices that use European broadcast protocols such as DVB-T (even sending me the hardware in some cases). I've reluctantly agreed to help, under the presumption that the devices would be relatively easy to get working (given a number of them were variants of pre-existing designs I've worked with).

This was a mistake.

I was able to bootstrap the driver support relatively quickly, but without a legitimate signal source to test with, debugging is a nightmare. I'm forced to have users in those countries test the support. Case in point: I've now exchanged 35 emails on the Terratec Cinergy T XS that a user sent me, and I still haven't gotten it to work. I don't know if there is a driver problem, user error, a lack of a reliable signal source, etc. If I had a DVB generator, I could probably get it to work in a couple of nights, iteratively debugging the various components. However, doing this over email with relatively inexperienced users in an unknown software environment is just not practical.

Now I am faced with a decision: do I continue to email back and forth with the users to continue trying to isolate the problem? Do I go out and spend $2000 to buy a DVB signal generator? Or do I just admit failure and send the hardware back to the users?

I cannot keep doing this while personally spending money buying stuff I don't personally have any user for. I'm not trying to be greedy. I am willing to donate my time, but my volunteering to make these devices work should not be *costing* me actual money.

There needs to be a new model.

If a user plugs in his tuner under Linux and it "just works", he never gives it a second though. Just like I never give a second thought to who wrote the Ethernet driver for my PC. The user has no incentive to pay after-the-fact for all the work that was done to make it work. Likewise, the manufacturers who make the tuners have no way of determining how many people are actually using them under Linux, so they have no incentive to pay for consulting services, even if it's just to cover the cost of test equipment.

The last time I needed a soldering iron, I had to take a subway 90 blocks uptown to City College to use the iron a very nice Electical Engineering student was nice enough to make available. I couldn't bring myself to spend eighty bucks to buy an iron to fix some random user's device.

Another fine example: When I was doing the HVR-950q analog support, and I spent a week debugging what ended up being a bug in the chip's i2c implementation. The only way I ultimately figured out the problem was when I spent $150 and bought a logic analyzer to look at the i2c bus waveform.

I was fine spending the 100 hours of my time to make analog support work on the 950q, even though I had no personal interest in analog support. But the fact that I spent $150 of my own money is something that just rubs me the wrong way.

Suggestions certainly welcome regarding how this problem can be dealt with.

Anyway, Devin's LinuxTV tip jar sits here, in case any of those people who have benefited from my work feel like contributing to future development...





Comments 
11th-Jun-2009 05:22 pm (UTC)
"Show Me The Money"

My first reaction was that you should be writing a blog or book for one of the tech websites (and getting paid for your experience / talent) as an offshoot of all this hard work these last few months.

My other thought was you *shouldn't* have to foot the bill on these peripheral projects- the ends should justify the means- as in you should profit monetarily or otherwise from your endeavors.

I like the blog / contributing author idea...
15th-Jun-2009 03:27 pm (UTC)
Anonymous
not to forget that you are one of those voters who were against a fully working opensource driver which was already available in favor of yourself. Selfish selfish... you're playing a wrong game in order to push yourself.

~Markus R.
15th-Jun-2009 03:40 pm (UTC)
Hello Markus,

Thank you for taking the time to offer your thoughts.

I think we have covered this at length already. Your driver was not merged because it was not a series of incremental patches against the in-kernel driver. It was an outright replacement, and while an improvement in some areas it was a regression in others from a maintainability standpoint.

I don't benefit financially from my work. In fact, I actually lose money as a result of my contributions to the community. I don't consider it selfish to try to recover some of those costs through donations by those who benefit from my work.

My goal is not for LinuxTV to make me wealthy - just for people to see improved product support without my having to spend money to accomplish that.

Devin
1st-Jul-2009 03:39 am (UTC) - Few ideas...
Anonymous
Hello, and THANK YOU very much for your efforts!

1) When working on devices where no signal is available, how about using SSH to log in remotely to the box where device is connected and signal such as DVB-T is present?

2) The key to getting vendors to pay, is to show number of users/devices sold because they work on Linux. Add a message to driver load, such as "Register and rate your device at http://devinjh.livejournal.com", as well on the V4L wiki for that device(s). Then when you can show 50 or 100 users registered, contact the vendor(s) and offer to continue supporting device, and maybe even future devices for a reasonable fee...?

3) http://en.wikipedia.org/wiki/Smolt_(Linux) may be of interest in determining numbers of devices in use

4) Create few wiki pages on V4L site, for devices you are offering to work on for a fee/donation. Make it clear how much is needed to be contributed for work to start, and provide a easy mechanism for users to donate AND see how many donations are made so far.

5) Approaching chip makers may be a better choice then talking to the device marketers/assemblers ?

Hope some of the above will help to re-establish your motivation, as we Linux users sure need it :-)

Cheers,
Andrej Falout
This page was loaded Nov 12th 2009, 3:43 pm GMT.