I'm most of the way through coding a Sudoko program; due to other work & family pressures there's no chance it'll be ready for the competition deadline, but I figure given the time I've put in so far I may as well still finish it off. But what's doing my head in the most (far more so than the coding) is trying to figure out what license(s) I can release it under.
The application is written in Java, and I've made use of a number of existing libraries chosen on technical merits, however, they're covered by a variety of licenses. To compile & run the app, it needs various libraries from Apache (using both v1.1 & 2.0 of the Apache License) and one from dev.java.net that uses the Lesser GPL. There's also some libraries used by the optional build-time unit tests & code coverage analysis which use the IBM Common Public License and the BSD License.
For myself, I'd be perfectly happy for my code to be GPL'd, but I see from the GNU web site that they consider every other license I mentioned above (apart from the LGPL) as GPL-incompatible, so I can't use that. There didn't appear to be a similar summary of LGPL-compatibility. And stuff I've read on the Apache web site and Cocoon mailing lists suggests the LGPL isn't compatible with their license either (at least, current policy is that Apache projects can't upload LGPL libraries to their CVS), which rules that out too. So what license can I use for my app? Is LGPL okay or not?
The libraries using the other licenses are only used when running the unit tests, so I could live with not distributing those at all and forcing developers to download them separately if they really want to run the tests. But the runtime dependencies really ought to be distributed with my jar, otherwise it'll be too hard to install and run the program. Perhaps someone could point me at a nice simple chart on a web site somewhere that shows the different combinations of "If you re-use code under license X, your code must use license Y or Z"? Failing that, an article in the next issue will do
I guess if I'd thought about it early enough in the project, I'd have limited myself to only using libraries that were GPL/LGPL. It's a bit late to change now, though. Besides, I didn't much like any of the other code coverage tools I looked at, and a lot of the Apache java libraries are practically industry standards, so they seemed like a good idea at the time...