
On Wed, Jan 26, 2011 at 1:27 AM, Chris Smith
On Tue, 2011-01-25 at 23:03 -0800, John Millikin wrote:
It's not possible for a .cabal file to specify which license the final binaries will use -- it depends on what libraries are locally installed, what flags the build uses, and what the executables themselves link.
It's certainly possible for library authors to indicate in their Cabal files the licensing restrictions that use of the library will place on the end result. The library author knows about all of this stuff. Sure, it may not be a perfect system -- but in practice, flags should probably not change licensing anyway, and there will nearly always be some license that is the most restrictive of all that apply and so can be said to govern the end result by itself.
Of course the final executable would need to collect the licensing restrictions of all of its dependencies. But it then would not need to recursively check their dependencies, and so on.
I state the license of what is being distributed - and what is being distributed is the source code as I wrote it. For me it is conceptually the easiest to understand, as I don't know in what environment the code will be compiled. Taken to an extreme, I don't want to have to list my library as GPL because it will be linked against the stock GHC runtime by almost all of its users. I also don't want my package description to be wrong when my transitive dependencies change - either by re-licensing or by their adding new dependencies. Antoine