On Monday 19 May 2003 4:01 pm, Shae Matijs Erisson wrote:
If you consider software a service rather than a product, GPL is the best license for both hats. This has been working for me for the last few years.
Please let us keep this discussion on the topic of tagging libraries with their different licenses, reasoning about combinations of licenses, etc. We have had flame wars^H^H^H^H^H^H^H^H^H^H discussions about the right license to use for Haskell libraries before. Agreement has not been reached and is unlikely to be reached because different licenses serve different goals. I think there is little point in rehearsing the arguments. Let us accept that we will have multiple licenses and move on to more fruitful subjects like how to handle multiple licenses. One way of dealing with multiple licenses is described in section 6.5 of this document http://www.linuxhq.com/ldp/howto/Module-HOWTO/basekerncompat.html This is about licenses used in linux kernel modules. It mentions a way of enforcing the GPL's restrictions on linking: they built support for the GPL into the linux kernel linker. I suspect that this is more than we need. For our purposes, it would probably be sufficient to have a haddock-like tool gather all the licenses listed in module headers and present them to the user. [For those who don't know, haddockized modules typically contain a module header which includes information such as the author, stability of the API, portability and the license. It would probably be trivial to modify Haddock to dump out this information in a form that could be processed by external tools.] Details: 1) The default assumption (if no module header is present) should be somewhat pessimistic since it implies that we have no license to do anything at all with the code. 2) If we standardize the meaning of the license descriptions, we can add some simplification rules like: GPL + MIT = GPL # I think this is true. BSD + MIT = BSD # This may also be true x + x = x # This says that we can delete any duplicates All this does is allow a list of 50 (say) licenses to be boiled down to one or two licenses for the program author to ponder. Since the tool returns a set of licenses, there's no need to provide rules for every possible combination of licenses. This avoids the need to somehow force-fit all the licenses in the world into a single lattice. 3) It might be useful to allow module authors to add a second module header which says what license(s) they expect to govern their module. A tool could report any mismatch. Obviously, this would be useful for program authors who wish to check that their program can be released under a given license. It would also be useful for library authors who want to release their code under a BSD-style license and want to check they don't accidentally rely on a GPL library. -- Alastair Reid