[Haskell-cafe] Hmm, what license to use?

Bit Connor bit at mutantlemon.com
Sun Sep 28 20:38:49 EDT 2008

I'm going to give my take on the LGPL, but even though this isn't a
direct answer to your question, please read because it's especially
relevant in your case where you would like to allow static linking.

The way I see it, the LGPL tries to accomplish two separate goals:

Goal 1 (The FSF angle): Users of the eventual program will have the
ability to modify the code of the LGPL library and relink the program
with their modifications. It's a user freedom thing. I find a problem
with this since it usually doesn't help the user all that much, since
the rest of the program is proprietary. And any user who respects his
own freedom won't use such a proprietary program in the first place.
The whole thing is kind of pointless, and even the FSF strongly
advises against using the LGPL.

Goal 2 (The "open source" angle): Developers who use the library
should have to contribute their modifications of the library back to
the community. I believe that it's wrong to use a license to try to
enforce such cooperation. Look what happened with KHTML when Apple
started using it for their Safari web browser. Even though KHTML was
LGPL, Apple didn't play nice and did not send proper patches back to
the KHTML developers. Instead, Apple only did what they were legally
required to do and released huge source dumps that were impossible to
integrate back upstream. On the other hand, plenty of BSD libraries
receive contributions from companies because the companies know that
it's the right thing to do, and also because it makes it easier for
those companies to upgrade to new versions of the library when their
own changes are integrated upstream.

The FSF advises only to use LGPL in rare cases as a tactic to ensure
greater freedom further down the line. For example, because libc was
LGPL, the gcc compiler was able to spread everywhere, and now it
pretty much has become the industry standard compiler (which is great
for the free software community).

I personally see the license choice as between GPL and BSD. Magnus,
since you want to allow static linking, it seems that you are only
interested in Goal 2 mentioned above. As I've explained, I don't think
the LGPL will help too much with that goal, since if a company(like
Apple) doesn't want to cooperate, then you can't really force them.
BSD has the advantage over GPL in that there will be additional
proprietary users of the library who would not be using the library if
it were GPL. Even though they are making proprietary programs, these
library users have incentive to contribute to the project the same as
all other users(see above).

So in summary, if user freedom is important, then GPL is the way to
go. If it's about encouraging the submission of patches and
contributions, then the license won't help you, you simply have to
rely on the good will of people. (But BSD will allow for a larger


2008/9/26 Magnus Therning <magnus at therning.org>:
> Recently I received an email with a question regarding the licensing
> of a module I've written and uploaded to Hackage.  I released it under
> LGPL.  The sender wondered if I would consider re-licensing the code
> under BSD (or something similar) that would remove the need for users
> to provide linkable object files so that users can re-link programs
> against newer/modified versions of my library.
> Now I have fairly strong feelings about freedom of code and I
> everything I release is either under GPL or LGPL.  What I like about
> those licenses is it protects freedom in a way that I think it should
> and it forces a sort of reciprocity which resonates very well with my
> selfishness.  Re-licensing code under BSD is not something I'm willing
> to do without something that compensates for that reciprocity, and I
> can think of several kinds of compensation here but they all pretty
> much boil down to either fame or fortune. ;-)
> Once GHC supports dynamic binding on all platforms (or at least the
> major ones) this issue will (largely) go away (thanks Andrew for
> reporting on the state of this), but until then LGPL does create a
> large burden for users of my module.  Until that happens I wouldn't
> mind re-licensing the code under a license that has the reciprocity
> attribute of LGPL on the source level, but does allow for static
> linking without requiring the availability of linkable object files.
> Is there such a license?
> I've heard that the OCaml crowd uses a modified LGPL with a static
> linking exception.  Unfortunately I've also heard that their addition
> to LGPL hasn't gotten much review by lawyers, I'd much rather use
> something that feels less ad hoc, if you get what I mean.
> Any suggestions?
> /M
> --
> Magnus Therning                        (OpenPGP: 0xAB4DFBA4)
> magnus@therning.org          Jabber: magnus@therning.org
> http://therning.org/magnus         identi.ca|twitter: magthe
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list