On Fri, 2010-03-05 at 01:42 -0700, Luke Palmer wrote:
> On Fri, Mar 5, 2010 at 12:53 AM, Kevin Jardine <[email protected]> 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

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to