Skip to content

Add GPL-3.0 licence - #123

Merged
knzeng-e merged 2 commits into
devfrom
chore/add-gpl-license
Aug 25, 2026
Merged

Add GPL-3.0 licence#123
knzeng-e merged 2 commits into
devfrom
chore/add-gpl-license

Conversation

@knzeng-e

Copy link
Copy Markdown
Owner

Why

Dotify had no LICENSE file. Under default copyright that means all rights reserved: nobody could legally fork it, reuse any part of it, or contribute. That sits awkwardly against a project framed around artist sovereignty and music as a cultural commons.

What this adds

The unmodified GPL-3.0 text at the repository root. GitHub will pick it up and show the licence on the repo page.

Why GPL-3.0 rather than a permissive licence

Copyleft keeps derivatives open, which is the point of a commons. A fork that improves the runtime or the room protocol has to stay open too.

Known limit, for the record

GPL-3.0 copyleft triggers on distribution, not on network use. Someone can fork Dotify, modify it, and run it as a closed hosted service without releasing anything. AGPL-3.0 would close that gap. We discussed it and chose GPL-3.0 for consistency with the rest of the portfolio; switching later is possible since you hold the copyright.

Targets dev rather than main, since dev is 62 commits ahead.

🤖 Generated with Claude Code

Dotify had no licence, so default copyright applied and nobody could
legally fork, reuse or contribute to it. GPL-3.0 keeps the work and its
derivatives open, which matches the artist-sovereignty and cultural-commons
framing in the README.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6bc92a200c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread LICENSE
Comment on lines +1 to +2
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Align the contracts' explicit MIT licensing with GPL

When downstream users consume the EVM contracts, every file under contracts/evm/contracts/ still declares SPDX-License-Identifier: MIT, and web/scripts/generate-cdm-metadata.mjs publishes their license as MIT. Those explicit declarations permit proprietary reuse and conflict with the new repository-level GPL, so the intended copyleft does not cover a major subproject and automated license tooling will continue to identify it as MIT. Update the SPDX declarations and generated metadata, or explicitly document the contracts as an intentional MIT-licensed exception.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirmed, and fixed in 720dfa6. Thanks — this was a real gap.

Two precisions on the diagnosis. MIT and GPL-3.0 are not actually in conflict; MIT code combines into a GPL work fine. The real problem is precedence: a per-file SPDX declaration is more specific than a root LICENSE, and SPDX/REUSE tooling treats it as authoritative. So the contracts stayed MIT and anyone could have reused SmartRuntime.sol or the pallets in a closed product — the copyleft missed the layer that actually encodes the access, royalty and registry rules.

The scope was also wider than reported. Beyond the 27 .sol files and generate-cdm-metadata.mjs:46, the generated CDM metadata blobs carried "license": "MIT" too, and their CIDs are referenced by the registry.

What changed

  • 27 SPDX headers → GPL-3.0-only WITH Classpath-exception-2.0
  • web/scripts/generate-cdm-metadata.mjs publishes the same expression
  • CDM metadata regenerated; both CIDs changed
  • LICENSE-EXCEPTION documents the scope and the reasoning

Why an exception rather than a bare GPL

An artist's SmartRuntime exists to be deployed and composed with. Under a bare GPL, any contract importing a Dotify pallet would arguably become a derivative work, which would make the runtime unusable for the artists it serves. Classpath-exception-2.0 is the same linking exception Parity applies to the Substrate client: the pallets stay copyleft, an importing contract keeps its own licence. The contracts have no external Solidity imports, so nothing upstream constrained the choice.

Verified: 27 contracts compile (solc accepts the expression), 53 contract tests pass, 323 web unit tests pass, lint clean apart from 3 pre-existing hook warnings, web build OK.

Two things deliberately left alone

contracts/evm/.cdm/ still shows MIT. It is a cache of published version 0, and version 0 was MIT — rewriting it would misrepresent what is on the network.

That is the real residual: the registry's metadata_uri still resolves to the old MIT blobs, and those CIDs are content-addressed, so that grant cannot be retracted for anyone already holding them. Republishing to Bulletin and updating the registry is a credentialed step, tracked separately.

The root LICENSE said GPL-3.0 while all 27 Solidity sources declared
SPDX-License-Identifier: MIT. A per-file SPDX declaration is more specific
than a root LICENSE, so the contracts stayed MIT and the copyleft did not
reach the layer that encodes the access, royalty and registry rules.

Relicense them as GPL-3.0-only WITH Classpath-exception-2.0, the same
linking exception Parity applies to the Substrate client. The pallets stay
copyleft; a contract importing them keeps its own licence, which artists
deploying a SmartRuntime need.

The contracts have no external Solidity imports, so no upstream licence
constrained this choice.

- 27 SPDX headers
- web/scripts/generate-cdm-metadata.mjs publishes the same expression
- regenerated CDM metadata blobs, which changes both CIDs

Verified: 27 contracts compile, 53 contract tests pass, 323 web unit tests
pass, lint clean apart from the 3 pre-existing hook warnings, web build OK.

Follow-up needed: the registry still points at the old MIT metadata CIDs.
Republishing to Bulletin and updating metadata_uri is a credentialed step.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@knzeng-e knzeng-e left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reviewed

@knzeng-e
knzeng-e merged commit d5e9c88 into dev Aug 25, 2026
4 checks passed
@knzeng-e
knzeng-e deleted the chore/add-gpl-license branch August 25, 2026 15:04
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