Skip to content

Add CLA for GPLv3 and iOS AppStore compatability#92

Merged
bkeepers merged 2 commits intomainfrom
cla
Mar 24, 2026
Merged

Add CLA for GPLv3 and iOS AppStore compatability#92
bkeepers merged 2 commits intomainfrom
cla

Conversation

@bkeepers
Copy link
Copy Markdown
Collaborator

The GPLv3 and Apple's iOS App Store Terms of Service contain fundamentally incompatible requirements:

  1. DRM: Apple wraps all App Store binaries in FairPlay DRM. GPLv3 Section 3 requires distributors to waive legal power to forbid circumvention of technological protection measures.

  2. Additional restrictions: Apple's Usage Rules limit installation to authorized devices and require acceptance of Apple's ToS. GPLv3 Section 10 states "You may not impose any further restrictions on the recipients' exercise of the rights granted herein."

  3. Anti-tivoization: GPLv3 Section 6 requires providing "Installation Information" for User Products (which includes iPhones) — the keys and procedures needed to install modified versions. Apple does not permit sideloading modified App Store binaries, and distributors cannot provide Apple's signing keys.

The FSF confirmed this incompatibility in 2010 through enforcement actions against GNU Go on the App Store. Apple removed the app rather than change its terms. VLC was similarly removed in 2011 after a contributor complaint; VideoLAN resolved it by relicensing libVLC to LGPLv2.1+.

Copyright Holder Exception

A copyright holder cannot violate their own license. Per the GNU GPL FAQ:

"The developer itself is not bound by it, so no matter what the developer does, this is not a 'violation' of the GPL."

If Open Water Software, LLC is the sole copyright holder (or holds sufficient rights from all contributors), it can simultaneously:

  • License the source code to the public under GPLv3
  • Distribute the compiled app through the App Store under Apple's terms

This is not dual licensing — the public license remains GPLv3. It is the copyright holder exercising its inherent right to distribute its own work.

Contributor License Agreement

The complication arises with external contributions. A contributor's code enters under GPLv3, and distributing it with Apple's additional restrictions would violate their GPL grant — unless the project holds broader rights.

This is where the Contributor License Agreement comes in. Modeled on Signal's CLA, it grants Open Water Software, LLC a broad, sublicensable copyright and patent license over all contributions, while:

  • Contributors retain full copyright ownership of their work
  • The project commits to always releasing contributions under an OSI-approved open source license
  • The grant is broad enough to permit App Store distribution without violating any contributor's rights

Signal (AGPLv3) uses this exact approach to distribute on the iOS App Store. Their CLA grants Signal Messenger the same broad rights, enabling App Store distribution despite AGPL's even stricter network-use clause.

References

@CLAassistant
Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@bkeepers bkeepers merged commit 09d8336 into main Mar 24, 2026
1 check passed
@bkeepers bkeepers deleted the cla branch March 24, 2026 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants