[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Question about packaging a library.



Neil Williams wrote:

If yes, what license would be best ?

There are so many, I wouldn't know where to start.
I'll put in my 2 cents, then.

There are TONS of free licenses, but for all intent and purposes, I really suggest you answer to yourself a couple of basic questions, and choose one of three licenses according to the answers.

First question - do you want to insist that anything your write and release as free code will remain free, no matter who or what? If the answer is "no", take the three clause BSD license or the X11 license.

Bear in mind that abuses have happened in the past. One example that is close to my heart is Wine. It started as an X11 license. A company called Transgaming kept using it commercially, performing development over it, but the almost all the contributions the community saw back from it were in the forms of promises (if we sell X licenses, we'll release the Direct3D code) which never transpired.

Eventually, all further development was switched to a license that does not allow such behavior (LGPL). If you don't like the idea that this should happen to your code, don't go for the X11 license. If you don't think there is anything wrong with it, the X11 license is what you want.

Second question: Is it ok with you if code you write will be used as a library that is used by potentially non-free software? If you only want your actual code to remain free, and don't particularly care how it's used, go with the LGPL. If you want all code which makes use of your code to be free as well, go with the GPL. Three licenses.

There are some things to bear in mind here too, though:
If you go with the LGPL, always remember that someone may create any APIs they want out of your code, including APIs that are cut in different locations than where you intended them to be. In effect, making code LGPL protects the actual algorithmic implementation, and very little else.

Conversely, bear in mind that the GPL only reaches as far as the copyright law lets it. There are cases today where a non-GPL program is using GPLed library/provider, and people have accepted it as a non-derived work relationship, which follows that the program is not required to be GPL as well.

Whatever you do, please avoid licenses outside those three unless there is a REALLY good reason. The most important feature of these three is that they are all upward compatible, and are fairly well understood. Writing your code with either one of these three licenses maximizes the amount of projects that can use your code, as well as the number of other people's code you can use.

and if you do use the exception, make that clear too as it does have implications for those who would modify or distribute your code.
Actually, the GPL exception was intended precisely so that it doesn't gravely implicate people using your code. The use of a non-free library, however, is something that needs to be pointed out clearly.

In the same way, if I wrote a program using java (Sun), could i
distribute it under the GPL license ?
That would be the LGPL, if I read the gnu site correctly, but I don't use Java at all, so I haven't really looked at that.
I think you misread it. The GPL specifically allows you to use libraries that are part of the development tools. Java clearly is.

         Shachar

--
Shachar Shemesh
Lingnu Open Source Consulting ltd.
http://www.lingnu.com/



Reply to: