docs: add AGPL extension exception for third-party plugins (#6)

* docs: add AGPL extension exception for third-party plugins

Extensions that interact solely through the documented Extension API
(Extension interface, ExtensionContext, event bus) are not considered
derivative works and may be licensed under any terms, including
proprietary. Core modifications remain fully AGPL-3.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: address review — explicit route path, precise irrevocability, revert security email

- Name the catch-all route file explicitly in the extension exception
- Clarify that irrevocability binds the copyright holder, not downstream
  redistributors (per AGPL section 7 removal rights)
- Revert SECURITY.md to role-based security@arcim.io alias

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-03-09 14:53:15 +01:00
committed by GitHub
parent 73e5308c53
commit 42534a6328
2 changed files with 53 additions and 1 deletions
+52
View File
@@ -1,3 +1,55 @@
gnubok - Swedish bookkeeping software
Copyright (C) 2025-2026 Jakob Wennberg
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
----------------------------------------------------------------------
EXTENSION EXCEPTION
Additional Permission under GNU AGPL version 3 section 7
As a special exception, the copyright holder of gnubok gives you
permission to create extensions ("plugins") that interact with gnubok
solely through the documented Extension API — defined in
lib/extensions/types.ts (the Extension interface, ExtensionContext,
and related types), lib/events/types.ts (the event bus), and the
extension catch-all API route (app/api/extensions/ext/[...path]/route.ts)
— without those extensions being
considered derivative works of gnubok under the terms of this License.
This means you may license your extensions under any terms you choose,
including proprietary licenses, provided that:
1. Your extension interacts with gnubok only through the documented
Extension API and does not modify gnubok's own source code.
2. Your extension is clearly separable from gnubok (e.g., in its own
directory under extensions/, with its own manifest.json).
3. You do not copy substantial portions of gnubok's source code into
your extension.
If you modify gnubok itself — including its core libraries, database
migrations, API routes, or UI components — the modified version remains
subject to the full terms of the GNU Affero General Public License.
The copyright holder will not revoke this exception in any future
release of gnubok. Note that under AGPL version 3 section 7, any party
who redistributes gnubok may remove additional permissions from their
copy; however, the original grant from the copyright holder remains
in effect for copies obtained directly or indirectly from this source.
----------------------------------------------------------------------
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
+1 -1
View File
@@ -65,4 +65,4 @@ All commits require a [DCO sign-off](DCO) (`git commit -s`).
## License
[AGPL-3.0-or-later](LICENSE). See [NOTICE](NOTICE) for third-party attributions.
[AGPL-3.0-or-later](LICENSE) with an **extension exception**: third-party extensions that interact solely through the documented Extension API may be licensed under any terms, including proprietary. See [LICENSE](LICENSE) for details and [NOTICE](NOTICE) for third-party attributions.