chore: dual-license MIT OR Apache-2.0

The Rust ecosystem convention, and what kickscore, xy and saphyr already use —
kickscore being the closest sibling to this crate.

LICENSE-APACHE is the canonical 201-line Apache-2.0 text with the appendix
left as the unfilled template, which is the form Rust crates ship. LICENSE-MIT
carries the copyright line. Both are picked up by cargo automatically and
appear in the packaged crate.

This also unblocks the release workflow. `cargo publish` does not check the
license field when the target is an alternative registry, but cargo-release
does, and refuses outright:

    error: trueskill-tt is missing the following fields:
             license || license-file

--no-verify does not bypass it. So `just release` was inert without this,
whatever cargo publish alone would have accepted.

README gains the conventional dual-license section and the contribution note
that dedicates inbound contributions under the same terms.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T5SYDExxL4vZgvunrcNSMc
This commit is contained in:
2026-08-27 17:35:42 +02:00
co-authored by Claude Opus 5
parent 56ff01074f
commit b73cf0145a
5 changed files with 292 additions and 11 deletions
+1 -11
View File
@@ -13,17 +13,7 @@ publish = ["kellnr"]
readme = "README.md"
keywords = ["trueskill", "rating", "bayesian", "elo", "skill"]
categories = ["algorithms", "science", "game-development"]
# Deliberately unlicensed for now — not an oversight.
#
# Correcting what this note used to claim: `cargo publish` does NOT reject a
# crate without `license`/`license-file` when the target is an alternative
# registry. Only crates.io enforces it. Verified by `cargo publish --dry-run`
# against kellnr, which packages and verifies cleanly as-is.
#
# The consequence is legal, not mechanical: with no stated terms the source is
# all-rights-reserved by default. The Rust convention when one is wanted is
# `license = "MIT OR Apache-2.0"` plus matching LICENSE-MIT / LICENSE-APACHE
# files.
license = "MIT OR Apache-2.0"
# `examples/atp.csv` is a 48 MB tennis dataset — 99% of the packaged crate,
# for a library whose source is 312 KB. `examples/atp.rs` opens it by
# relative path at runtime, so excluding the data still compiles; the