netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Brian F. G. Bidulock" <bidulock@openss7.org>
To: Chase Venters <chase.venters@clientec.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC/PATCH 1/2] in-kernel sockets API
Date: Wed, 14 Jun 2006 03:28:50 -0600	[thread overview]
Message-ID: <20060614032850.C14829@openss7.org> (raw)
In-Reply-To: <200606140258.30302.chase.venters@clientec.com>; from chase.venters@clientec.com on Wed, Jun 14, 2006 at 02:58:08AM -0500

Chase,

On Wed, 14 Jun 2006, Chase Venters wrote:
> 
> One point I remember coming up in the discussion was that the 
> EXPORT_SYMBOL()/EXPORT_SYMBOL_GPL() split was a compromise of sorts. 
> Interfaces that were needed to support users would reasonably be placed under 
> EXPORT_SYMBOL(). By contrast, EXPORT_SYMBOL_GPL() would indicate 
> functionality that would only seem to be used by derived works. It implies 
> that any code using it should probably be GPL as well.

The difficulty with EXPORT_SYMBOL_GPL() as I see it that it reached farther
than the GPL.  GPL does not impact non-derived works, which can be licensed
under any terms their authors see fit.  Whereas, EXPORT_SYMBOL_GPL() requires
a non-derived work to declare a GPL license to even use it.  If you subscribe
to the FSF view of derived work (just linking is a derivation) then I suppose
you would support the EXPORT_SYMBOL_GPL().  IANAL, but I don't believe that
TRIPS nor Berne Convention case law supports the FSF view.  Linus' statements
in the COPYING file take a different view: that simple use of a technical
interface is not necessarily (in itself) derivation.

Now, I understand the use of EXPORT_SYMBOL() vs. EXPORT_SYMBOL_GPL() to allow
authors to differ on this idea.  But, in the case in point, the function
pointers can be accessed by merely including the appropriate header files.
Changing a the wrapper access to them to EXPORT_SYMBOL_GPL() strikes me as
similar to changing kmalloc() from EXPORT_SYMBOL() to EXPORT_SYMBOL_GPL().

Understand that all exported symbols, regardless of licensing or modversions
or whatever, are available in the kernel boot image and can be linked to by
any module at any time.  That is, those that would abuse the concept of
derivation will not be impeded by EXPORT_SYMBOL_GPL().  (Rip the symbol from
the kernel image, write a thin GPL'ed module that aliases the symbol and the
exports it again as EXPORT_SYMBOL() without module versioning, copy the lines
of code into the proprietary module, reversing the order of arbitrary lines,
etc.)

In any case, all it serves to do is to punish honest non-derivative works not
published compatible with the GPL.

What I resist is the apparent attempt to change these symbols to _GPL as some
matter of general policy in this case contrary to the author's original
intentions as expressed in the original patch submission, and without the
author of the interface being wrappered jumping up an screaming that his code
was under strict FSF linking-is-derivation GPL (in which case we could have
had a good discussion on whether Linux NET4 is actually a derivative work of
BSD 4.4 Lite which was licensed under the "old" BSD license, incompatible with
the GPL ;)

As a general policy I would say make it EXPORT_SYMBOL() unless the author of
the patch (derivation) or author of the original (derived) code dictates that
it be EXPORT_SYMBOL_GPL().

Ok, I'll shut up now... ...really.

  reply	other threads:[~2006-06-14  9:28 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-12 23:56 [RFC/PATCH 1/2] in-kernel sockets API Sridhar Samudrala
2006-06-13  5:07 ` Stephen Hemminger
2006-06-13 11:13   ` Arnaldo Carvalho de Melo
2006-06-13 11:22   ` Brian F. G. Bidulock
2006-06-13 21:12     ` Daniel Phillips
2006-06-13 21:40       ` Brian F. G. Bidulock
2006-06-13 22:00         ` Chase Venters
2006-06-13 22:30           ` Daniel Phillips
2006-06-13 22:47             ` Brian F. G. Bidulock
2006-06-13 23:59               ` Chase Venters
2006-06-14  0:31                 ` Brian F. G. Bidulock
2006-06-14  0:53                   ` Chase Venters
2006-06-14  6:07                     ` Brian F. G. Bidulock
2006-06-14  7:58                       ` Chase Venters
2006-06-14  9:28                         ` Brian F. G. Bidulock [this message]
2006-06-14 10:43                       ` Alan Cox
2006-06-14 10:54                         ` Brian F. G. Bidulock
2006-06-14 10:36                     ` Theodore Tso
2006-06-13 22:44           ` Brian F. G. Bidulock
2006-06-13 23:42           ` Ben Greear
2006-06-14  0:05             ` Chase Venters
2006-06-14  0:18               ` Brian F. G. Bidulock
2006-06-14  0:29                 ` Chase Venters
2006-06-14  0:36                   ` Brian F. G. Bidulock
2006-06-14  0:19               ` Ben Greear
2006-06-14  0:38                 ` Brian F. G. Bidulock
2006-06-14 13:30       ` Harald Welte
2006-06-14 14:29         ` Erik Mouw
2006-06-14 15:26           ` Harald Welte
2006-06-14 17:48         ` Daniel Phillips
2006-06-14 18:03           ` Brian F. G. Bidulock
2006-06-14 20:52           ` Sridhar Samudrala
2006-06-13 14:58 ` Jan Engelhardt
2006-06-13 16:27   ` Sridhar Samudrala

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=20060614032850.C14829@openss7.org \
    --to=bidulock@openss7.org \
    --cc=chase.venters@clientec.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).