From 1e78d8114e46678ab73e64cc0eed0435e8c4333c Mon Sep 17 00:00:00 2001 From: Stefan Date: Sun, 7 Dec 2025 18:49:41 +0100 Subject: [PATCH] docs: clarify dual licensing requirements and App Store restrictions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- COPYRIGHT | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++ LICENSING.md | 100 +++++++++++++++++++++++++++++++++++++++++---------- README.md | 19 ++++++++-- 3 files changed, 197 insertions(+), 20 deletions(-) create mode 100644 COPYRIGHT diff --git a/COPYRIGHT b/COPYRIGHT new file mode 100644 index 0000000..b280123 --- /dev/null +++ b/COPYRIGHT @@ -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 diff --git a/LICENSING.md b/LICENSING.md index 9e23e8f..d52ab6b 100644 --- a/LICENSING.md +++ b/LICENSING.md @@ -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 diff --git a/README.md b/README.md index cb318e2..327e734 100644 --- a/README.md +++ b/README.md @@ -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)