[Asterisk-Dev] chan_sccp move from lambda-solutions.deto SF.NET

Steven Sokol ssokol at sokol-associates.com
Tue Apr 13 10:44:38 MST 2004


> Hmmm....
> you mean i could legally sell a non-GPL * module which could then
> legally be used by someone else (without requiring a non-GPL * license)?
> I dont think the GPL would allow this.
> --

I don't claim to be a GPL expert, but from what I have read (and I have read
several legal opinion letters) the GPL extends only to code "that in whole
or in part contains or is derived from the Program or any part thereof, to
be licensed as a whole at no charge to all third parties under the terms of
this [GPL] License."

Chan_sccp (from looking at the header files) really has to be released under
the GPL.  It derives from a GPL'd work (Asterisk) by including a bunch of
the Asterisk code:

#include <asterisk/frame.h>
#include <asterisk/module.h>
#include <asterisk/channel.h>
#include <asterisk/lock.h>
#include <asterisk/logger.h>
#include <asterisk/sched.h>
#include <asterisk/io.h>
#include <asterisk/rtp.h>
#include <asterisk/config.h>
#include <asterisk/options.h>
#include <asterisk/channel_pvt.h>
(from chan_sccp.h)

This is not universal.  Channels and applications _can_ be created that
don't link to Asterisk.  It just requires a lot of extra work.

Example: HP can create printer drivers that adhere to the CUPS driver
standard that are loaded by CUPS (GPL) on a Linux (GPL) system without being
required to release the source for their driver, or to license the use of
that driver under GPL.

If chan_sccp was created starting with any of the Asterisk (GPL) code then
it MUST be GPL, or it can't be released (but it can be used internally).  If
the author copied chan_zap.c to chan_sccp.c, then began making changes, then
it is a derivative work and GPL requires all "derivative work" be released
as GPL.  If he linked to any of the Asterisk libraries (which he did - see
the above list of .h files) the GPL mandates that he release his product as
GPL software.

If the author analyzed the interface mechanism used by the channels in
Asterisk and then created chan_sccp.c from scratch, not copying the code,
then he can license it as he sees fit.  This, however, is pretty hard to do.
He can't use ANY of the header files from Asterisk.  He can't link to ANY of
the Asterisk code.  His module must stand completely alone.  This will cause
him to write a lot of extra code just to avoid violating the GPL.

The baseline explanation I got from a lawyer friend:  If you use any of a
GPL application's code in creating your code (including headers and linked
functions from dynamic libraries) you must be GPL.  However, if you create a
module that talks to a GPL application, or is loaded and used by a GPL
application (like a channel) without modifying or including the source for
the GPL application, then you are free to license as NON GPL.

Many libraries (including much of the inner guts of Linux) are released as
LGPL (lesser General Public License) so that people _can_ release non GPL
code that makes use of the GPL code.  This includes such goodies as glibc
(the core c library for gcc).  LGPL does not have the stipulation regarding
derived works, so it is generally "safe" for non-GPL code to link to LGPL
code.

IMHO: the authors of chan_sccp must either remove all GPL code from their
application, or release it under the GPL.  I would think that the latter is
by far the easiest suggestion (especially since the code is already open
source and publicly available).

Am I off base here?

Thanks,

-S

Disclaimer: I'm not a lawyer and I'm not giving legal advice.





More information about the asterisk-dev mailing list