On Wed, Aug 19, 2015 at 8:31 AM, Jeremi Piotrowski
<jeremi.piotrow...@gmail.com> wrote:
> On Wed, 19 Aug 2015, Rich Freeman wrote:
>
>> It sounds like you not only expect them to comply with the license,
>> but also with the kernel devs personal interpretation of copyright
>> law.
>
> What is a license but a statement of the intent of the authors as to what
> can and can't be done with their work? Well, it does have some legal force
> too...

The only reason that licenses matter at all is that they have legal
force.  They only matter to the degree that they do.

If I went around selling licenses to drive cars, anybody who bought
one would be a fool.  I have no rights to sell such licenses, and they
have no legal requirements to buy one from me.

Likewise, the fact that the kernel authors WANT to control linking to
their code means absolutely nothing.  They have no legal right to do
so, any more than a shovel manufacturer has the right to dictate what
kinds of holes I dig.

>
> If you'd try to take away their right to decide about that next thing
> they'd do is modify the license to be even larger and explicitly cover all
> corner cases.

And that would accomplish nothing, since companies would just ignore
any text which doesn't have a basis in law.

>
> That has always been the issue but I'll allow myself to quote an email
> on the matter:
> From: Linus Torvalds <torva...@osdl.org>

The problem is that Linus's words mean nothing unless they're based in
law.  You don't need to quote Linus.  You need to quote laws, court
decisions, or treaties.  And none of them say a word about linking
creating a derived work.  And would we really want to live in a world
where they did?  Do you really want to need permission to use a
product in a manner the author didn't originally intend?

>
> Apparently the Linux foundation considers some pieces to be *clearly*
> GPL-only and these are marked as such. And I don't see a way for vendors
> around this other than to avoid the usage of such symbols

Why not just write API wrappers?  If somebody exposes an API called
do_this() using EXPORT_SYMBOL_GPL just write a module that is licensed
GPL, exposes an API called do_this_nonGPL() using EXPORT_SYMBOL, and
have do_this_nonGPL() just pass through a call to do_this().

This is a trivial measure to circumvent, as far as a I can tell.  It
is just a PITA to deal with.

What is next, randomizing all the function/variable names on each new
kernel release so that it is impossible to maintain any kernel code
outside of the tree?  Then we'll have smart configure scripts for
external modules that try to determine the right name to use and
wrapper header files.

>
> Who wants to go court when the current scheme is effective. The whole
> issue of "derivative work" is more applicable to binary kernel modules
> anyway. In this case we have the source code, and the kernel module build
> system will not allow a module that claims a certain license to use
> certain symbols. They (vendors) can:
>
>   a) change their license to say "GPL" but then people would be allowed to
>      demand full source code from them including binary blobs.

All they have to do is have the human-readable license say non-GPL,
and have it report GPL to the kernel, and not ship the source.  The
only recourse anybody has is to sue them, and it is doubtful that a
court is going to force them to comply, as they clearly indicated
their intent to not release the code as GPL.  You might be able to get
away with redistributing the blob since the situation is a bit
ambiguous, but I doubt the driver manufacturers care that much if you
redistribute their blobs.

I remember a fiasco a few years ago when a vendor exported the license
as something like "GPL\0 does not apply."

>
>   b) apply the patch you posted - not really practical, definitely
>      wouldn't be popular but I don't really see how that would be illegal.
>      Full GPL would apply to the kernel anyway.
>
>   c) avoid the usage of such symbols.
>
> and they will do c) because they really don't have a choice.
>

As I pointed out they can just write a wrapper that exports GPL and
re-exports all the symbols.

Also, you stated that the check is implemented in the build system.  I
don't know if that is true, but if it is, then the module can simply
be built using a patched build system.  I suspect the check is really
in the module loader, which the module builder would not have control
over.

-- 
Rich

Reply via email to