Jacob Feldstein, a student intern at GRR, contributed to this article.
Let’s say you have a great idea for a software-based computer program, like a computer game, an image editor tool, or any other program one could operate on a personal computer or mobile device. In order to create your idea as a piece of software, the software must be written in source code. Source code languages, such as Java, C++, Python, Perl, and PHP, are human-readable versions of a computer language which allow you to create instructions for a computer to execute. Source code languages facilitate the ability for us to draft software, as it can be extremely difficult to write software in object code, which is the machine code language that the computer actually executes. Once the source code is completed, it is then “translated,” or compiled/assembled, to object code for a computer to execute.
Open Source Code, also known as open source software, is premade source code that serves a particular purpose and is licensed by the author of the source code for use by others under a specific type of license. It is important to note that the term “open-source software,” or the misnomer “free software” as sometimes used, does not mean that the software is “free to use” or in the public domain. Although not strictly defined, the term “open source software” signifies that a particular piece of software is provided under a type of license that satisfies a series of elements.
Using pre-existing open source code and incorporating it into your software can alleviate time constraints and can be a simple solution to comply with strict deadlines when developing software. A quick search on GitHub or SourceForge can provide you with vast amounts of open-source code which you could incorporate into your software and may eliminate hurdles you may encounter during development. The open source code may provide the same or similar functionality which you may need to incorporate into your software. Open-source code can be an excellent resource, so long as you remember that the code you use is provided under a license which has certain terms.
There are various benefits to using open-source code. Besides finding a solution for an algorithm that you may need to incorporate into your software, open-source code is generally peer-reviewed, which can result in that particular piece of software being optimized by reducing the complexity of the software, limiting extraneous processes to improve efficiency, or having certain defects removed from the original software. From a development standpoint, including this type of software can reduce development effort, debugging and testing time, and allow for customization of the software to fit a particular purpose.
An open source software license generally permits the use and distribution of the source code by a licensee so long as the licensee’s manner of use is compliant with the license. In particular, an open source software license provides the source code to any licensee, meaning that the source code is visible to others. Perhaps more importantly, most licenses permit those accessing the source code (i.e., the licensee) to make modifications to it, thereby creating a variation of the software (and therefore a new software). The new, modified software is referred to a derivative work.
The general criteria for a license to be considered an “open-source license” are:
- The license must allow for free distribution of open-source software.
- The source code must be provided, and its distribution must be allowed.
- The license must allow modifications to and allow for derivative works of the source code.
- Any newly modified or derived code is to be distributed under the same terms as the license of the original software.
- The rights attached to the software distributed under the open-source license must apply to all to whom the software is redistributed without the need for execution of an additional license by those parties.
A more detailed definition of all of the criteria of an open-source license is available here.
A common type of open source license is the General Public License (GPL). There are many versions and iterations of the GPL. Generally, the GPL requires that any derivative work must also be provided under license using the same GPL. Licenses which require any derivative works developed from open-source code are to be released under the same or similar license as the original, thereby also designating all derivative works as open-source code, is generally known as a “copyleft” license. Copyleft licenses include these reciprocal share-alike requirement provisions, and can ultimately determine which license you can distribute your software under.
However, not all open-source licenses are “copyleft” licenses or fit the criteria above for “open-source code.” For example, the Berkeley Software Distribution License, or BSD License, is a minimal open-source license which, depending on the version of the license, only comprises two or three clauses. The BSD License simply requires that any redistributions of source code distributed under the BSD license must retain the copyright notice, the list of conditions in the license (which vary by version), and the included disclaimer. You can find these licenses incorporated into software you use on a daily basis—for example, type “chrome://credits/” into your Google Chrome browser, scroll down to “Polymer” and you will see the New BSD License governing the Polymer software which is incorporated into Google Chrome. Google Chrome is using the open-source Polymer software developed by the Polymer Authors and is in compliance with the BSD license by including the copyright notice, the list of conditions, and the disclaimer.
Since open-source licenses can vary in terms and obligations, it’s important that you or your counsel understand the terms governing open-source software before you decide to incorporate or create derivative works from open source software as it can ultimately determine how you can use and distribute that software.