Tuesday, September 18, 2007

Your BDS is in My GPL

There is an interesting debate going on in the open source community about the use of code under the BSD license with code under a GPL license. If you actually read the BSD license, or better yet have your lawyer read it, you will see that certainly is allowed. If you follow the BSD license to the letter, and include the BSD license with the BSD code you are using then you can certainly use BSD code within a GPL project. What confuses me is the fact that die-hard BSD fanatics have no problems with BSD code being uses in commercial projects from which no code is returned to the open source community, yet have a problem with the code being used within a GPL project.

The issue, I believe, is that the GPL is a more restrictive license than the BSD license because it forces you to share changes. This means that GPL code can not be used within BSD programs due to the basic fact that the code sharing requirements are not covered by the BSD license. This means that any changes to the BSD code within the GPL project would be under the GPL license. While someone could strip out all the GPL code and be left with BSD licensed code, they would not get the improvements. As the BSD license does not require sharing of improvements, this is a non-issue. If the author of the code wanted to make sure that improvements had to be shared, then they should have gone with a license that requires this, such as the GPL.

I tend to be a NIH (Not Invented Here) type programmer meaning that I tend to want to write as much of the code myself as possible. While I have no problem using the libraries that are a standard part of a language, I tend to avoid using third party libraries whenever possible. This is largely a result of bad experiences with closed source libraries. As code complexity continues to grow this is becoming less possible to not use third party libraries and I suspect that future projects will likely be built on top of other peoples code so issues like the one above are going to become increasingly important to me. My thoughts are that if changes are made to a third party chunk of code, those changes should be offered to the original project.

There are al lot of BSD fanatics who seem to live in an alternate universe where big businesses are honest and give back to the community as much or more than they take. My experience with big business is quite the opposite which is why most of my projects tend to be released under the GPL or LGPL for the very simple fact that I want any source code that I release to stay open. I think that most people who do go with a GPL license feel the same way which is why there is such a vast amount of projects that are licensed under it.

No comments: