GPL answers from the SFLC (WAS: Re: ANN: hakyll-0.1)

I'm a Haskell newbie but long time open source developer and I've been following this thread with some interest. The GPL is not just a license - it is a form of social engineering and social contract. The idea if I use the GPL is that I am releasing free and open source software to the community. You are welcome to use it for any purpose but in exchange you must also agree to release any software you create that uses my software as free and open source. That is the difference between GPL and BSD type licenses. The GPL very deliberately creates an obligation. Yes, that can be inconvenient. It is meant to be inconvenient. Actually the GPL reminds me of a Haskell concept that I am struggling with right now - the monad. When I started writing Haskell code I was always trying to mix pure and IO code and I soon learned that once I used the IO monad I was stuck within it. The monad creates an inconvenient obligation and any IO code can only be used within other IO code. There are good reasons for monads (just as, in my view, there are good reasons for the GPL) but using them means that I need to make a lot of changes to the way I write software. Kevin

On Fri, Mar 5, 2010 at 12:53 AM, Kevin Jardine
I'm a Haskell newbie but long time open source developer and I've been following this thread with some interest.
The GPL is not just a license - it is a form of social engineering and social contract. The idea if I use the GPL is that I am releasing free and open source software to the community. You are welcome to use it for any purpose but in exchange you must also agree to release any software you create that uses my software as free and open source.
That is the difference between GPL and BSD type licenses. The GPL very deliberately creates an obligation. Yes, that can be inconvenient. It is meant to be inconvenient.
Actually the GPL reminds me of a Haskell concept that I am struggling with right now - the monad. When I started writing Haskell code I was always trying to mix pure and IO code and I soon learned that once I used the IO monad I was stuck within it. The monad creates an inconvenient obligation and any IO code can only be used within other IO code. There are good reasons for monads (just as, in my view, there are good reasons for the GPL) but using them means that I need to make a lot of changes to the way I write software.
Sure. You can put a GPL license on any software: license :: a -> GPL a And if you could have used some public domain package 'a' to create some GPL'd software, then you can use the GPL'd 'a' to create that same software. usage :: (a -> GPL b) -> GPL a -> GPL b :-P Luke

On Fri, 2010-03-05 at 01:42 -0700, Luke Palmer wrote:
On Fri, Mar 5, 2010 at 12:53 AM, Kevin Jardine
wrote: I'm a Haskell newbie but long time open source developer and I've been following this thread with some interest.
The GPL is not just a license - it is a form of social engineering and social contract. The idea if I use the GPL is that I am releasing free and open source software to the community. You are welcome to use it for any purpose but in exchange you must also agree to release any software you create that uses my software as free and open source.
That is the difference between GPL and BSD type licenses. The GPL very deliberately creates an obligation. Yes, that can be inconvenient. It is meant to be inconvenient.
Actually the GPL reminds me of a Haskell concept that I am struggling with right now - the monad. When I started writing Haskell code I was always trying to mix pure and IO code and I soon learned that once I used the IO monad I was stuck within it. The monad creates an inconvenient obligation and any IO code can only be used within other IO code. There are good reasons for monads (just as, in my view, there are good reasons for the GPL) but using them means that I need to make a lot of changes to the way I write software.
Hmm. I believe that there are sufficient loopholes in GPL as library to not use it. Personally I follow such rules of thumb (for myself): - BSD3/MIT/... - Small code or BSD3 community - LGPL - Larger libraries - GPL - Programs BTW. What if package have multiply licenses? Cabal seems to not express following situations: - It is dual licensed - Library is LGPL but helper program is GPL - Part of library is on striker license but part of it is for example public domain (so it would be worth to note this)
Sure. You can put a GPL license on any software:
license :: a -> GPL a
And if you could have used some public domain package 'a' to create some GPL'd software, then you can use the GPL'd 'a' to create that same software.
usage :: (a -> GPL b) -> GPL a -> GPL b
:-P
Luke
Hmm. IMHO it is more similar class Licence l where license :: Package a => a -> l a class Licence l => GPLCompatible l where ... instance GPLCompatible GPL instance GPLCompatible LGPL ... liftToGPL :: (GPLCompatible l, Package a) => l a -> GPL a Regards

Maciej Piechotka
BTW. What if package have multiply licenses? Cabal seems to not express following situations: - It is dual licensed - Library is LGPL but helper program is GPL - Part of library is on striker license but part of it is for example public domain (so it would be worth to note this)
What seems to happen so far is that the library license is given in the Cabal file (as it has the most amount of code usually). For example, see the license for cpphs [1]; on Hackage it's listed as "LGPL" whereas the library is LGPL and the program is GPL. [1]: http://haskell.org/cpphs/ -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com

Ivan Lazar Miljenovic
For example, see the license for cpphs [1]; on Hackage it's listed as "LGPL" whereas the library is LGPL and the program is GPL.
Output from GPL programs is licensed under whatever license its input is licensed under (that is, the GPL doesn't say anything and forbids additional usage restrictions), I think the most prominent example is gcc, which you may use to develop closed-source programs. It's common to see programs under GPL and standard library code that is included by default under less restrictive licenses: If GHC was GPL, chances would be high that the RTS, itself, would still be licensed under BSD or similar. Doing otherwise just invites either forks or a community that is completely lacking any commercial members, both of which are usually not intended, at all. ...but that doesn't answer why cpphs is GPL/LGPL (as it does not inject any standard library code into its output[1]). I think it's the usual reason: The author generally wants GPL, but doesn't mind if anyone develops another program that does something the library part can be used for. [1] At least in Germany, there's no way in hell you could claim copyright on injected {-# LINE #-} pragmas ("Schaffungshoehe"). I will pity you if that's possible under your legislation -- (c) this sig last receiving data processing entity. Inspect headers for copyright history. All rights reserved. Copying, hiring, renting, performance and/or quoting of this signature prohibited.

Hi Kevin, I just wanted to say that's a very nice analogy. Thanks!
participants (6)
-
Achim Schneider
-
Ivan Lazar Miljenovic
-
Kevin Jardine
-
Luke Palmer
-
Maciej Piechotka
-
Simon Michael