Thursday, December 14, 2006

GPL kernel modules, reverse DRM, and the future of Linux

I was doing my daily read of Digg today, and I stumbled across this: Linus Torvalds on the "GPL only modules" debate.

The issue at hand is whether the kernel should only be allowed to load GPLed modules (that is, drivers). That's right, some of the Linux kernel developers want to do away completely with binary-only (ie. closed source/proprietary) drivers, like the (good) Nvidia and ATI ones.

On the one hand, Andrew Morton writes:

Give people 12 months warning (time to work out what they're going to do,
talk with the legal dept, etc) then make the kernel load only GPL-tagged

I think I'd favour that. It would aid those people who are trying to
obtain device specs, and who are persuading organisations to GPL their drivers.

(Whereas the patch which is proposed in this thread hinders those people)

The patch in question would allow more components of drivers to be handled outside of the kernel, thus allowing developers of binary-only drivers (like Nvidia) to write GPLed skeleton drivers that actually just move their proprietary stuff outside of the kernel. So really, it doesn't solve anything, as Linus himself argues:

It will only result in _exactly_ the crap we were just trying to avoid,
namely stupid "shell game" drivers that don't actually help anything at
all, and move code into user space instead.

What was the point again?

Was the point to alienate people by showing how we're less about the
technology than about licenses?

Was the point to show that we think we can extend our reach past derived
work boundaries by just saying so?

The silly thing is, the people who tend to push most for this are the
exact SAME people who say that the RIAA etc should not be able to tell
people what to do with the music copyrights that they own, and that the
DMCA is bad because it puts technical limits over the rights expressly
granted by copyright law.

Doesn't anybody else see that as being hypocritical?

Linus then goes on to argue that decisions in the kernel should be based on technical merit, and shouldn't seek to limit how people are allowed to write/use drivers for Linux.

Because the history of Linux is so deeply intertwined with that of the Open Source/Free Software movement, many people feel that the kernel should only accept GPLed modules. The idea is that this would put pressure on companies like Nvidia and ATI to release GPLed ("Free") drivers. However, the flip-side is that it may well just end up in the same companies simply shunning Linux all together, or just moving their proprietary code out of the kernel. (The only thing the latter case seems to accomplish is a philosophical cleansing of the kernel.) Furthermore, proponents of this approach seem to be ignoring the other important component of "Free" - that is, being able to do what you like with it.

A "Free" kernel should let the user insert any modules they want in it, regardless of the license. It's almost reverse DRM - Instead of restricting users from freely using something, users would instead be restricted to only using something "Freely" (that is, only in ways that are compatible with their definition of "free"). Lastly, it just so happens that allowing binary kernel modules (as is the case currently) is the best technical decision, at least in the short-term, because Linux does not have the consumer base to persuade vendors to release open source drivers. Think about it - Linux is most popular in server market right now, and all of the popular binary drivers (Nvidia, Ati, Wifi) are needed on desktop Linux, not on servers.

Moving forward, the Linux kernel must continue to walk the narrowing line that balances between commercial success and philosophy. The next few years are certainly going to be interesting, particularly if ATI and/or Nvidia open source their drivers. Keep on the look-out.