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.