Licensing defines the reuse and permissions around the project's code. A project license defines how someone may use or redistribute a project's intellectual property (IP). A contributor license agreement (CLA) defines the terms under which a contributor grants a project the right to use and redistribute their IP.
First, licensing your software appropriately can help protect you from various kinds of warranty claims by users and limit your liability.
Second, a software license can limit how someone uses your software. More permissive licenses (like MIT and Apache 2) allowing modification and even closed-source distribution and monetization. More restrictive "copyleft" licenses (like GPL-3) require that copies and modified versions of the software be kept open source and under the same license.
Finally, dictating the terms under which a contributor may grant rights in their IP to a project can help disambiguate ownership and keep a project's code flexible to change.
Two de-facto standards exist for documenting both outbound and inbound licenses.
GitHub expects a project's license to exist in a LICENSE.txt
or
LICENSE.md
file in the root of your project's source code
repository.
Choose a License is a great resource for helping guide you through this decision. Adobe recommends using Apache 2 for most projects, but MIT is also acceptable for documentation and sample code.
It is best to document whether you require an inbound license, also known as a
CLA, in your project's CONTRIBUTING.md
. The Adobe open source starter repo's
CONTRIBUTING.md
calls this out near the top of the
document.
Adobe projects going open source and into the public need to have external contributors sign Adobe's CLA before contributions from them can be accepted.
Most small-scale open development projects don't need a CLA as services like GitHub by default treat the outbound license as the inbound license.
On the "copyleft" spectrum, requiring that distributions of copies and modified versions of the software remain open source:
On the more permissive spectrum, allowing modification, commercialization and redistribution:
- Adobe's Contributor Level Agreement
- Microsoft's Contributor License Agreement
- Canonical's Contributor License Agreement
- choosealicense.com
- Adobe's CLA
- Microsoft's CLA
- Canonical's CLA
- GitHub Licensing Help Article
- GitHub Inbound=Outbound Terms of Service
- Adobe's Open Source Office's Starter Repo's
CONTRIBUTING.md
- MIT License
- Apache 2 License
- GPL 3 License
- BSD 3 Clause License
- Adobe's Open Source Guidelines For Use In Adobe Products