docs: clarify dual licensing requirements and App Store restrictions

Make it explicit why dual licensing is NECESSARY (not optional):
- App Store and Google Play terms are incompatible with GPL-3.0
- FSF considers App Store distribution a GPL violation
- Mobile builds must exclude GPL code for platform compliance

Also clarify:
- Only copyright holder (KaProblem) can distribute proprietary mobile apps
- Third parties cannot distribute GPL apps on app stores (platform restrictions)
- Third parties cannot create proprietary versions from this code
- Contributors grant dual licensing rights for App Store compliance

Updates:
- Add 'Why Dual Licensing?' section explaining App Store restrictions
- Update copyright holder to KaProblem (https://www.kaproblem.com)
- Add App Store compliance context throughout documentation
- Clarify that this protects copyright holder's exclusive distribution rights

This prevents:
- Third parties from releasing proprietary mobile apps
- Confusion about why dual licensing exists
- GPL violations on app stores

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Stefan
2025-12-07 18:49:41 +01:00
parent d062fd738b
commit 1e78d8114e
3 changed files with 197 additions and 20 deletions
+98
View File
@@ -0,0 +1,98 @@
Chess Tutor - AI-powered Chess Training Application
Copyright (c) 2024 KaProblem (https://www.kaproblem.com / GitHub: stefan-kp)
All rights reserved.
================================================================================
WHY DUAL LICENSING?
================================================================================
Apple's App Store and Google Play Store terms are INCOMPATIBLE with GPL-3.0:
- App Store DRM conflicts with GPL's redistribution rights
- Platform restrictions violate GPL's freedom requirements
- FSF considers App Store distribution a GPL violation
Therefore, we CANNOT distribute GPL apps on mobile app stores.
Solution: Mobile builds exclude GPL code (Stockfish.js) and use API calls instead,
allowing proprietary licensing for app store compliance.
================================================================================
IMPORTANT NOTICE REGARDING DUAL LICENSING
================================================================================
This software is available under DUAL LICENSING terms:
1. GPL-3.0 License (Public Open Source Use)
- Source code is licensed under GPL-3.0
- You may use, modify, and distribute under GPL-3.0 terms
- See LICENSE file for full GPL-3.0 text
2. Proprietary License (Copyright Holder Only)
- Only the copyright holder (KaProblem/stefan-kp) may distribute under proprietary terms
- Specifically applies to mobile app distributions (iOS/Android)
- Required for App Store/Google Play compliance
- Third parties DO NOT have this right
================================================================================
THIRD PARTY RIGHTS AND RESTRICTIONS
================================================================================
If you are NOT the copyright holder, you must comply with GPL-3.0:
✅ ALLOWED:
- Use the software under GPL-3.0 terms
- Modify and fork the source code
- Distribute modified versions under GPL-3.0
- Create web applications using this code (under GPL-3.0)
❌ NOT ALLOWED:
- Distribute proprietary (closed-source) versions
- Create proprietary mobile apps for App Store/Google Play
- Remove or bypass GPL requirements
- Claim exclusive rights to the software
================================================================================
CONTRIBUTIONS
================================================================================
By contributing code, documentation, or other materials to this project, you:
1. License your contributions under GPL-3.0 for public use
2. Grant the copyright holder (KaProblem/stefan-kp) the right to use your
contributions under ANY license, including proprietary licenses
3. Represent that you have the legal right to make such grants
4. Understand that the copyright holder may include your contributions
in proprietary mobile app distributions for App Store/Google Play
This dual licensing model is similar to those used by MySQL, Qt, and other
successful open source projects.
================================================================================
DEPENDENCIES AND THIRD PARTY CODE
================================================================================
This software includes or depends on:
- Stockfish.js (GPL-3.0) - Chess engine
Used in web builds only, not included in mobile builds
- Next.js (MIT License)
- React (MIT License)
- Chess.js (BSD License)
- Other dependencies listed in package.json
Mobile builds do NOT include GPL-licensed components and use a network API
architecture instead, allowing proprietary distribution by the copyright holder.
================================================================================
For questions regarding licensing or to request a proprietary license,
contact: KaProblem (https://www.kaproblem.com or stefan-kp via GitHub)
Last Updated: 2024-12-07
+82 -18
View File
@@ -1,8 +1,19 @@
# Licensing Strategy
## Copyright Notice
Copyright (c) 2024 Stefan (stefan-kp)
All rights reserved. See license terms below.
## Overview
This project uses a **dual licensing approach** based on how the software is built and distributed:
This project uses a **dual licensing approach** where the copyright holder retains all rights to distribute under multiple licenses:
- **Source code repository**: GPL-3.0 (open source)
- **Mobile app distributions**: Proprietary (copyright holder only)
**Important:** Only the copyright holder (Stefan/stefan-kp) has the right to distribute this software under a proprietary license. All other parties must comply with GPL-3.0 terms.
### GPL-3.0 License (Web Version)
@@ -17,18 +28,45 @@ Users can:
- Bring their own API keys (Gemini)
- Run locally with client-side Stockfish
### Proprietary License (Mobile Version)
### Proprietary License (Mobile Version - Copyright Holder Only)
The **mobile version** (iOS/Android) does NOT bundle Stockfish.js. Instead, it uses:
The **copyright holder of the mobile app code using Capacitor** (KaProblem/https://www.kaproblem.com/Github stefan-kp) may distribute mobile versions (iOS/Android) under a proprietary license because these builds do NOT bundle Stockfish.js. Instead, they use:
- `RemoteEngine` - Makes API calls to a hosted server for chess analysis
- No GPL code is included in the mobile build
- Static export with API-only architecture
Therefore, the mobile app can be distributed under a **proprietary license**:
The copyright holder may distribute mobile apps under a **proprietary license**:
- Sold on App Store / Google Play
- Uses hosted API service
- No GPL restrictions apply
- No GPL restrictions apply to copyright holder's builds
**Third parties CANNOT do this.** If you fork this project, you MUST distribute all versions (including mobile) under GPL-3.0 or obtain explicit permission from the copyright holder.
## Why This Dual Licensing Approach?
### App Store Restrictions on GPL Software
Apple's App Store and Google Play Store have terms that are **incompatible with GPL-3.0**:
**App Store Issues:**
- GPL requires users to have the right to modify and redistribute software
- App Store's DRM and closed distribution model restricts this
- Apple's developer agreements conflict with GPL's freedom requirements
- FSF (Free Software Foundation) considers App Store distribution a GPL violation
**Google Play Issues:**
- Similar restrictions on modification and redistribution
- Signed APKs with locked keys conflict with GPL freedoms
- Platform terms impose additional restrictions beyond GPL
**Therefore:**
- We CANNOT distribute GPL-licensed apps on App Store/Google Play
- Mobile builds MUST use a proprietary license
- We achieve this by NOT including GPL code (Stockfish.js) in mobile builds
- Mobile apps use `RemoteEngine` (API calls) instead of `LocalEngine` (GPL)
This is why the dual licensing approach is **necessary**, not just optional.
## How This Works
@@ -68,21 +106,30 @@ class RemoteEngine implements ChessEngine {
## Legal Compliance
### GPL Compliance (Web)
### GPL Compliance (Web & Third Party Distributions)
The web version complies with GPL-3.0:
- ✅ Source code is available
- ✅ GPL license is included
-Users can modify and redistribute
-Users bring their own API keys (no lock-in)
All distributions of this software (by anyone other than the copyright holder) must comply with GPL-3.0:
- ✅ Source code must be available
- ✅ GPL license must be included
-Modifications must be GPL-3.0
-This includes mobile app builds by third parties
### Mobile Compliance
### Copyright Holder's Proprietary Mobile License
The mobile version is NOT a derivative work of GPL code:
-No Stockfish.js included in build
-Uses network API calls (not linking)
-Can be licensed separately
-Users pay for hosted service
Only the copyright holder can distribute mobile versions under proprietary terms because:
-Copyright holder owns all rights to the code
-No Stockfish.js included in mobile builds (no GPL dependency)
-Uses network API calls (not GPL linking)
-Dual licensing is a copyright holder's privilege
### Why This Works Legally
**Dual licensing** is only available to the copyright holder:
- The copyright holder wrote or received contributions to the code
- The copyright holder can license their work under ANY terms they choose
- Third parties receive the code under GPL-3.0 and must comply with those terms
- Third parties cannot "strip out" GPL code to make proprietary builds (license violation)
- Only the original author can grant proprietary licenses
## File Structure
@@ -108,7 +155,24 @@ chess_tutor/
### Contributing
All contributions to the source code repository are subject to **GPL-3.0**.
By contributing to this repository, you agree that:
1. Your contributions are licensed under **GPL-3.0**
2. You grant the copyright holder (Stefan/stefan-kp) the right to use your contributions under any license, including proprietary licenses
3. This allows the copyright holder to include contributions in proprietary mobile builds
All contributions to the source code repository are subject to **GPL-3.0** for public use.
### Third Party Use
If you fork this project:
- ✅ You MAY use it under GPL-3.0 terms
- ✅ You MAY distribute web versions (GPL-3.0)
- ✅ You MAY modify and redistribute (GPL-3.0)
- ❌ You CANNOT distribute proprietary mobile apps
- ❌ You CANNOT remove GPL requirements
- ❌ You CANNOT claim copyright holder privileges
Any mobile app you build from this code MUST be distributed under GPL-3.0.
### Building for Web
+17 -2
View File
@@ -513,9 +513,24 @@ Debug mode is a powerful feature that helps you understand and troubleshoot how
## License
This project is licensed under the GNU General Public License v3.0 (GPLv3) - see the [LICENSE](LICENSE) file for details.
Copyright (c) 2024 KaProblem (https://www.kaproblem.com). All rights reserved.
This application uses [Stockfish](https://stockfishchess.org/), which is licensed under the GPLv3.
This project uses **dual licensing** (required for App Store compliance):
- **Source Code**: GPL-3.0 (see [LICENSE](LICENSE))
- **Mobile Apps**: Proprietary (copyright holder only)
**Why Dual Licensing?**
App Store and Google Play terms are incompatible with GPL-3.0. Mobile builds exclude GPL code (Stockfish.js) and use API calls instead, allowing proprietary licensing for app store distribution.
**Important for Third Parties:**
- You may use this code under GPL-3.0 terms
- You CANNOT distribute GPL apps on App Store/Google Play (platform restrictions)
- You CANNOT create proprietary mobile apps from this code
- Only the copyright holder can distribute proprietary versions
- See [COPYRIGHT](COPYRIGHT) and [LICENSING.md](LICENSING.md) for details
This application uses [Stockfish](https://stockfishchess.org/), which is licensed under GPL-3.0 (web builds only; mobile builds use API calls).
## Credits
- Opening collection originally by [ragizaki/ChessOpeningsRecommender](https://github.com/ragizaki/ChessOpeningsRecommender)