Skip to content

License → redistribution-policy table (shared decision for the licensing principle) #4

Description

@jmchilton

Filed by Claude (AI assistant) on jmchilton's behalf — not authored by them personally.

License → redistribution-policy table

Proposed shared decision backing the new guiding principle Redistributed Content Carries Its License (#3). This table is the one piece of logic the two instances (workflow foundry, statistical-genomics foundry) must keep identical even though they share no UI/code layer: it maps a normalized license ID to whether the Foundry may carry the source verbatim into a cast artifact or must carry it own-words only, and what obligations ride along.

It assumes the enum-plus-escape-hatch decision: license is an SPDX identifier, or a LicenseRef-<slug> custom ref for anything not in SPDX. Free-text license strings are migrated to IDs first; this table is what the IDs then mean.

Engineering policy, not legal advice. The rows encode the discipline this project chooses; genuinely novel or high-stakes licenses should get real review before verbatim redistribution.

The table

SPDX / Ref ID License Redistribution policy Casting transform Obligations if carried license_file
MIT MIT verbatim-ok verbatim or condensed attribution + license notice required
Apache-2.0 Apache 2.0 verbatim-ok verbatim or condensed attribution + notice + preserve NOTICE required
BSD-2-Clause BSD 2-Clause verbatim-ok verbatim or condensed attribution + notice required
BSD-3-Clause BSD 3-Clause verbatim-ok verbatim or condensed attribution + notice + no-endorsement required
AFL-3.0 Academic Free License 3.0 verbatim-ok verbatim or condensed attribution + notice required
CC-BY-4.0 CC BY 4.0 verbatim-ok verbatim or condensed attribution (title/author/source/license/changes) required
GPL-2.0-only GPL-3.0-only GPL verbatim-ok ⚠ copyleft verbatim only notice + same-license + source availability; isolate in its own file, do not blend into permissively-licensed prose required
LGPL-3.0-or-later LGPL verbatim-ok ⚠ copyleft verbatim only notice + LGPL terms; isolate as above required
CC-BY-NC-SA-2.0 (and *-NC-*, *-SA-* family) CC BY-NC-SA 2.0 own-words-only (policy) condensed / own-words attribution + citation; verbatim carry avoided so NC + share-alike don't propagate into the KB not required
LicenseRef-arXiv-nonexclusive-distrib-1.0 arXiv non-exclusive distribution 1.0 own-words-only own-words citation; arXiv's grant does not give third parties a redistribution right not required
LicenseRef-all-rights-reserved All rights reserved / read-only manuscript (e.g. NIH-PA on PMC) own-words-only own-words citation only not required
(unresolved / missing) own-words-only + defect own-words must be resolved to a real ID before any verbatim carry

Global rules (apply across all rows)

  1. Functional-strings carve-out. Equations, parameter names, API/function/package names, numeric thresholds, and enum values are reproduced verbatim as facts regardless of the row's policy — facts and short functional identifiers are not copyrightable expression. "own-words-only" constrains prose, never the facts.
  2. Default-deny. A source with no resolved license ID is treated as own-words-only; asking casting to carry a verbatim / redistributed reference without a license ID is a build error, not a warning.
  3. own-words is not a copyleft launder. Paraphrasing covers expression; it does not touch the underlying ideas/facts (which are free to use anyway). Do not use own-words to sidestep copyleft — for GPL/LGPL, either carry verbatim-with-license or don't carry it. The gray zone isn't worth it.
  4. license_file tracks verbatim carry. Required whenever content is carried verbatim (Tier: permissive + CC-BY + copyleft); not required for own-words-only sources (no text is being redistributed), which instead must carry a citation/attribution.
  5. The Foundry's own content is out of scope. This table governs third-party content the Foundry passes through. The Foundry's authored notes are covered by the root project license and are never conflated with passed-through material.

How casting uses it

The row's Casting transform column is the enforcement hook: a reference's transform mode (verbatim vs condensed) must be compatible with its license row. Casting refuses a verbatim transform on an own-words-only license. This is what turns the principle from advice into an enforced check, and it reuses the transform-mode field Molds already carry.

Open questions

  1. CC-BY-NC-SA: verbatim redistribution is permitted non-commercially with share-alike, but the table recommends own-words-only to keep the KB uniformly licensed and avoid NC/SA propagation. Confirm — stat-gen already treats the MSMB textbook (CC-BY-NC-SA-2.0) as own-words, so this matches current practice. Keep as policy, or allow opt-in verbatim under NC?
  2. Copyleft at all? Do we permit GPL/LGPL content in a cast artifact given license-contamination of the otherwise-permissive output, or downgrade GPL to own-words + cite only? Current call: allow verbatim, isolated in its own file with its license.
  3. Enum maintenance: curated enum (extend as new licenses appear) vs validate against the full SPDX license list. Curated + LicenseRef- escape is the pragmatic default.
  4. Canonical home + sync: where does this table live authoritatively, and how do the two repos stay in sync — hand-copied data file with a pointer comment in each, or a shared package later? Drift here means the principle means different things in each instance, so changes should be flagged in both repos' review.

Follow-ups this unblocks (tracked separately, per-repo)

  • Schema: enum + LicenseRef- escape in meta_schema.yml (workflow) and content.config.ts (stat-gen).
  • license / license_file into _provenance.json (workflow now; stat-gen when its cast layer lands).
  • Foreground licenses in the workflow foundry UI (build the renderer; crib stat-gen's SourceMeta.astro + lib/licenses.ts as reference).
  • Tag vendored_upstreams.yml entries with license at sync time.
  • principles-in-action.md needs an 8th concrete incarnation once instance application is decided.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions