[squeak-dev] Re: Swazoo - LGPL or MIT?
bonzini at gnu.org
Fri Mar 21 17:21:00 UTC 2008
Andreas Raab wrote:
> Paolo Bonzini wrote:
>> If your changes are subclasses of something is clearly part of the
>> interface (you cannot use Swazoo without providing those subclasses,
>> and those subclasses are not important to other users of Swazoo),
>> adding your subclasses is not going to LGPL.
> I have always been wondering about this. Where exactly in the LGPL does
> it say that?
I think it is safe to interpret the LGPL in this way where it says:
1) "A program that contains no derivative of any portion of the Library,
but is designed to work with the Library by being compiled or linked
with it, is called a "work that uses the Library"."
2) "It is not the intent of [Section 2] to claim rights or contest your
rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library".
Item 1 is respected, because subclassing leaves a clear separation
between the work and the library. You can say that (the source of) a
subclass does not contain derivatives of any portion of the library.
Item 2 makes it clear what the spirit of Section 2 is, and the fact that
"subclasses are not important to other users of Swazoo" (as I wrote
above) qualifies them as "work written entirely" by the user, that is
simply "designed to work with the Library".
I also see a parallel with the equivalent of subclassing in C, which is
function pointers (and to vtables). Overriding methods is basically
equivalent to passing a different function pointer table in a C library.
Not overriding methods is equivalent to specifying a function exported
by the library in the table.
This, in principle, does not even exclude adding support for adding new
HTTP header fields and adding a single method that allows you to
register new HTTPHeaderField subclasses. In that case however I'd be
careful because you are walking a finer line -- in Smalltalk everything
exported must be public, but that's not necessarily the case in other
languages, and it could be seen as exploiting "weaknesses" of a language
in order to circumvent the license.
If a package had a decent documentation, I think that could provide a
way to understand what is public just because of Smalltalk's lack of
private interfaces, and what is private. Using private stuff or
subclassing it would be problematic. *Modifying code always places the
result under the LGPL*.
That said, IANAL and I don't think a case like this has ever been tested
in court, not even for other languages than C/C++.
More information about the Squeak-dev