We currently issue leJOS NXJ with a Mozilla Public License 1.0 license for historical reasons. Lots of code comes from the RCX version of leJOS amd that was issued under MPL 1.0.
We bundle a lot of jar files with leJOS which have different licenses. We include the license and the source for these products in our distribution. Some people on the forum have suggested this is not legal but according to Charles Manning, it is. A particular example i bluecove-gpl which has a GPL license.
Use of code with different licenses
We have some code that was issued with GPL, such as the printf code in the firmware and David Anderson's libnxt code, some of which we still retain.
Some of our Java code is indirectly derived from Sun's openjdk code, or previous versions of Sun's java code. There is not much of this and very little is a direct copy, as we have mainly written the Java classes from scratch to work with leJOS native methods and leJOS restrictions. However, we do not strictly follow "clean room" procedures.
Some of the firmware code is indirectly derived from LEGO's open source MINDSTROMS NXT firmware. However, none of it is a direct copy - we have just examined the LEGO code and got ideas from it. Again, we have not folowed strict "clean room" procedures.
The options for the preferred license are GPL, LGPL, or something like Sun's openjdk GPL license with CLASSPATH exception.
The main issue between GPL and LGPL is whether we wish to allow our libraries to be used in proprietary products. We could issue some code in GPL and some in LGPL. My understanding is that MPL 1.0 is closer to LGPL than to GPL.
If we want to use openjdk, I think we need to issue our Java code as GPL with a classpath exception.
What we would need to do to relicense
In order to relicense our code, we would need to obtain the permission of the authors. David Anderson started this process ang gort the permission of eveyone other than Paul Andrews. Paul's contributions to the NXT version are limited to code copied drom the RCX version. He made signicant contributions to the VM and some of the Java classes.
If we want to use openjdk code, we probably need use a GPL licensee with a CLASSPATH exception, at least for the Java parts of our code. As we probably cannot use Sun's license for our Java code, we would probably have to write our own license.
We should probably have headers on every source file saying which license it uses, particularly if some files come directly from openjdk. Adding such headers to every source file would be time consumimg.
The benefits of relicensing
- We would have a much more modern license.
- We could use openjdk code.
- We could get rid of any worries about the legality of the use of some of our code.
Why we haven't relicensed
- I don't think any active member of the team understands these issues very well.
- No active team member is an expert on drafting licenses, an it looks like we need our own license.
- We have managed not managed to contact Paul andews
- It looks like a lot of work, particularly if we have to add headers to all files