Re: Kernel module ethics.

From: Helge Hafting (helgehaf@aitel.hist.no)
Date: Thu Feb 28 2002 - 04:42:52 EST


"Allo! Allo!" wrote:
>
> Hi,
>
> The company for whom I work wants to make a linux driver for some of its
> hardware. On my side I would like the driver to be completely open sourced,
> and from a customer point of view, its a big plus (a real PITA to maintain
> closed sourced drivers). On the other hand, the company wants a clear way to
> make "profit" from the work while still catering to it's customers whish to
> recompile the driver for just about any kernel version.

Make profit by selling hardware! And by selling support - i.e.
customer wants the driver customized in some way, but don't want
to do it himself for fear of screwing up or having to
constantly track changing kernels.
 
> Here is what they propose... I do not know if what they are proposing is
> "going too far" regarding kernel module ethics, but I thought I'd ask the
> question here and see what other people think.
>
> The hardware needs a firmware to run. Since this firmware is under NDA, the
> first compromise is to write the main part of the driver GPL but keep the
> firmware of the card in binary format. The driver can then load the firmware
> separately and this should not infringe on the GPL and I'm quite ok with
> this requirement. Now the problem is that any of our competitor's cards will
> work with the same closed sourced firmware and GPL engine. In pure
> capitalist thinking, the company finds this particularly troublesome...

How can a closed-source driver help you? Even such a driver may be
pirated and used on the competitors card. But you choose to trust
people in that situation. If you trust people that much you might
as well release an open-source driver with a clause that it may only
be used with _your_ company's cards. Or provide the _firmware_
with a strict licence and trust they don't pirate that.

The ideal way (for us customers) is if your company and the others with
similiar hardware agree on sharing the development cost of a
GPL driver. Nobody loose from paying for a driver the others can use.
Capitalist competition is still possible:
* extra features, quality & reliability are selling points
* pricing, advertising
* trying to manufacture in cheaper ways than the others

Sharing the cost of development makes a lot of sense because the
others *will* come up with their own linux drivers anyway if
it turns out to be money in selling hardware to linux users.
All loose by making separate drivers.

Also the cost of a GPL driver isn't merely shared - it could be
real low as you probably can get away with fewer developers.
You may be able to find someone who write a driver for free
if given a few free cards and _good_ documentation.

Then there is the issue of maintenance costs. They are high
for a closed linux driver, because Linus is not afraid of
making source-incompatible changes. A driver in the
official source tree will usually be fixed for you - a
closed driver is _your_ problem with customers screaming
until they get a update. Maybe they buy from another vendor
in the meantime.

If your boss don't buy any of this, consider tweaking the
firmware to work with your card only, instead
of closing the driver.
 
> The other compromise is to write a closed source part that would not permit
> the driver to work with another card supporting the same chipset. Is this
> kind of practice generally accepted or is it frowned upon? The motive of the
> company is quite clear. If people want to "improve" the driver, they can
> only improve it for their hardware, not the competitors. There is also a big
> marketing sales pitch that goes like "we support linux, the others
> don’t..."

"Supporting linux" can be a lot more than "we provide drivers and the
others don't"

Consider: This sales pitch will be used to sell to _linux users_.
So, it must match the mindset of linux people.

This:
"We provide GPL drivers for our cards (may or may not work with some
others)
and extensive docs and perhaps test cards for serious developers"

Sounds a hell of a lot better than:
"We provide a closed source driver for linux, artifically crippled so it
won't work with similiar cards from other manufacturers."

Clueful linux users will know that the first driver _will work_ with
any future kernel and bugs _will_ be fixed because everybody have
access to it. And they will go for your card rather than the
competitor because of this. The price difference for
hardware is probably small anyway and there could be ever so slight
incompatibilities with the non-supportive manufacturers card.
Performance will be high because volunteers don't merely fix
bugs, they also try out new cool algorithms and ideas.
And users know the card will be supported even after you stop
selling it. That _is_ a selling point today.

They will also know that the second case driver _will_
lag behind kernel development by many months and bugs will take a long
time to fix - if ever. Performance may not be as good as it could be.
Suddenly someone release a pc with a new bus trick that improves
performance, but your boss might not allocate 50 hours for implementing
that for "last years hardware".

Is all linux users this clueful? I don't know. Probably those
who runs servers, and of course those who post recommendations
when the newbies ask "what hardware should I buy when setting
up a linux machine". You _don't_ want to go into the FAQs as
ill-supported!

> It's like if Nvidia did not have linux drivers and ASUS wanted to ship a
> card with a linux driver that only works with asus cards even though there
> is one from leadtek with the exact same chipset (assuming that ASUS cannot
> change the internals of the card).
>
> Is the second compromise just "going too far"? Is this better than simply
> having a 100% closed source driver?

Generally, the more open the better. Keep in mind that buying
hw that needs a closed-source driver is something we do _only_ when
no competing product with a GPL driver exist. Your competitors
might go the GPL way even if you don't. Many users of closed drivers
do so because they converted a machine from windows to linux.
If they buy specifically for linux, they buy something well-supported.
And the ideal then is a driver in the official tree. The second
best is a open source driver that might get into the tree - it just
hasn't happened yet. A closed driver at least initiates a web search
for other harware...

Helge Hafting
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Feb 28 2002 - 21:00:41 EST