LPI OSS Essentials study materials
LPI OSS Essentials study resources

LPI OSS Essentials: Open Source Software Licenses

LPI OSS Essentials · Work through your exam, one topic at a time.

All guide sections

Open Source Software Licenses

Open Source Software Licenses is the highest-stakes domain: questions test which obligations a license imposes, when they trigger, and whether two licenses can be combined.

Two families

  • Permissive - MIT, BSD-2-Clause, BSD-3-Clause, Apache-2.0. Keep copyright and attribution notices; derivatives may be distributed under other terms, including proprietary ones.
  • Copyleft - GPL, LGPL, AGPL, MPL, EPL. Distributed derivatives must stay under the same terms. Strength varies: MPL is file-level; LGPL permits linking with proprietary code if the user can relink against a modified library; AGPL adds a network clause (§13), so offering the software as a service obliges you to offer source.

License-specific details

  • Apache-2.0: express patent grant, trademark carve-out, NOTICE file retention, and a requirement to state changes. Compatible with GPLv3; not compatible with GPLv2.
  • GPLv2: source offer alongside binaries, no explicit patent grant; the "or later" wording decides whether GPLv3 applies. GPLv3: patent grant, anti-tivoization, termination with a cure period.
  • MIT/BSD: attribution and warranty disclaimer only. SPDX identifiers (e.g. GPL-3.0-only) make obligations machine-readable.

Compatibility reasoning

Permissive code can be merged into a copyleft project because it adds no extra terms; the combined work takes the copyleft license. The reverse fails: GPL code cannot be relicensed as MIT. GPLv2-only and GPLv3 code cannot be combined at all.

Worked example

A product bundles an MIT JSON parser, an Apache-2.0 library, and the vendor's own GPLv3 code. Permitted: both permissive licenses are GPLv3-compatible, so the binary ships under GPLv3 - but only if the MIT copyright notice, the Apache NOTICE file, and the GPL source offer are all preserved. Replace the vendor code with GPLv2-only and the Apache-2.0 component becomes the blocker.

Traps

  • "The GPL forbids selling software" - it forbids extra restrictions, not charging money.
  • Equating source-available licenses (BSL, SSPL) with open source; neither is OSI-approved.
  • Believing GPL obligations trigger on internal use or ordinary SaaS use - only distribution does, unless the license is AGPL.
  • Forgetting NOTICE retention under Apache-2.0.