The next step

Manuel M. T. Chakravarty chak@cse.unsw.edu.au
Sun, 03 Jun 2001 23:39:35 +1000


"Simon Marlow" <simonmar@microsoft.com> wrote,

> > > Maybe the right thing to do is to make the choice of license a
> > > fundamental part of the hierarchy?  That is, we could have:
> > >   
> > >   Core   -- all under BSD license
> > >      Core.Control
> > >      Core.Numeric
> > >      Core.User
> > >      Core.Org
> > >      ...
> > >   
> > >   LGPL   -- all under LGPL license
> > >      LGPL.Control
> > >      LGPL.Numeric
> > >      LGPL.User
> > >      LGPL.Org
> > >      ...
> > >   
> > >   GPL   -- all under GPL license
> > >      GPL.Control
> > >      GPL.Numeric
> > >      GPL.User
> > >      GPL.Org
> > >      ...
> > > 
> > > And then we can impose restrictions like "Core can only import other
> > > Core libraries", "LGPL can import Core and LGPL but not GPL", etc.
> > 
> > Doesn't look very attractive to me.
> 
> Me neither.  The license is meta-information about the source and should
> be entirely separate, so the author can change the license at will
> without breaking programs.  Besides, it breaks our convention about
> organising the hierarchy by functionality.
> 
> A better way IMO would be to separate licenses at the package level, so
> that within a package all the code has the same license.  This gives a
> good separation between code with different licenses, while still
> allowing code which uses libraries from multiple sources to be written
> with minimal hassle.

I agree.

> The restrictions on dependencies between code with different licenses
> are probably important though.

Actually, I don't think that either of you would like this
restriction.  For example, assume I write a LGPL library A
and you need an extension to that library that you implement
as an independent second library B linking to A.  By this
rule, you would *have* to use the LGPL yourself, although
you probably would have preferred to choose BSD.

In particular, Alastair might later (being fed up with me
and my preference for the LGPL) re-implement A as A' and
release A' under BSD.  Now you still have B with LGPL and if
in the meanwhile you accepted patches from other people into
B under the LGPL, you would not be allowed to change B from
LGPL to BSD (unless you get the approval of all
contributors).  Now, poor Alastair would have to
re-implement B, too - just because he proposed this
restriction ;-)

Cheers,
Manuel