CONTRIBUTING: another project's code only when its license allows it

Ludovic, 2026-10-30, after arismoko's proposal in #contributors: reading and using another project's source is now
allowed, but only under MIT, MIT-0, BSD-2/3-Clause, 0BSD, ISC, zlib, Apache-2.0, Unlicense or CC0. Everything else
(GPL, LGPL like Iris, MPL, Polyform like Sodium, custom, closed, unlicensed) stays off limits, even to read. The
contributor checks the license at the commit and per file, names the project, commit and license in the PR, keeps
the notices and adds a THIRD_PARTY_NOTICES.md entry. The PR template gets an "Other projects' code" section.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Ludovic MarieandClaude Opus 5.5 committed 2026-10-30 16:43:39 +01:00
1 parent 594b50b510
commit 234d5e1cd6
3 files changed
+29 -8

No files matched your search

+5
View File
@@ -21,6 +21,11 @@
<!-- The vanilla classes and methods this follows (tools/rea_vanilla.py), and the harness that checks it.
"Horizon-only" for a feature vanilla doesn't have; "none" for tooling or docs. -->
## Other projects' code
<!-- "none", or for each project you read or copied from: its link at the commit, its license (only MIT, BSD,
Apache-2.0, ISC, zlib, 0BSD, MIT-0, Unlicense or CC0), and what you took. CONTRIBUTING.md "Only original code". -->
## Self-check
<!-- Paste the block `python3 tools/pr_ready.py` prints (`--base upstream/main` from a fork). -->
+23 -7
View File
@@ -47,14 +47,30 @@ them (`git config core.hooksPath .githooks` runs it before every commit).
The pre-push hook checks the full history reachable from the branches and tags being pushed. Run
`python3 tools/check_public_tree.py --history` to audit the history of all local refs.
## Only original code
## Only original code, or code whose license allows it
Horizon's code is written from Minecraft 26.3 itself and from public documentation, never from another mod, loader
or renderer. Don't read, copy, translate or paraphrase the source of Iris, OptiFine, Sodium or any other project,
and don't send code an AI tool wrote from it. Their user documentation and file formats are fine to read, and their
packs and mods are fine to run and observe. Shader packs were removed on 24 October 2026 (#1561) because their code
had been written from another project's source; they come back only as a clean-room rewrite from a written
description of the pack format.
Horizon is MIT. Its code is written from Minecraft 26.3 itself and from public documentation. Since 30 October 2026
another project's source may also be read and used, **only when that project's license allows it**:
- **Allowed:** MIT, MIT-0, BSD-2-Clause, BSD-3-Clause, 0BSD, ISC, zlib, Apache-2.0, Unlicense, CC0-1.0. That code
may be read, copied or adapted.
- **Everything else is off limits, even to read:** GPL, LGPL (Iris), AGPL, MPL, EPL, Polyform (Sodium), Creative
Commons licenses, custom or "source available" licenses, all rights reserved (OptiFine), and any project with no
license or an unclear one. Don't read, copy, translate or paraphrase their source, and don't send code an AI tool
wrote from it. Being able to download a mod or a pack does not give you the right to read its files.
- **Check the license yourself.** Read the LICENSE file at the commit you use and the header of each file you take:
some repositories mix licenses, and a file under another license is off limits. A license that changed: the one
at your commit counts. In doubt, don't: ask in #contributors first.
- **Say it in the pull request:** the project, a link to the commit, its license, and what you read or copied. A
pull request that used another project's source without saying so is closed.
- **Copied or adapted code** keeps its copyright line and license notice at the top of the file, and gets an entry
in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). Apache-2.0 code also keeps its NOTICE text and says what
was changed.
User documentation and file formats are fine to read, and packs and mods are fine to run and observe, whatever
their license. Shader packs were removed on 24 October 2026 (#1561) because their code had been written from
another project's source; they come back only as a clean-room rewrite from a written description of the pack
format.
## Before asking for review
+1 -1
View File
@@ -31,7 +31,7 @@ Not every line is read by a person. Instead, every change is checked against the
## What it doesn't contain
- **No Minecraft files.** Horizon contains no Minecraft code, assets or data, and never downloads them. The launcher builds the game files on your computer from your own copy of Minecraft: Java Edition 26.3. A check that runs on every pull request (`tools/check_public_tree.py`) keeps game files and decompiled code out of the repository and its history.
- **No code from other mods.** Since 24 October 2026, Horizon's code may only be written from Minecraft 26.3 itself and public documentation, never from another mod, loader or renderer ([the rule](../CONTRIBUTING.md#only-original-code)). That day shader packs were removed ([#1561](https://github.com/horizon-rust/horizon/pull/1561)), after a developer of Iris showed that our shader pack code had been written from Iris's source. They are being written again from a description of the pack format only.
- **Other projects' code only when their license allows it.** Since 24 October 2026, Horizon's code is written from Minecraft 26.3 itself and public documentation. Since 30 October 2026 it may also use another project's source, but only under one of the licenses listed there (MIT, BSD, Apache-2.0, ISC, zlib, 0BSD, MIT-0, Unlicense, CC0), credited in the pull request and in THIRD_PARTY_NOTICES.md; GPL, LGPL, MPL, unlicensed and closed projects stay off limits, even to read ([the rule](../CONTRIBUTING.md#only-original-code-or-code-whose-license-allows-it)). On 24 October shader packs were removed ([#1561](https://github.com/horizon-rust/horizon/pull/1561)), after a developer of Iris showed that our shader pack code had been written from Iris's source. They are being written again from a description of the pack format only.
## Check it yourself