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 (albeit with a few important nuances).
Requirements
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 who 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.
BSD License Variations
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
Below, we’ll compare several other popular permissive licenses — the MIT License and the Apache License 2.0 — to the BSD 3-Clause.
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.)
For Authors
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.)
For Users
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
Rich text editor Quill licenses its software under the BSD 3. Another example is key/value store levelDB, created by Googlers Jeffrey Dean and Sanjay Ghemawat.
Frequently Asked Questions About the BSD 3-Clause License
What is the BSD 3-Clause License?
The BSD 3-Clause License is a permissive open source software license that allows users to freely use, modify, and distribute code with minimal restrictions. It's the most popular variant of the BSD license family and is similar to the MIT License, with the addition of a non-endorsement clause.
What are the requirements of the BSD 3-Clause License?
The BSD 3-Clause License has two main requirements: you must include the full text of the license and the original copyright notice when you copy, modify, or distribute the code. The copyright notice is typically "baked in" to the license template, so copying the license includes both.
What is the third clause in the BSD 3-Clause License?
The third clause is the "non-endorsement clause," which prohibits users from using the name of the project or its contributors to promote their derivative work without written permission. This clause distinguishes BSD 3-Clause from the 2-Clause BSD license.
Can I use BSD 3-Clause licensed code in commercial software?
Yes, the BSD 3-Clause License explicitly allows commercial use. You can incorporate BSD-licensed code into proprietary software, modify it, and sell it, as long as you include the copyright notice and license text.
Do I need to share my modifications to BSD 3-Clause licensed code?
No, the BSD 3-Clause License does not require you to share your modifications or release them under the same license. You can keep your changes proprietary and private, which is a key feature of permissive licenses.
What's the difference between BSD 3-Clause and BSD 2-Clause licenses?
The BSD 2-Clause License (also known as the "simplified BSD license") omits the third clause of BSD 3-Clause, which is the non-endorsement clause. Both licenses have the same basic requirements, but BSD 3-Clause provides additional protection against unauthorized use of the project name.
What's the difference between BSD 3-Clause and MIT licenses?
The BSD 3-Clause and MIT licenses are very similar, with the same basic requirements. The main difference is BSD 3-Clause's non-endorsement clause, which prohibits using the project name for promotion without permission. The MIT License also has simpler, shorter language.
What's the difference between BSD 3-Clause and Apache 2.0 licenses?
Apache 2.0 has explicit patent rights grants and defensive termination provisions that BSD 3-Clause lacks. Apache 2.0 also requires users to list significant changes, while BSD 3-Clause has no such requirement. However, BSD 3-Clause is compatible with GPL v2, while Apache 2.0 is arguably incompatible with GPL v2.
Is the BSD 3-Clause License compatible with GPL?
Yes, the BSD 3-Clause License is compatible with all major copyleft licenses, including GPL v2 and GPL v3. You can combine BSD 3-Clause licensed code with GPL-licensed code, but the resulting work must be licensed under GPL due to GPL's copyleft requirements.
