Skip to content

id: design: licensing policy — server ToS uploader grant, account-creation defaults, admin license policies #5984

Open

Description

@dezren39

Part of the worlds design program: #5955. Statements S90, S94–S102 (policy parts) of the 2026-11-04 brief. The taxonomy/classifier is a sibling child; this issue owns what servers and accounts do with licenses.

Requirement (Drew, in substance)

  • We can support nominally unlicensed or not-open-source-licensed code, images, and documents — but only under a server terms-of-use agreement that basically says: anything you upload, the server has permission to freely distribute and can use however it likes, because you are the license holder or the copyright holder; or it's marked with an open-source license that doesn't have these restrictions (or at least an open-source license).
  • Uploaders therefore have exactly two honest routes: tell us it's MIT-licensed (or another accepted license), or tell us they own it entirely and are granting the server the ability to use it.
  • Our own standard: we should come up with a standard we use for all of our stuff; right now it's MIT or Apache.
  • Account-creation default agreement: when a user first creates their account they agree that — everything I upload is mine; if I choose code, it's MIT or Apache; if I choose non-code, then it's CC0 or a no-attribution CC variant or something (attribution/share variants to settle in this design).
  • License UX must not be too obtrusive: mostly dealt with between world authors and server admins — but users submitting code to run inside worlds need a license too, and the same for other things.
  • Creative Commons NC: my servers wouldn't support non-commercial (I don't want to risk dealing with it). The system should at least be able to identify it and allow it to exist, and users can decide. The sharp case: a share-alike non-commercial file uploaded by someone who doesn't hold the copyright to grant the server store-and-share rights — while the server is selling Steam keys. The policy must name who bears that risk and what the server does (refuse NC on commercial servers? accept with uploader attestation?).
  • Admin license policies must be easy to state, e.g.: "I only want GPL 2 or 3." / "Only GPL 3." / "Nothing that has GPL in the name." / "I only accept MIT or CC0 unless it's code written by these groups or admins." Group/admin exceptions are part of the policy language, not an afterthought.

Design points to settle

  • The ToS grant text (as a design artifact, to be lawyer-checked later): scope (store, distribute, compile, cache, sublicense to other federation servers?), revocability, and how it composes with an uploader who later deletes the object.
  • The account-default agreement flow: one-time at account creation, per-upload override, what happens to uploads made before any agreement existed.
  • Policy language shape: allowlist / denylist / ladder-ceiling, per content kind (code vs non-code), per principal group. Expressible in our server config (KDL, #5753).
  • Defaults we ship: ceiling at MPL (per the taxonomy child), NC refused on our servers, unlicensed accepted only under the ToS grant + ownership attestation.

Related

  • License taxonomy & classifier child of #5955
  • Self-hosting stance child (admin policy freedom is part of why self-hosting is real)

Done looks like

A policy design doc: the ToS grant clauses, the account-default agreement, the admin policy language with the four example policies expressed in it, and the NC risk treatment.

Activity

  1. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor
  2. added
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    kind/designA design proposal (design-architect): multi-step, phased, decision-bearing
    on Nov 5, 2026
  3. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    Wave-2 tie-in — contradiction C1.

    WORKING INTERPRETATION — shown to Drew in the main chat 2026-11-04 ~23:06 and not objected to; recorded here as an interpretation, not a ruling. This policy design operates the upload regime: user-hosted content, warn-and-allow per the 2026-11-04 brief (default ceiling MPL for frictionless use, admin-configurable beyond it, ToS grant for unlicensed content). It does not touch the adoption regime: the 2026-10-24 ruling for our own dependencies — hard filter NOT AGPL / NOT GPL (the Plane exclusion and the license-surprise catalogue: Focalboard, Leantime, Forgejo et al.) — stands as-is. The two regimes must stay visibly separate in the policy language so the upload defaults never read as reversing the adoption filter.

    Record: workspace/scratch/worlds-capabilities-brief-2026-11-04/conversation-tie-ins.md (C1, F11).

  4. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    Ruling — C1 licensing (Drew, 2026-11-04 23:57 CST). This splits the earlier working interpretation into its two regimes; they have different statuses.

    Adoption regime — CLOSED, firm. What our own code depends on: "for our code, we won't be using GPL." The 2026-10-24 hard filter — NOT AGPL, NOT GPL — stands for anything our code depends on. This half is settled and is not being revisited.

    Uploads regime — OPEN, undecided. What users may host/upload is NOT decided. Drew goes back and forth on this: he does not particularly want to support GPL, he can see that there is use for it, and he is not ruling it out right now. So there is no ban and no support commitment for GPL in user content. The earlier working interpretation (warn-and-allow) remains provisional — it is a framing for design discussion, not a ratified policy, and design work on this issue must not treat it as decided.

    This issue owns the eventual uploads decision. The classifier work (#5977) should keep the uploads outcome configurable until this issue resolves it.

  5. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 5, 2026
  6. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  7. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 5, 2026
  8. 63 remaining items

  9. dezren39 commented on Nov 6, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  10. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 6, 2026
  11. developing-today commented on Nov 6, 2026

    @developing-today
    Contributor

    🤖 Agent note · handed off

  12. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 6, 2026
  13. added
    queue/queuedHas a queued task in the Supabase agent queue
    and removed
    work/assignedQueue worker lifecycle state
    on Nov 6, 2026
  14. dezren39 commented on Nov 6, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: task 10353 · repo-fleet-monitor run 2026-11-05 22:12 CST
    • Found via: monitor reconciliation
    • Task: Claim evaporated — the previous holder's claim on task 10353 ended without a terminal verb and the task is queued unclaimed (attempts 6/6, last checkpoint stage: handed_off). Labels reset to the truth: queue/queued + status/needs-triage. The fleet monitor's dead-in-queue pass this run also doubled the attempt cap (6 -> 12) where it had been reached.
    • Expectation: the next queue claimant picks up task 10353 from the handed_off checkpoint; no work was lost.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)kind/designA design proposal (design-architect): multi-step, phased, decision-bearingpriority/normalOrdinary priority (the default)queue/parkedQueue task is parked (waiting on CI, time, or an event)queue/queuedHas a queued task in the Supabase agent queuestatus/needs-triageNot yet triaged; needs a first lookstatus/parkedDeliberately paused with a recorded resume conditiontask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions