Apache 2.0 vs. BSD/MIT Licenses
A brief explanation of the differences between the Apache 2.0 and BSD/MIT licenses.
Table of Contents
Introduction
For the software I write, I prefer the BSD/MIT Licenses, but I use the Apache 2.0 License for software where it is important to me that it be used in industry and commercial applications.
I never use the GPL license because it restricts the freedom to use my software too severely. The GPL license is good for projects like the Linux Kernel, but it is not always the right choice.
Overview
Patent rights
Apache 2.0 explicitly grants patent rights from contributors to users. BSD/MIT say nothing about patents, leaving users exposed to potential patent claims.
Attribution requirements
Apache 2.0 requires including a copy of the license, preserving NOTICE files, and marking changes. BSD requires keeping the copyright notice in source and binary distributions. MIT is similar to BSD.
Patent retaliation
Apache 2.0 includes a clause that terminates your license if you patent something and sue the project for patent infringement. BSD/MIT have no such protection.
Compatibility
Both are permissive and generally compatible with most projects. Apache 2.0 is GPL-3.0 compatible, while BSD/MIT are GPL-2.0+ compatible.
Legal detail
Apache 2.0 is longer and more legally detailed, which can be better for large projects with multiple contributors. BSD/MIT licenses are short and simple.
Bottom line
Apache 2.0 is stronger on patent protection. BSD/MIT are simpler and more straightforward. For most small projects, MIT is sufficient. For corporate projects or projects with multiple contributors, Apache 2.0’s patent protections are valuable.
