Skip to content

chore: license under MIT - #18

Merged
spacedevin merged 1 commit into
mainfrom
chore/mit-license
Aug 27, 2026
Merged

chore: license under MIT#18
spacedevin merged 1 commit into
mainfrom
chore/mit-license

Conversation

@spacedevin

Copy link
Copy Markdown
Owner

The PIF license was copy-pasted from tish and was never the intended terms for this project. Relicensed to MIT across every surface the repo publishes.

Surface Before After
LICENSE Pay It Forward text standard MIT text
@spacedevin/deck (npm) "license": "PIF" "license": "MIT"
@spacedevin/deck-player (npm) "license": "PIF", no license file in the tarball "license": "MIT" + LICENSE shipped
deckfile (crates.io) license-file = "LICENSE" license = "MIT"

Notes

The crate field changes kind, not just value. It used license-file deliberately — the comment said "PIF is not an SPDX identifier, so an SPDX field would either be rejected or misreport the terms". MIT is an SPDX identifier, so it now declares license = "MIT", which is what crates.io indexes and what downstream license tooling reads. cargo publish --dry-run packages 37 files with no license warning.

The player package was shipping license metadata with no license text. files never listed one and none existed beside its package.json, so the published tarball asserted a license it didn't include. It now carries LICENSE like the language package does — npm pack --dry-run confirms 1.1kB LICENSE in both tarballs.

One PIF reference remains in package-lock.json: @tishlang/tish's own license entry. That's a dependency's metadata, not ours, and stays.

Scope

This governs future publishes. Versions already on npm and crates.io went out under the old terms and aren't retroactively changed by this.

Verification

npm test (coverage 100%, 13 conformance cases, 14 example blocks, Tish VM suite, JS smoke), npm run test:rust (5 pass), and cargo publish --dry-run all clean.

The PIF license was copy-pasted from tish and was never the intended terms for
this project. Relicensed to MIT across everything the repo publishes:

- LICENSE, replaced with the standard MIT text
- @spacedevin/deck and @spacedevin/deck-player on npm
- the deckfile crate on crates.io

The crate declared `license-file = "LICENSE"` specifically because PIF is not an
SPDX identifier. MIT is, so it now declares `license = "MIT"`, which is what
crates.io indexes and what license tooling downstream actually reads.

Two things fixed along the way. The player tarball carried `"license"` metadata
with no license text at all — `files` never listed one and none sat beside its
package.json — so it now ships LICENSE like the language package does. And
package-lock.json's own entries were still recording PIF; the remaining PIF in
there is @tishlang/tish's, which is that dependency's own license and stays.

This applies to future publishes. Versions already on npm and crates.io went out
under the old terms.
@spacedevin
spacedevin merged commit 297dd2e into main Aug 27, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant