Introduce component-based licensing: Serena GPL-3.0-or-later, SolidLSP MIT

The repository is licensed per component. SolidLSP (src/solidlsp,
test/solidlsp, test/resources) remains MIT-licensed and independently
reusable; the Serena application (src/serena, src/interprompt, scripts,
test/serena, docs) is licensed under GPL-3.0-or-later starting with the v2
licensing transition. The change is not retroactive: all releases and
commits up to v1.7.0 / 74c38a65 (tag mit-final) remain available under MIT.

Since MIT is GPL-compatible, a distribution combining both (such as the
serena-agent package) is as a whole subject to GPL-3.0-or-later, while the
SolidLSP files themselves stay MIT and can be extracted and used separately
under MIT terms. The distribution metadata therefore declares
GPL-3.0-or-later, with both license texts shipped alongside it.

Serena originally began under the GPL (v2) and was switched to MIT in
May 2025 following community requests. We consider that change a mistake;
the substantial changes in v2 make this the appropriate time to revert it.
We want the best version of Serena to remain free.

Changes:
* LICENSE is now the licensing overview; canonical license texts live in
  LICENSES/ (MIT.txt is the previous LICENSE verbatim, GPL-3.0-or-later.txt
  is the unmodified FSF text)
* pyproject.toml declares the PEP 639 license expression
  "GPL-3.0-or-later" and bundles LICENSE and LICENSES/* as license files;
  the deprecated MIT classifier is dropped and flake.nix declares gpl3Plus;
  README has per-component license badges and a License section
* SPDX-License-Identifier headers in all Python sources under src/ and
  scripts/, added by the new idempotent scripts/add_spdx_headers.py, which
  gen_prompt_factory.py also uses to keep the header on the generated
  module; existing third-party notices are preserved
* CLA.md: Contributor License Agreement (contributor retains copyright;
  grants a perpetual, irrevocable license including relicensing under any
  terms, incl. proprietary/commercial; patent grant; authority
  representations), to be enforced repository-wide via cla-assistant.io
* CONTRIBUTING.md, PR template and a new docs page explain the licensing
  boundary and the CLA workflow
This commit is contained in:
Dominik Jain authored and Dominik Jain committed 2026-09-14 21:33:18 +02:00
1 parent 9f9db76622
commit 6707cd9b7e
186 files changed
+1331 -24

No files matched your search

+55
View File
@@ -0,0 +1,55 @@
# License
Serena is **licensed per component**. The authoritative overview is the
[`LICENSE`](https://github.com/oraios/serena/blob/main/LICENSE) file in the repository,
and the full license texts are in [`LICENSES/`](https://github.com/oraios/serena/tree/main/LICENSES).
| Component | Location | License |
|---|---|---|
| **SolidLSP** – language-server client library, the basis of Serena's free code-intelligence backend | `src/solidlsp`, `test/solidlsp`, `test/resources` | [MIT](https://github.com/oraios/serena/blob/main/LICENSES/MIT.txt) |
| **Serena application** – everything else (agent, tools, MCP server, prompts, scripts, tests, docs) | `src/serena`, `src/interprompt`, `test/serena`, `scripts`, … | [GPL-3.0-or-later](https://github.com/oraios/serena/blob/main/LICENSES/GPL-3.0-or-later.txt) |
Every source file carries an `SPDX-License-Identifier` line stating which license applies to it.
Because MIT is compatible with the GPL, a distribution that combines both — such as the `serena-agent` package —
is **as a whole subject to GPL-3.0-or-later**. This does not change the license of the SolidLSP files themselves:
they remain MIT-licensed and can be extracted and used separately under MIT terms.
## SolidLSP: permissive, reusable infrastructure
SolidLSP is deliberately kept under the permissive MIT license so that it can be reused independently of Serena,
in any project and under any license. Serena's licensing does not affect SolidLSP.
## Serena: an application that stays free
Starting with the **v2 licensing transition**, the Serena application is licensed under the
GNU General Public License, version 3 or (at your option) any later version.
### Why the change?
Serena originally began under the GPL. It was later changed to MIT following community requests.
We have come to consider that change a mistake.
Version 2 introduces substantial architectural and code changes, which made this the appropriate time to reconsider.
The central principle behind the decision is simple:
> **We want the best version of Serena to remain free.**
The GPL ensures that anyone who redistributes a derivative version of Serena must preserve the same software freedoms
for its users that they received themselves.
### The change is not retroactive
* All Serena releases and commits up to the historical cutoff documented in `LICENSE` were released under MIT and
remain available under MIT.
* Serena v2 and later application code are GPL-3.0-or-later.
* Contributions that entered the application under MIT before the cutoff remain incorporated in the GPL-licensed
application; the MIT notice continues to apply to that historical code as required by its terms.
## Contributing
Contributions require acceptance of our
[Contributor License Agreement](https://github.com/oraios/serena/blob/main/CLA.md), which lets you keep your
copyright while granting the maintainers the rights needed to maintain and relicense Serena (including under
commercial terms) in the future. Acceptance is a one-time click via the CLA assistant bot on your first pull request.
See [CONTRIBUTING.md](https://github.com/oraios/serena/blob/main/CONTRIBUTING.md) for details.