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.
Showing posts with label GPL. Show all posts
Showing posts with label GPL. Show all posts
Tuesday, September 18, 2007
Wednesday, September 12, 2007
FLOSS - The LGPL
My discussion about open source continues with a look at the LGPL license. When you are modifying large programs, the GPL is quite fair. In the cases of libraries, things are a bit different. A library is a collection of functions that are used to make writing new programs easier. The problem is that if you are using a GPL licensed library, you are using GPL code and have to release your project under the GPL. While one could argue that nothing but development time is forcing you to use that GPL library, some programmers feel that the library should be considered a separate entity from the main program and understand that some people don't want to release their source code. For those people there is the LGPL.
The Lesser General Public License was at one time known as the Library General Public License as the whole purpose of the license was to make it possible for library creators to allow other people to use their libraries in the project without forcing the project into the GPL. This license effectively treats the code within the library as a separate project from the main code. Any changes to the source code of the library are treated like changes to a GPL project. However, the project using the library can be released under any license or even kept as closed source.
The reason that the name was changed from Library to Lesser has to do with Richard Stallman's basic philosophy when it comes to open source software. Richard wants to see everything released under an open license, and as such the LGPL fails as it can be used as part of a closed source project. At the same time people who do use this license tend to do so because they want their source code to be usable by as many programmers as possible while still wanting the code they release to stay open. Some companies won't use GPL code but will use LGPL code so the LGPL programmers do have valid arguments. Likewise, certain types of projects really can benefit financially only if they are closed source so the LGPL allows those developers to at least contribute part of their work to the open source community which would be something they could not financially do if the GPL was their only choice.
The Lesser General Public License was at one time known as the Library General Public License as the whole purpose of the license was to make it possible for library creators to allow other people to use their libraries in the project without forcing the project into the GPL. This license effectively treats the code within the library as a separate project from the main code. Any changes to the source code of the library are treated like changes to a GPL project. However, the project using the library can be released under any license or even kept as closed source.
The reason that the name was changed from Library to Lesser has to do with Richard Stallman's basic philosophy when it comes to open source software. Richard wants to see everything released under an open license, and as such the LGPL fails as it can be used as part of a closed source project. At the same time people who do use this license tend to do so because they want their source code to be usable by as many programmers as possible while still wanting the code they release to stay open. Some companies won't use GPL code but will use LGPL code so the LGPL programmers do have valid arguments. Likewise, certain types of projects really can benefit financially only if they are closed source so the LGPL allows those developers to at least contribute part of their work to the open source community which would be something they could not financially do if the GPL was their only choice.
Wednesday, September 5, 2007
FLOSS - The GPL
The GPL (General Public License) is one of the longer licenses though all this legalize is needed in order to enforce the one primary purpose of this license. This license is designed to force people to share the source code. If you use GPL code in one of your projects then unless you have permission from the original owner of that code you need to release your source code under the GPL. Why should you have to release your source code? That is the cost of using the GPL licensed code. If you don't want to release your code don't use GPL licensed code in your program. Very simple, I don't see any issues. After all, if you are building your program on top of potentially hundreds of thousands of hours worth of other people's time, you have no right to expect them to let you use their work without any compensation. The compensation for their time is that any changes get released to the community.
If you have no intentions of changing the source code, then you have no problem at all. If you are just tinkering with the code and have no plans to release your experiments then you also don't have to worry about the license. If you are a huge corporation who want source code but don't want to pay programmers to write that source code for you, then you are going to either have to release your source code or find some BSD-like licensed program and make your changes to that as then you can keep your improvements to yourself.
One of the arguments against the GPL that boggles my mind is that it is a viral license. While it is true that any source code I release under the GPL stays under the GPL until the copyrights expire, I am still the copyright holder of any code that I write. If I want to then use my code in a non GPL project I am certainly within my rights to do so and nothing in the GPL prevents me from doing so. In fact, if I own all the code within a GPL project, I can decide to change the license of the project for any future release. While the source code for the last release is still available and under the GPL and can be forked by other people who may not like the new license I am moving my project to, the official version would be under the new license. So the only time GPL is viral is when you are using other people's GPL code and if you are using other people's work you have no right to complain.
If you have no intentions of changing the source code, then you have no problem at all. If you are just tinkering with the code and have no plans to release your experiments then you also don't have to worry about the license. If you are a huge corporation who want source code but don't want to pay programmers to write that source code for you, then you are going to either have to release your source code or find some BSD-like licensed program and make your changes to that as then you can keep your improvements to yourself.
One of the arguments against the GPL that boggles my mind is that it is a viral license. While it is true that any source code I release under the GPL stays under the GPL until the copyrights expire, I am still the copyright holder of any code that I write. If I want to then use my code in a non GPL project I am certainly within my rights to do so and nothing in the GPL prevents me from doing so. In fact, if I own all the code within a GPL project, I can decide to change the license of the project for any future release. While the source code for the last release is still available and under the GPL and can be forked by other people who may not like the new license I am moving my project to, the official version would be under the new license. So the only time GPL is viral is when you are using other people's GPL code and if you are using other people's work you have no right to complain.
Wednesday, August 29, 2007
FLOSS - Richard Stallman
If you are even slightly involved with open source then you have heard about Richard M. Stallman, the founder of the Free Software Foundation and the creator of the GPL. Some people idolize him, others think he is too evangelistic. I personally am envious of his hair. It is not fair that someone over two decades older than me should have so much hair when mine is prematurely falling out.
According to the legend, and I have heard this story from countless sources, Richard saw the need for the FSF when in the early eighties the MIT labs that he was working in received a new laser printer. This printer, as with other printers in the lab, was a shared printer. This means that you would send off your job to be printed and then collect it later. The programmers had the source code to the other printers drivers so had modified this code to send a message to the computer that send the print job once the job was done. This new printer did not have the source code included with it so Richard was not able to add this feature which pissed him off. To throw fuel on the fire, some of his associates were working on third party projects and could not share their code with him due to non-disclosure agreements. Richard decided that he didn't want to live in a world where software was controlled by corporations instead of the programmers who wrote the code so started the free software foundation as a way of making sure that there would always be an alternative to closed source software.
As explained in earlier entries, this lead to a problem. Wanting to give away source code is fine, but in order to make sure that the source code remained free you couldn't just give away the source code. What was needed was some way of making sure that the source code always remained free. And the way Richard did this is with something called the GPL.
According to the legend, and I have heard this story from countless sources, Richard saw the need for the FSF when in the early eighties the MIT labs that he was working in received a new laser printer. This printer, as with other printers in the lab, was a shared printer. This means that you would send off your job to be printed and then collect it later. The programmers had the source code to the other printers drivers so had modified this code to send a message to the computer that send the print job once the job was done. This new printer did not have the source code included with it so Richard was not able to add this feature which pissed him off. To throw fuel on the fire, some of his associates were working on third party projects and could not share their code with him due to non-disclosure agreements. Richard decided that he didn't want to live in a world where software was controlled by corporations instead of the programmers who wrote the code so started the free software foundation as a way of making sure that there would always be an alternative to closed source software.
As explained in earlier entries, this lead to a problem. Wanting to give away source code is fine, but in order to make sure that the source code remained free you couldn't just give away the source code. What was needed was some way of making sure that the source code always remained free. And the way Richard did this is with something called the GPL.
Thursday, July 12, 2007
GPL 2 for now
Last week I had a poll on Blazing Games about switching from GPL 2+ to GPL 3+ for licensing my Open Source releases. The voting breakdown was 57% for sticking with GPL version 2, 29% for going with version 3, 14% not sure about what this GPL thing I keep talking about is, and the remainder saying I should switch to a GPL 2 only license. I am thinking about posting a series of entries about my thoughts on the open source movement. I will make up my mind over the weekend, so don't be surprised if next week I start a series of rants about open source.
Subscribe to:
Posts (Atom)