Quote of the week: Free kernel drivers
Posted Oct 27, 2005 20:37 UTC (Thu) by
Duncan (guest, #6647)
In reply to:
Quote of the week by yodermk
Parent article:
Quote of the week
> Will this effectively lock out the non-Free
> nVidia and ATI drivers [?]
Good question, because it doesn't have as simple an answer as one might at
first assume, and I've yet to see decent coverage of this angle.
There might be some in that thread as I haven't read it yet tho I intend
to, but I've not seen LWN cover it and I'd like to, as Jon's explanations
are always so lucid, even to non-tech folks. Actually, I expect this is
one of those not entirely clear-cut areas that the kernel folks haven't
entirely pinned down -- and you'll see the how and why in a moment.
NVidia's drivers, and I assume ATI's are similar, have two parts, a
generally BSD style licenced open code wrapper around a proprietary
binary-only core. The BSD licensed wrapper is critical here, as it does
all the actual interfacing with the GPL kernel (which is legal to do as
the BSD license is more liberal than the GPL -- in fact, it's widely known
that some of the kernel code was at least originally from BSD, altho much
of it has been rewritten since then). Therefore, it doesn't (directly)
break the GPL on that side. Similarly, because it's BSD style licensed,
and that license allows it, it can interface/link with the proprietary
binary-only core, without issues there.
The question that's never been pinned down, is whether that level of
indirection is sufficient to keep the GPL from applying to the binary-only
core that only interfaces thru the wrapper with the GPL code of the kernel
itself.
Actually, it would appear there are differing opinions on this within the
kernel community itself. In fact, the GPL as it applies to the kernel has
for many years carried a "user space" specific disclaimer, put there by
Linus himself. This simply states that for the purposes of the GPL as
applied specifically to the Linux kernel, the definition of "derived code"
shall not extend to any userspace code, thus allowing proprietary
userspace applications to be developed and run on Linux without legal
threat of the GPL on the kernel applying to them. That's a specific
exemption that's nailed down and has been accepted by the Linux community.
Many argue that a similar exemption should apply, and that a de facto
exemption /has/ applied, to non-free kernel code, /provided/ it is
sufficiently separated by wrappers as described above from the GPL code of
the main kernel, and /provided/ no functions specifically exported as
"GPL-Only" are used by the code in question.
Linus himself (I believe, I've certainly seen the point made, and believe
I've seen him make it, I /know/ I've seen Evan Moglen of the FSF make it)
has pointed out that both logically and (likely) legally, where a binary
driver core was created originally for some other platform, and was used
unmodified with Linux, with only the code of the undisputed free wrapper
changing, it's pretty difficult to argue that said core code was then
somehow "derived" from the GPL/Linux code (noting of course that the
copyright law preconditions on the "derived" status, if the rights are to
be assertable).
From there, the argument can be made that it shouldn't matter which
platforms the binary code targets -- and in fact we're doing ourselves a
disfavor if we allow originally (say) MS Windows targeted drivers but
disallow the same code if it originally targeted Linux. The logical
conclusion of this line of reasoning therefore holds that as long as the
preconditions of the legally interfaced wrapper code and no use of
explicitly GPL-only exported functions are in place, the driver should be
legally acceptable, regardless of one's individual ethical position on the
matter.
As I said, the above applies to NVidia's open wrapper over a binary core
model, which I /believe/ extends to ATI as well (as I can't imagine ATI's
lawyer's OKing an unwrapped direct proprietary module -- there's simply
too much at stake).
Where I'm NOT clear is just how much of the "proprietary kernel model"
landscape uses a similar wrapper module, and is thus arguably legal, tho
there's some controversy around it, vs. the degree to which direct linkage
of proprietary modules, a rather more serious potential violation, exists.
Again, I'd /love/ to see Jon write an article addressing this issue,
attempting to quantify the number of modules and the degree to which they
are used within the community, which use each connection model. At this
point, I'm not even sure that when the kernel hackers write of
"proprietary kernel modules", they are including references to the open
wrappered ones, or not.
That be as it may, there's another aspect to consider as well. In at
least US law, the intent of the licensor as generally expressed is taken
into consideration as much as the direct wording of the license itself.
It could thus be legally argued that the very existence of the "GPL-only"
function exports, signify an implicit permission to use the generally
exported kernel functions in closed source modules, even when used
directly, without a wrapper as described above. That's certainly a valid
legal argument to make, altho it's NOT certain which way a court would
rule on it. In any case, however, even if the Judge held that the
conditions of the GPL still applied, at least in the US, the fact that
such a position can be honestly held and has specifically NOT been
directly discouraged by the kernel hackers, would tend to cause the Judge
to give the defendant more time to comply with any ruling, and make it in
general less harsh than it might be otherwise. Where a preliminary
injunction to cease and desist from distributing the infringing code might
otherwise be granted, now the Judge would tend to wait until after the
resolution of the trial. At the resolution, rather than a 30-180 day time
to cease distribution and comply, it'd more likely be 90 days to a year.
... Now I'm off to go read the thread and see if there's anything new
there to add to to my viewpoint...
Duncan
(
Log in to post comments)