Skip to content

Move to the Progmasoft Linking Exception, Version 2.0 - #119

Merged
Leitwolf11 merged 1 commit into
mainfrom
license/exception-2.0
Oct 31, 2026
Merged

Leitwolf11 merged 1 commit into
mainfrom
license/exception-2.0

Conversation

@Leitwolf11

Copy link
Copy Markdown
Contributor

Publishes the Progmasoft Linking Exception, Version 2.0 and moves every project file to it. The same change goes to tazel, talafmt, talalint, tala-analyzer, tazel-plugins, catch3 and xide.

This is a draft by the maintainers' tooling, not legal advice. It has not been reviewed by a lawyer.

What was wrong in 1.1

Problem in 1.1 Why it matters 2.0
Section 4 kept MPL-2.0 on anything in an Output derived from Covered Software, and Section 3 said code generation does not avoid that talac copies TalaRT beside every program and emits its own entry code, so every closed-source Tala program owed a source notice Section 4: Generated Code and Runtime Material are free of MPL-2.0 Section 3
Inlining, macros, templates and generics were not mentioned A source file can be independent while its object file holds covered code Section 3 names them and says what follows
Copying a header or writing a binding creates a new file that contains Covered Software, which is a Modification under MPL-2.0 Section 1.10 The C interface and bindings were in doubt Section 5: Interface Material
Examples and starter projects had no permission Copying one was a Modification Section 5
Section 11 required the exact expression in the file Files assigned through REUSE.toml, compound expressions and compiled forms were outside it Section 12
Section 2 said "irrevocable" and Section 8 suspended it The two disagreed Section 9, with Output kept safe by Section 4.5
Section 2 barred terms touching rights in Covered Software, wider than MPL-2.0 Section 3.2(b) An ordinary EULA for a binary was in doubt Section 2 follows MPL-2.0: rights in Source Code Form
Nothing said what a Larger Work need not provide Readers import LGPL duties Section 2: no relinking, no object files, reverse engineering not required
The way to inform recipients was left open A link to a moving branch is disputed in practice Section 7: notice for unmodified code; a fixed version for a Modification
Contributors were not bound, and removal conflicted with MPL-2.0 Section 3.4 A contribution might not carry the permission Section 8
"Separate file" in MPL-2.0 Section 1.7 stayed ambiguous Its own drafters were asked about static linking Section 2 applies the reading they gave
No warranty clause, and nothing about MPL-2.0 Section 10.2 The permission could fall away under a later MPL Section 10
Releases under 1.1 stayed under its gaps Released tools keep the problem Section 12 grants 2.0 for Progmasoft's own Contributions in them

Abuse the text guards against

Generated Code must not launder Covered Software, so Section 4.4 follows Autoconf's "normally copied code" and Bison's limit. Covered Software given as Input keeps its obligations, a Tool changed to copy more does not widen the permission, and output produced to extract a Tool is excluded. Only the copyright holders can name a runtime or standard library. A changed runtime is covered only when that change is published, as OCaml does. Runtime Material may not be distributed on its own. Generated Code stays licensed under MPL-2.0 with the conditions lifted, so the patent grant in MPL-2.0 Section 2.1 and the disclaimers stay, in the way the LLVM and Swift exceptions leave the license in place.

The GCC exception's bar on intermediate representations is not copied. It exists to stop proprietary compiler plugins under the GPL, and MPL-2.0 has no such concern.

Decisions to check

  • Section 4.3 frees TalaRT and the standard library in Executable Form, so changes to them stay public only through Section 4.3's condition.
  • Section 12 lets anyone use later versions of the Exception.
  • The Patent Grant stays at 1.1. Its Section 5 covers output only when the output is Covered Software, so Runtime Material in a program relies on MPL-2.0 Section 2.1.
  • Mozilla discourages custom additional permissions because of proliferation (MPL FAQ Q15). The project already has one.
  • AlfaPC11, Leitwolf and Leitwolf11 are the only human authors in the Progmasoft-owned repositories, apart from bots. Applying 2.0 assumes they all assign to Progmasoft.

Evidence

Mechanical change: SPDX expressions, LICENSE-EXCEPTION copies, the bundle list, and the workflow that compares them. NOTICE.txt keeps 1.1 for Catch3 until its pin moves. go test ./internal/development passes.

Sources

Version 1.1 left programs built with Progmasoft tools under MPL-2.0 duties
for the code the tools place in them, and left other cases unclear.
Version 2.0 adds a generated code permission, covers runtime and standard
libraries, compiler transformations, interfaces and examples, and settles
how a file is identified and how to tell recipients about source.

Every project SPDX expression moves to AdditionRef-Progmasoft-Exception-2.0.
The older texts stay, because released versions name them.
@Leitwolf11

Copy link
Copy Markdown
Contributor Author

Self-review. The table above was checked clause by clause against 1.1 and MPL-2.0: Sections 4.3 and 4.6 keep the source of Runtime Material under MPL-2.0 and keep the Section 2 grant and the disclaimers; Sections 3 and 4.4 leave no route from Covered Software input to free output. Outside the license files, the diff holds SPDX expressions, LICENSE-EXCEPTION copies, the bundle list, the workflow and the prose in README.md, NOTICE.txt, Documents/ and CHANGELOG.md. The Windows bundle rename failure on the first run did not recur on rerun.

@Leitwolf11
Leitwolf11 merged commit 0994377 into main Oct 31, 2026
49 of 51 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