All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christer Weinigel <christer@weinigel.se>
To: "Hans-Jürgen Koch" <hjk@linutronix.de>
Cc: David Newall <davidn@davidnewall.com>,
	Marcel Holtmann <marcel@holtmann.org>,
	Diego Zuccato <diego@otello.alma.unibo.it>,
	Greg KH <greg@kroah.com>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] USB: mark USB drivers as being GPL only
Date: Sat, 9 Feb 2008 16:13:22 +0100	[thread overview]
Message-ID: <20080209161322.6ccd9d4d@weinigel.se> (raw)
In-Reply-To: <20080207184939.17030887@dilbert.local>

On Thu, 7 Feb 2008 18:49:39 +0100
Hans-Jürgen Koch <hjk@linutronix.de> wrote:

> > It requires software that is *distributed* as part of a GPL
> > work to itself be GPL.  At time of distribution, a kernel module is
> > neither using nor linked to the kernel.
> 
> Oh, come on! You cannot turn a derived work into an original work just
> by distributing them seperately.

No, but the other way doesn't work either.  

Lets say that I write a piece of code, a B-tree algorithm.  If I take
that piece of code and put it in the Linux kernel and distribute it as
a statically linked binary kernel, then quite obviously the whole is a
derived work of the original Linux kernel and my b-tree code.  If I
refuse to give the source code to my b-tree code [1] I have obviously
violated the GPL.  That is very clear and I don't think anyone disputes
that.

What is more disputed is if my b-tree code is a derivative work of the
kernel or not.  In my opinion it is not, that b-tree code is my
original work and I can ship it as a part of a proprietary product if I
want to.  If I distribute it as a .o file and somebody links it into
the kernel, that is the end users decision, and the GPL explicitly says
"Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted [...]".  

But lets say that the b-tree code uses Linux-only primitives such as
kmalloc or spinlocks, and that I wrote the code specifically for the
Linux kernel, does that make it into a derivative work?  kmalloc is
only a function call, so I'd say that is too trivial to be
copyrightable, APIs or just directories mapping names to numbers are
not copyrightable.  The spinlocks are a bit more troublesome since they
are implemented as macros or inline functions so they do pull in some
code from the header files.  On the other hand, since they in a way form
an API, and are the only way of interoperating with the kernel, they
might not be copyrightable either.  Then there's the question of fair
use which might also make it possible to legally use those functions
anyway, even if they are copyrightable.  

What if I do a trivial replace of the kmalloc calls with malloc and the
spinlock calls with pthread locks instead, has my code been forever
tainted by being written for Linux so that I can't do that anymore?
What if I go the other way and write my code using the posix functions
to begin with and do the equally trivial replace of malloc with
kmalloc?  

So static linking vs dynamic linking really isn't the question.  But 
linking something statically and distributing the resulting binary
without providing source, that is a very blatant violation of the GPL,
so that is fairly easy to bring to court.   As far as I know, the
question if using the kernel header files creates a derivative work or
not has not been decided in court though, and until it has it is a bit
of a gray zone.  And even if it is decided in a court in Germany for
example, that ruling might not apply in the states or in Australia.
The Berne convention is supposed to harmonise the copyright laws all
over the world, but there are still differences between countries.

Every time Harald Welte sues a company and that company settles by
paying up, it strengthens the position that the GPL is valid, but since
those settlements are made outside of court, no outsider can tell why
they settled.  Was it because the company had blatantly violated the
GPL by refusing to give away source (a lot of WLAN routers made by
Chinese companies seemed to fall into that category), was it because
they were using GPLed source in their drivers (a lot of binary modem
drivers was modified versions of the serial driver straight from the
Linux kernel, an obvious violation), or was it because the court hinted 
that they would actually consider an original device driver written for
Linux as a derivative work?  Or was it just because the companies felt
that the fight wasn't worth the time and money, and it's easier to
settle than to spend a lot of money on a fight, especially since
there's always a small risk that you can get hurt in a fight?

Patent trolls use the same tactics, they sue small companies and offer
them settlements which are less risky than fighting it out in court, so
most small companies settle.  The trolls then use those settlements as
"proof" that their claims are valid, and with the settlement money they
take on bigger victims.  Now, I do consider Welte's suits a wee bit [2]
more valid than patent trolls, and I'm happy he has the energy to do
that.  But using his victories, which usually seem to be regarding very
blatant GPL violations, as some kind of proof in the
derivative-work-or-not debate, isn't really valid.

   /Christer (rambling again)

[1] Or if I give the source code to the recipient and say "here's the
source code, but you can't give it to someone else".

[2] That is an understatement, ok?

  parent reply	other threads:[~2008-02-09 15:13 UTC|newest]

Thread overview: 157+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-25 18:02 [PATCH] USB: mark USB drivers as being GPL only Greg KH
2008-01-28  8:13 ` Clemens Ladisch
2008-01-28  8:57   ` Greg KH
2008-01-28  9:58     ` Clemens Ladisch
2008-01-28 16:13       ` Greg KH
2008-01-28 10:44 ` Boaz Harrosh
2008-01-28 16:13   ` Greg KH
2008-01-28 16:44     ` Boaz Harrosh
2008-01-28 16:52       ` Greg KH
2008-01-28 21:49 ` TimC
2008-02-02 11:37 ` Christer Weinigel
2008-02-02 19:19   ` Greg KH
2008-02-03 11:48     ` Christer Weinigel
2008-02-03 14:35       ` Pekka Enberg
2008-02-03 17:04         ` Christer Weinigel
2008-02-03 23:15           ` Greg KH
2008-02-05 23:14             ` David Newall
2008-02-05 23:17               ` Alan Cox
2008-02-07 12:50                 ` David Newall
2008-02-07 14:06                   ` Alan Cox
2008-02-07 14:32                     ` David Newall
2008-02-05 23:29               ` Greg KH
2008-02-07 12:52                 ` David Newall
2008-02-05 23:34               ` Chris Friesen
2008-02-06 21:04                 ` Adrian Bunk
2008-02-07  1:36                   ` David Schwartz
2008-02-07 13:26                   ` David Newall
2008-02-07 14:15                     ` Alan Cox
2008-02-07 15:02                       ` David Newall
2008-02-07 15:07                         ` Alan Cox
2008-02-07 16:31                           ` David Newall
2008-02-08  0:18                     ` David Schwartz
2008-02-07 13:06                 ` David Newall
2008-02-07 14:12                   ` Alan Cox
2008-02-07 14:55                     ` David Newall
2008-02-07 15:01                       ` Alan Cox
2008-02-07 16:19                         ` David Newall
2008-02-07 22:51                     ` Hannu Savolainen
2008-02-07 23:17                       ` Greg KH
2008-02-03 15:07     ` David Newall
2008-02-04 10:21       ` Diego Zuccato
2008-02-04 19:18         ` Christer Weinigel
2008-02-04 21:38           ` Marcel Holtmann
2008-02-06 20:34             ` Christer Weinigel
2008-02-06 20:54               ` Hans-Jürgen Koch
2008-02-07 13:19                 ` David Newall
2008-02-07 14:06                   ` Hans-Jürgen Koch
2008-02-07 14:31                     ` David Newall
2008-02-07 16:13                       ` Hans-Jürgen Koch
2008-02-07 16:22                         ` Dave Higton
2008-02-07 16:50                         ` David Newall
2008-02-07 17:49                           ` Hans-Jürgen Koch
2008-02-08  2:50                             ` David Newall
2008-02-09 15:13                             ` Christer Weinigel [this message]
2008-02-09 15:41                               ` Pekka Enberg
2008-02-09 16:50                                 ` Christer Weinigel
2008-02-09 17:29                                   ` Pekka Enberg
2008-02-06 20:55               ` Marcel Holtmann
2008-02-06 20:52                 ` Alan Cox
2008-02-07 13:47                   ` David Newall
2008-02-07 14:26                     ` Alan Cox
2008-02-07 15:16                       ` David Newall
2008-02-06 21:29                 ` Christer Weinigel
2008-02-07  8:07                   ` Diego Zuccato
2008-02-07 15:05                     ` Adrian Bunk
2008-02-07 19:27                     ` Marcel Holtmann
2008-02-07 13:21                 ` David Newall
2008-02-07 19:35                   ` Marcel Holtmann
2008-02-07 13:16               ` David Newall
2008-02-05  7:49           ` Diego Zuccato
2008-02-05 23:25         ` David Newall
2008-02-05 23:25           ` Alan Cox
2008-02-07 13:00             ` David Newall
2008-02-07 14:10               ` Alan Cox
2008-02-07 14:48                 ` David Newall
2008-02-07 14:58                   ` Alan Cox
2008-02-07 16:03                     ` David Newall
2008-02-07 18:22                       ` Alan Cox
2008-02-08  2:55                         ` David Newall
2008-02-08 11:29                           ` Alan Cox
2008-02-08 16:34                             ` David Newall
2008-02-07  8:31           ` Diego Zuccato
2008-02-07 13:35             ` David Newall
2008-02-07 14:25               ` Diego Zuccato
2008-02-07 15:13                 ` David Newall
2008-02-08  8:48                   ` Diego Zuccato
2008-02-07 19:34               ` Lee Mathers
2008-02-08  8:55                 ` Diego Zuccato
2008-02-08 11:38                   ` Alan Cox
2008-02-05  9:55       ` Bernd Petrovitsch
2008-02-05 11:18         ` David Newall
2008-02-05 12:32           ` Bernd Petrovitsch
2008-02-10 15:19       ` Bauke Jan Douma
2008-02-03 15:12     ` David Newall
2008-02-03 15:43       ` Pekka Enberg
2008-02-03 16:06         ` David Newall
2008-02-03 16:48           ` Pekka Enberg
2008-02-05 11:33             ` David Newall
2008-02-05 19:43               ` Marcel Holtmann
2008-02-07 13:41                 ` David Newall
2008-02-07 19:05                   ` Marcel Holtmann
2008-02-08  3:57                     ` David Newall
2008-02-08  9:15                       ` Marcel Holtmann
2008-02-08 18:40                         ` David Newall
2008-02-08 19:08                           ` David Newall
2008-02-08 19:23                             ` David Newall
2008-02-08 19:36                             ` Daniel Hazelton
2008-02-08 21:36                               ` Alan Cox
2008-02-08 23:27                                 ` Daniel Hazelton
2008-02-08 19:13                           ` Greg KH
2008-02-08 19:42                             ` David Newall
2008-02-08 23:41                           ` Marcel Holtmann
2008-02-10  2:01                             ` David Schwartz
2008-02-10  4:50                               ` Marcel Holtmann
2008-02-10  5:07                                 ` Daniel Hazelton
2008-02-10  5:43                                   ` Marcel Holtmann
2008-02-10  6:18                                     ` Daniel Hazelton
2008-02-10 11:20                                   ` Alan Cox
2008-02-10 13:30                                     ` Daniel Hazelton
2008-02-10 13:45                                       ` Olof Johansson
2008-02-12 18:02                                 ` Valdis.Kletnieks
2008-02-12 18:04                                   ` Alan Cox
2008-02-09 13:40                           ` Christer Weinigel
2008-02-08 20:21                         ` Valdis.Kletnieks
2008-02-08 23:30                           ` Marcel Holtmann
2008-02-03 17:13           ` Marcel Holtmann
2008-02-05 11:39             ` David Newall
2008-02-05 11:46               ` Pekka Enberg
2008-02-06 21:12                 ` Christer Weinigel
2008-02-06 21:48                   ` Valdis.Kletnieks
2008-02-07  6:22                   ` Pekka Enberg
2008-02-07 13:31                     ` David Newall
2008-02-07 13:47                       ` Pekka Enberg
2008-02-05 12:27               ` Alan Cox
2008-02-05 20:03               ` Marcel Holtmann
2008-02-05 20:35                 ` Chris Friesen
2008-02-05 21:12                   ` Marcel Holtmann
2008-02-07 12:41                     ` David Newall
2008-02-07 13:37                   ` David Newall
2008-02-07 13:45                 ` David Newall
2008-02-07 14:28                   ` Alan Cox
2008-02-07 15:39                     ` David Newall
2008-02-05 20:34               ` Greg KH
2008-02-06 20:14                 ` Christer Weinigel
2008-02-06 20:28                   ` Greg KH
2008-02-06 21:03                     ` Christer Weinigel
2008-02-07 13:15                     ` David Newall
2008-02-07 13:39                 ` David Newall
2008-02-06 20:43 ` Jon Smirl
2008-02-06 21:23   ` Greg KH
  -- strict thread matches above, loose matches on Subject: below --
2008-02-01 14:45 Gilles Espinasse
2008-02-01 17:29 ` Greg KH
2008-02-06 21:14 ` Jan Engelhardt
2008-02-07  7:30   ` Gilles Espinasse
2008-02-03 11:17 Gilles Espinasse
2008-02-04 11:43 Matthew
2008-02-04 15:04 ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080209161322.6ccd9d4d@weinigel.se \
    --to=christer@weinigel.se \
    --cc=davidn@davidnewall.com \
    --cc=diego@otello.alma.unibo.it \
    --cc=greg@kroah.com \
    --cc=hjk@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=marcel@holtmann.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.