Skip to content

Art deco illustration of legal documents

Software Licenses

The agreements that govern code

This section covers the most widely used open source licenses for software. Each license page explains the terms, typical use cases, and practical implications.

License Families

Licenses are grouped by their philosophical approach:

Permissive Licenses

These licenses grant maximum freedom with minimal requirements—typically just attribution.

  • MIT


    Simplest and shortest. The default for JavaScript, Ruby, and general-purpose projects.

  • Apache 2.0


    Includes patent grant. Standard in enterprise, Java, and Cloud Native ecosystems.

  • BSD


    Academic origins. Common in BSD systems and networking projects.

Copyleft Licenses

These licenses require derivative works to preserve the same freedoms.

  • GPL


    Strong copyleft. Applies to the entire combined work.

  • LGPL


    Weak copyleft. Only library modifications must be shared.

  • MPL 2.0


    Weak copyleft. Only modified files must be shared.

Other Licenses

Special cases that don't fit neatly into the above categories.

  • Public Domain


    No restrictions. Maximum freedom, no attribution required.

  • AGPL


    Network copyleft. Closes the "SaaS loophole" for web services.

  • Source Available


    Not open source. Code is viewable but usage is restricted.

Choosing a License

For guidance on selecting a license for your own project, see the Choosing a License guide.

License Identifiers

Each license has an SPDX identifier—a short, standardized code used in package managers and license scanners:

  • MIT - MIT License
  • Apache-2.0 - Apache License 2.0
  • GPL-3.0-only - GNU General Public License v3.0 only
  • GPL-3.0-or-later - GNU General Public License v3.0 or later

Using SPDX identifiers in your projects helps automated tools understand your licensing.