| |
|
Using Open Source Code in Commercial Applications
2008-02-02
Doing business 100% by the letter of the law is very important, especially when you're in software development. That's why it's integral that any code you use be licensed properly, as you may be playing with fire when you use random code found on the web. This becomes especially dangerous if the code doesn't have specific licensing information included with it. Just because it's published on the web, doesn't mean any rights were waived or granted to use the code. Unless the author specifically grants you the right to use reuse it, then chances are you're committing a copyright violation, which potentially exposes both you and your company to financial liability. Granted, most individuals out there are not going to sue you, but in Software development, it is always better safe than sorry. Fortunately, there are a lot of open source code which does grant you the right to use, sell, sub license, and otherwise exploit the code to your advantage, all without requiring a royalty or any other restrictions except keeping a notice of the code's original license in your distributions. It's a puny price to pay! In this article, we'll talk about a few specific licenses for software development and how they can and cannot be integrated into business software solutions.
To preface this next paragraph, let me start by saying that the GPL is one of my favorite license and I do write and release GPL code. It allows people to safely code a completely free project, while also insuring that all future contributions to the code are free as well. There is some great logic to the GPL, and it offers great protection to the spirit of truly free software. However, when a person requires a bit of code for a strictly commercial, non-GPL licensed project, the GPL prohibits the use of the code from being used in that custom software development. For that reason, the open source license(s) of choice are the MIT and/or BSD license, which allows full use of the code in closed source, commercial applications.
Essentially, the BSD/MIT/Apache licenses all say the same basic things. They generally grant permission for use, disclaim liability, and claim copyright over the code. There is usually a stipulation stating that the license must be redistributed with the code as well (and the resulting application.) In layman's terms, the license is saying do whatever you want with the code, just keep the license intact and don't blame or sue us if something goes wrong. This is perfect for software development since the source may remain closed and a price charged for the end product.
So when should you use an open source license in the course of a project? Generally it's best to augment an existing project with code that someone else has already written that is better or when the amount of time to code it from scratch can not be justified. In addition, if you get stuck near the beginning of a coding task, this is always an option to consider. I would recommend against taking open source projects, then simply renaming it or making cosmetic changes and trying to pass it off as your own. The internet's a big place and people will definitely find out. That's not to say you can't take an open source project (I am of course referring to BSD/MIT/Apache licenses) and use it as a base for something much bigger. A notably example of this strategy is Apple's use of the FreeBSD operating system as a base for Darwin/Mac OSX. Using FreeBSD, which unsurprisingly is licensed under the BSD license, allowed Apple to legally develop a proprietary, closed source operating system using open source code. The great thing is that anyone can easily do that, whether you're starting a project from scratch or looking for code that provides features that you do not wish to code yourself.
Licensing issues remain one of the most difficult tasks left to the freelance and/or hobby programmer. Fortunately, by understanding and implementing source code governed by the proper license, you are protecting yourself from future litigation while simultaneously reaping the benefit of another's coder hard work. Don't forget to thank them, and consider returning the favor by releasing your open source code to the community.
View other articles in the Software Development category.
View other articles in the Open Source sub-category. |