Cheat Sheet

Quick reference. Print it, bookmark it, share it with your team.


The Core Distinction

Tool vs Component

Tools you use to build (IDE, compiler, build tool) impose no obligations on your output. Components shipped in your product (libraries, frameworks, fonts) carry their license conditions into your product.


Obligations by License and Product Type

LicenseMobile AppWeb FrontendWeb BackendPublic APICLI Tool
MIT / BSD / ApacheInclude noticesInclude noticesNo distribution**No distribution**Include notices
GPL v2/v3Source disclosureSource disclosureNo distribution*/**No distribution*/**Source disclosure
LGPLCheck linking methodCheck linking methodNo distribution**No distribution**Check linking method
AGPLSource disclosureSource disclosureSource disclosureSource disclosureSource disclosure
SSPLCheck termsCheck termsCheck service termsCheck service termsCheck terms
ProprietaryPer license termsPer license termsPer license termsPer license termsPer license terms

* Standard GPL conditions are triggered by distribution, not by execution on your server.

** “No distribution” assumes the code stays on your server. If you ship on-prem versions, provide code or builds to enterprise customers, or share Docker images externally, that counts as distribution, and all standard license conditions apply.


Tools: No Obligations

LayerExamplesObligations
IDE / EditorVS Code, IntelliJ, Xcode, Vim, EmacsNone
CompilerGCC, Clang, Rustc, Go, javacNone
Build tool / BundlerWebpack, Vite, Rollup, esbuild, Gradle, Make, CargoNone*
Linter / FormatterESLint, Prettier, Pylint, SwiftLint, clippy, BlackNone
Test runnerJest, Vitest, pytest, go test, XCTestNone
Package managernpm, pip, cargo, Maven, CocoaPodsNone
Version controlGit, GitHub, GitLabNone
CI/CDGitHub Actions, Jenkins, CircleCINone
Cloud / hostingAWS, GCP, Azure, Vercel, NetlifyNone
Operating systemLinux, macOS, WindowsNone (user-space programs are independent)

* Some bundlers inject a small runtime snippet into your output (e.g. Webpack’s module loader). These snippets typically use the same permissive license as the bundler (MIT). The condition is to include the copyright notice, which is usually embedded as a comment.


Common Licenses at a Glance

MIT

Permissions

  • Commercial use
  • Modification
  • Distribution
  • Private use

Conditions

  • Include copyright and license notice

Limitations

  • No liability
  • No warranty

Apache 2.0

Permissions

  • Commercial use
  • Modification
  • Distribution
  • Patent use
  • Private use

Conditions

  • Include copyright, license, and NOTICE file
  • State changes

Limitations

  • No liability
  • No warranty
  • No trademark use

GPLv3

Permissions

  • Commercial use
  • Modification
  • Distribution

Conditions

  • Disclose source
  • Same license (copyleft)
  • Include copyright and license

Limitations

  • No liability
  • No warranty

AGPL

Permissions

  • Commercial use
  • Modification
  • Distribution

Conditions

  • Disclose source
  • Same license
  • Network use triggers disclosure
  • Include copyright

Limitations

  • No liability
  • No warranty

LGPL

Permissions

  • Commercial use
  • Modification
  • Distribution

Conditions

  • Disclose source of library
  • Same license on library modifications
  • Allow relinking

Limitations

  • No liability
  • No warranty

Where to Include Notices (by Product Type)

Product TypeStandard LocationTools
Mobile App (iOS)Settings > Acknowledgements screenLicensePlist
Mobile App (Android)Open Source Licenses activityGoogle OSS Licenses Plugin
Mobile App (React Native)Dedicated screenreact-native-oss-license
Web App (Frontend)/licenses page or embedded in JS bundleLicenseWebpackPlugin, rollup-plugin-license
Web App (Backend)THIRD-PARTY-LICENSES file in repopip-licenses, license-checker
Public APITHIRD-PARTY-LICENSES file in repoSame as backend
CLI Tool—licenses flag + NOTICES file in packagelicense-checker, cargo-about, go-licenses

Three Steps

Step 1: Audit your dependencies

Run a license scanner. Know every license in your tree.

Step 2: Establish a license policy

Define which licenses your team can use without review, which need legal review, and which are not compatible with your product type.

Step 3: Include notices where required

Use the tools listed above to automate notice generation. Make it part of your build process.


License to Build: a plain-language guide to open-source license obligations. Not legal advice. When in doubt, consult a lawyer.