The BSD family of open source software licenses has a long history. The first version was created at UC Berkeley in 1980 to accompany the university’s new UNIX-based operating system, the Berkeley Software Distribution, or BSD OS. This initial version, known as the 4-Clause BSD license, isn’t used much today, nor is the 0-Clause variant (which is essentially a public-domain-equivalent license). This leaves the BSD 3-Clause and BSD 2-Clause as the versions that we see with some regularity.
Currently, the most popular BSD variant — and the subject of this post — is the BSD 3-Clause License.
Unlike the popular GNU GPL family of licenses (GPL v3 and GPL v2), the BSD licenses are all permissive, meaning there are few restrictions on use of the licensed code. But how does the BSD 3-Clause License differ from other permissive licenses, and even other variations of the BSD? And why might OSS authors and users select code licensed under BSD 3? Let’s dive into the details.
BSD 3-Clause License: The Basics
BSD licenses are permissive, meaning that they don’t require very much from users of the licensed open source software. In fact, the requirements of the BSD 3-Clause License are very similar to those of the widely used MIT License. And like the MIT License, the BSD 3-Clause is short (if not necessarily easy to understand).
The BSD 3-Clause License has two key requirements of those who want to use the licensed code. They’re actually the same as those of the MIT license. If you plan to copy, modify, or distribute any code licensed under BSD, you must include:
- The full text of the license
- The original copyright notice
It’s easy to confuse these two, though. For a license like BSD or MIT, the copyright notice is “baked in” to the license. So, if you copy the entire license, you are actually copying both. Each of these is a template license. In BSD, you will see this line at the beginning of the terms: “Copyright (c) $YEAR $OWNER, All rights reserved.” The author of the code fills out this information before putting the license in the code repository. This is different from licenses like GPL or Apache 2.0, where the copyright notices are not in the base license document.
Using the Licensed Code
Users of BSD-licensed code may:
- Use the code commercially. Companies can include BSD’d code in proprietary software that they then sell to the public.
- Modify the code. Developers are permitted to update or rework the original code.
- Distribute reworked versions or copies of the code. An individual or company can make their updated version(s) of the code available to others, either commercially or privately.
- Place warranty. Users of the open source code are allowed to place a warranty on the licensed software.
The terms of BSD say that contributors to BSD 3 Clause-licensed code cannot be held liable for any damages resulting from modifications or updates to the original work. In addition, any person or company that makes use of code licensed under BSD 3 is prohibited from using the name of the project or its contributors to promote their derivative work without written permission. In fact, this is the subject of the titular third clause of the BSD 3-Clause License.
While the BSD 3-Clause License is currently the most-used BSD license, you may come across other versions. These are the 4-clause, 2-clause, 1-clause, and 0-clause license variants. As the names imply, the key differences between them have to do with the number of clauses in the license. Let’s go through each.
The 4-Clause BSD License is the “original” BSD license created in 1980 at UC Berkeley. Unlike all later versions, the first BSD license included an “advertising clause,” which required all advertisements promoting software based on BSD code to include the following acknowledgment: “This product includes software developed by the University of California, Berkeley and its contributors.” However, this requirement was quickly found to be cumbersome, and as a result, the clause was removed from subsequent versions.
An important note: Open source licenses generally have deprecated advertising clauses. So, if you find code under a license with an advertising clause, you may want to consider whether it is up-to-date and secure.
Also known as the “simplified BSD license” and "freeBSD license," the 2-Clause BSD license omits the third clause of the BSD 3 (also known as the “non-endorsement clause”). This is the clause that prohibits users from using the name of the project to promote their derivative work(s). The 2-Clause license joins the 3-Clause license as commonly used BSD variants.
Finally, the 0-Clause BSD License does not require users to include the license text or copyright notice in their copy or modification of the code. In other words, it has no requirements whatsoever, making it a public-domain-equivalent license.
The BSD 3-Clause License vs. Other Permissive Licenses
The popularity of permissive licenses has been growing steadily over the past few years, particularly that of the MIT License and the Apache License 2.0. Below, we’ll compare these options with the BSD 3-Clause License.
BSD 3-Clause License vs. the MIT License
These two licenses are very similar, with the key exception of the BSD 3’s non-endorsement clause, which prohibits promotion of any derived work using the name of the license or its authors. In addition, the language of the MIT License is simpler and shorter.
BSD 3-Clause License vs. Apache License 2.0
The Apache License 2.0 differs from the BSD 3-Clause License in several key respects. The first is the Apache License’s explicit grant of patent rights and defensive termination provision, which is not included in any of the BSD license variants. This aspect of the license provides legal protection and peace of mind to companies that make use of Apache-licensed code. In contrast, the BSD license is thought to grant some patent rights by implication, and the scope of that license is, at best, unclear. Secondly, the Apache License requires all users to list out significant changes and modifications to the original code. The BSD 3-Clause License has no such provision. Finally, the BSD license is compatible with every major copyleft license, including GPL v2, while Apache 2.0 is arguably incompatible with GPL v2.
Use Cases for the BSD 3-Clause License
There are several reasons why open source authors and users alike might select the BSD 3-Clause License for their OSS project. These reasons also apply to the other commonly used BSD license variant, the BSD 2-Clause License, with the exception of anything related to the non-endorsement clause. (The non-endorsement clause is not part of the BSD 2-Clause License.)
Authors tend to choose permissive licenses like the BSD 3-Clause because they’re easy to implement, don’t have many requirements, and offer flexibility. The BSD license is compatible with every major copyleft license, including GPL version 2. If an author wants their OSS code to reach the widest possible audience, a permissive license is the best option. However, an author may also want to ensure that the name of the project or its contributors aren't used without permission. In that case, the BSD 3-Clause License in particular has the advantage over MIT or Apache. (Although it's worth noting that trademark law is a stronger protector than the BSD trademark clause.)
Like authors, users decide to work with code under permissive licenses for a number of reasons. One is protection from lawsuits. Simple permissive licenses like the MIT License and the BSD 3-Clause License allow organizations to do nearly whatever they like with the code. And while the Apache License 2.0 does offer an explicit grant of patent rights, it’s also a more cumbersome and “legalese-heavy” option. Apache 2.0 also is arguably incompatible with GPL v2. The BSD 3-Clause also requires companies to give credit to the original project should they choose to use its name in promotions, which helps ensure the company is covering its legal bases when it comes to marketing its derived works.
Well-Known Uses of the BSD 3-Clause License
The Future of the BSD 3-Clause License
Currently, the BSD 3-Clause License is less popular than other permissive licenses like the Apache License 2.0 and the MIT License. However, it is the most commonly used of the BSD license family. Also, you may come across one of the several BSD variants during your time working with OSS, so it’s helpful to have a basic understanding of this group of licenses.