aerique wrote:I am a couple of weeks away from releasing the first versions of three Common Lisp packages which all three provide an interface to a foreign library (a 3D engine, a physics engine and an input library).
Since I do not really know much about licenses my initial thought was to release them under the same license as the libraries they're interfacing to which are the: GNU Lesser General Public License, Zlib license and the zlib/libpng license respectively.
However I'm not really sure whether that is actually the smartest thing to do. I basically want people to be free to use my code how they like as long as credit is given where credit is due and as long as they don't misrepresent their changes to my code as being the original thing. By the looks of I'm totally free to slap on the license I want on my code, but perhaps someone can elaborate or suggest otherwise.
Licensing a CL library in LGPL is a mistake because CL libraries can't be dynamically linked (well, ECL is the only exception I know about), so a LGPL library in Lisp is the same as a GPL library, which will make your code only be usable if other people release their code under the same license. Instead, you should either choose GPL or LLGPL.
None of these licenses you mentioned are "viral" (for dynamically linking, which is what you are going to do) so you can even make a closed library if you want to. I'd say that your options are basically these licenses:
GPL: people can only use your library to make GPL programs, which means that they always will have to release the source code.
LLGPL (Lisp LGPL): people can use your library and release their code under whatever license they want. If they distribute your library for themselves, they need to provide the source code, and, if they modify your library, the modifications should be released as well. This does not apply to the whole program, only modified parts of the library itself. (This is the equivalent to LGPL, but accepts statically linking, not only dynamically linking).
MIT / BSD-style: this is the "do whatever you like, but don't remove the credit". This means that someone can modify your library, close the source code and put your copyright notice somewhere in the documentation of his program, saying that one piece of the code was made by you, but your code would not be there, neither modified nor unmodified.
All of these options will only allow the use of your library if the copyright notice is retained, so, your credit can't be taken away in any option you make. MTI or BSD-style licenses are the most used and the ones that I would recommend, since that people would give you suggestions to your program if they have suggestions. The first option will make people avoid to use your library. I would use the second option only to a big, important and useful library.