Licensing of Haskell code
Alastair Reid
alastair@reid-consulting-uk.ltd.uk
Fri, 23 May 2003 16:00:43 +0100
Alastair Reid <alastair@reid-consulting-uk.ltd.uk> wrote:
> > GPL + MIT =3D GPL # I think this is true.
> > BSD + MIT =3D BSD # This may also be true
> > x + x =3D x # This says that we can delete any
> > duplicates
On Friday 23 May 2003 1:37 am, Ashley Yakeley wrote:
> By "+" I assume you mean "must comply with at least one" rather than
> "must comply with both"?
I was thinking of a situation like:
Suppose you have a program containing module A and module B.
To make it concrete, let's further assume:
Module A has license GPL and module B has license MIT.
I want to determine: =20
What license governs the complete program?
We all know from having seen enough examples that it's the GPL license.
That's what I meant when I wrote:
GPL + MIT =3D GPL
i.e., if you link 2 modules one governed by GPL and the other governed by M=
IT=20
then the result has license GPL.
That is, '+' means 'must comply with both'.
The proposal was that you make a list of all the modules in your program.
=46rom this you make a list of all the licenses of all the modules.
You then apply simplification rules:
=2D eliminate duplicates
=2D where one license is strictly stronger than another, keep the stronger
This results in a list of licenses which the programmer or his lawyer can=20
puzzle over.
Notes:
1) Conceivably, there could be a license where it matters whether A imports=
B=20
or B imports A but I'm not sure how a lawyer would interpret this in the=20
context of higher-order functions and, in any case, I've not seen such a=20
license so, as a first approximation, I'm going to ignore the difference. =
=20
2) Similarily, a license might distinguish between dynamic linking and stat=
ic=20
linking and, again, I'm going to ignore the difference.
=2D-
Alastair Reid