Key Rule

App store distribution counts as distribution. Every copyleft condition in your dependency tree is triggered.

1 IDE and Tooling No obligations

Your IDE (VS Code, IntelliJ, Xcode, Android Studio), linters (ESLint, Prettier, SwiftLint, clippy, Pylint), formatters (Black, Prettier), build tools (Gradle, Make, Cargo, go build), bundlers (Webpack, Vite, Rollup, esbuild), transpilers (Babel, TypeScript), test runners (Jest, Vitest, pytest, XCTest), and version control (Git). These are all development tools.

No obligations

None of these tools ship with your final product. They run during development and build time, not at runtime. Their licenses impose no conditions on your output.

Bundler runtime snippets

Some bundlers inject a small runtime snippet into your output (e.g. Webpack’s module loader). These snippets are typically released under the same permissive license as the bundler itself (MIT for Webpack, Vite, Rollup). The condition is simply to include the copyright notice, which is usually embedded as a comment in the output.

2 Language and Runtime No obligations

Swift, Kotlin, Dart, Java, TypeScript, Go, Rust, Python, Node.js, C/C++.

No license obligations apply. Compilers transform your code but do not embed themselves in the output. GCC includes a Runtime Library Exception that explicitly permits this. Java’s Classpath Exception permits proprietary applications that use the Java runtime. All major language runtimes are permissive or include exceptions for proprietary code.

Bundled runtimes

If you package a runtime with your binary (e.g. Python via PyInstaller), the runtime ships with your tool. Python’s PSF license is permissive. Check the bundler’s terms too.

3 Mobile Framework Obligations apply

React Native (MIT), Flutter (BSD), SwiftUI (proprietary), Jetpack Compose (Apache 2.0).

License conditions apply. All major mobile frameworks use permissive licenses.

Permissions

  • Commercial use
  • Modification
  • Distribution
  • Private use

Conditions

  • Include copyright notice
  • Include license text

Limitations

  • No liability
  • No warranty
Your obligation

Include framework license notices in your app’s acknowledgements or open source licenses screen.

4 Libraries and Dependencies Obligations apply

When you distribute your product (app stores, binary downloads, Docker images), every dependency ships with it. Each library’s license conditions apply.

MIT, BSD, Apache 2.0

Permissions

  • Commercial use
  • Modification
  • Distribution
  • Private use

Conditions

  • Include copyright notice
  • Include license text

Limitations

  • No liability
  • No warranty
Your obligation

Include each library’s copyright notice and license text in your product’s acknowledgements screen.

GPL

Permissions

  • Commercial use
  • Modification
  • Distribution

Conditions

  • Disclose source code
  • Same license on derivative works
  • Include copyright notice

Limitations

  • No liability
  • No warranty
Your obligation

Make your complete source code available under the GPL and include copyright notices.

LGPL

Permissions

  • Commercial use
  • Modification
  • Distribution

Conditions

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

Limitations

  • No liability
  • No warranty

LGPL permits proprietary use only if users can replace the library with a modified version — this is the “relinking” requirement.

Mobile apps (iOS, Android): Static linking is the norm. When the LGPL library is linked statically into your binary, users cannot swap it out. LGPL’s conditions therefore apply to your entire app, equivalent to GPL.

CLI tools in Go or Rust: Both languages produce statically linked binaries by default. The same consequence follows — LGPL behaves like GPL for your distributed binary.

Your obligation

Switch to dynamic linking, replace the dependency, or release your app under the LGPL.

Dynamic linking: If you dynamically link the library (e.g. a shared .so or .dll), users can swap the library without recompiling your binary. The LGPL conditions apply only to the library itself, not to your application code. You must ship the library’s source and allow relinking, but your proprietary code stays private.

AGPL

Permissions

  • Commercial use
  • Modification
  • Distribution
  • Patent use

Conditions

  • Disclose source code
  • Same license on derivative works
  • Network use is distribution
  • Include copyright notice

Limitations

  • No liability
  • No warranty

Same as GPL for distributed software, plus the network use clause. For distributed products, the distribution clause already applies, making AGPL equivalent to GPL.

Your obligation

Make your complete source code available under the AGPL and include copyright notices.

5 Assets and Resources Obligations apply

Fonts, icons, images, and other media bundled into your product.

Fonts

SIL OFL — Permissive for commercial use and web embedding. Google Fonts and most open source fonts use SIL OFL. Fonts cannot be sold standalone.

Proprietary fonts — Check the specific license. Some require a commercial license for app embedding or web use, and may have pageview limits, seat limits, or domain restrictions.

Icons and Images

License varies by source. Include attribution where required by the license.

Your obligation

Read the font license. If proprietary, verify that your usage tier complies with the license terms.

6 Operating System No obligations

Your product runs on the user’s device — Android (Linux GPL), iOS (proprietary), macOS, Windows, or Linux.

No license obligations apply. Your product is a user-space application and is not a derivative work of the kernel. The Linux kernel’s license does not extend to programs that run on top of it. Android’s C library (Bionic) uses a BSD license, not glibc (LGPL), specifically to avoid imposing conditions on app developers.

Docker images

If you distribute Docker images, the OS packages inside carry their own license obligations — but your application code remains independent.

7 Distribution No obligations

App Store and Google Play distribution counts as distribution in the legal sense.

Because you distribute your app to end users, every copyleft condition in your dependency tree is triggered. Permissive licenses require only that you include notices. Copyleft licenses may require source disclosure.

How to Fulfill Your Obligations

1. Include an Open Source Licenses Screen


Both iOS and Android have standard patterns for this.

This satisfies the “include copyright notice and license text” condition for MIT, BSD, Apache, and most permissive licenses.

2. Run a License Audit


Scan your dependency tree to identify all licenses before you ship.

3. Handle Copyleft Dependencies


If your audit reveals GPL or AGPL dependencies, you have a decision to make. Either comply with the source disclosure condition, or replace the dependency with an alternative under a permissive license. This is a business decision, not a technical one.