Ashley Yakely writes:
OK, this may not be immediately practical, but... as contracts, would it be possible to express licenses in a Haskell-like language? Didn't Simon PJ do some kind of work on this? There seem to be interesting covariant/contravariant properties here, for instance, if I require you to allow A to anyone who does B, then that is satisfied if you allow more than A to anyone who does less than B.
I think that's a great idea. I've often thought that there ought to be a formal system for reasoning about source code licenses, at least so there would be a way to unambiguously decide when one license is "compatible" with another, and what precisely are the obligations on a programmer when distributing a work consisting of code licensed in two different ways. An DSL for licenses would be even better, since you'd presumably be able to interrogate the system to determine the properties of license combinations. Cheers, Simon