Skip to content

Why the ZeroNet Relicensing to GPLv3-only Was Illegal (and Why GPLv3+ Had Majority Support) #2873

@zeronet-license

Description

@zeronet-license

This document argues that changing ZeroNet’s effective licensing outcome to GPLv3-only was illegal, because the publicly recorded contributor responses show a majority authorization for GPLv3-or-later (GPLv3+), and because GPLv3-only is a different (and more restrictive) permission set than GPLv3+.

Sources

Poll options (quoted)

GPLv3 and Lax if you accept switching to either GPLv3 or later or to GPLv3-only or a Lax/Permissive license

GPLv3+ and Lax if you accept switching to either GPLv3 or later or a Lax/Permissive license

GPLv3-only and Lax if you accept switching to either GPLv3-only or a Lax/Permissive license

GPLv3+ if you accept switching to GPLv3 or later

GPLv3-only if you accept switching to GPLv3-only

GPLv3 if you accept switching to either GPLv3 or later or to GPLv3-only

I don't care if you accept switching to whatever issue those who run ZeroNet project want. This is the same as the GPLv3 and Lax option below but it might include more licenses if it's found appropriate

Key point: GPLv3+ votes cannot be counted as GPLv3-only votes

GPLv3-only and GPLv3-or-later are not interchangeable.

  • A contributor voting GPLv3+ authorizes relicensing under GPLv3-or-later.
  • That does not automatically authorize a relicensing outcome of GPLv3-only, because GPLv3-only removes rights that GPLv3+ explicitly preserves.

Therefore, counting GPLv3+ votes toward a GPLv3-only mandate is not a valid interpretation of the poll.

Corrected vote recategorization (103 contributors)

When distinct options such as GPLv3+ (future-proof) and GPLv3-only (restrictive) are offered, a vote for one cannot be counted as a vote for its opposite.

Vote category Count Authorizes GPLv3-only? Authorizes GPLv3+?
GPLv3+ / GPLv3+ & Lax 24 NO YES
GPLv3 and Lax 16 YES YES
Doesn’t care 26 YES YES
GPLv3 (unspecified) 3 YES YES
GPLv3-only and Lax 1 YES NO
Blocking 1 NO NO
Lax (explicit) 2 NO NO
No reply / no stated preference 30 NO NO

Resulting mandates (from the categorization above)

  • Mandate for GPLv3-only: 46 votes
    • 44.7% of the full pool (46 / 103)
    • 63.0% of respondents (46 / 73; excludes 30 with no stated preference)
    • 65.7% of “eligible” responses (46 / 70; excludes 30 no-reply, 2 “Lax”, 1 “Blocking”)
  • Mandate for GPLv3+: 69 votes
    • 67.0% of the full pool (69 / 103)
    • 94.5% of respondents (69 / 73; excludes 30 with no stated preference)
    • 98.6% of “eligible” responses (69 / 70; excludes 30 no-reply, 2 “Lax”, 1 “Blocking”)

Conclusion: GPLv3+ had a clear majority of explicit or compatible authorizations. GPLv3-only did not.

Statistical manipulation claim (why “GPLv3-only = 71” is false)

Any summary claiming that ~71 people voted for GPLv3-only necessarily relies on reclassifying GPLv3+ votes as GPLv3-only votes.

  • The “GPLv3-only” total becomes inflated by including voters who explicitly selected GPLv3+.
  • The result is a category-overlap presentation that reads like an independent majority for GPLv3-only when it is not.

In other words: the GPLv3-only majority is created on paper by cannibalizing the GPLv3+ block.

Why the GPLv3-only relicensing is illegal (EU-law argument)

This section summarizes the legal theory asserted by this document.

A) Violation of specific consent

Consent must be specific and unambiguous. If a contributor authorizes their contribution under “GPLv3 or later”, that is a specific grant. Removing the “or later” component and treating it as permission for GPLv3-only is not what was granted.

B) No majority rule for copyright relicensing

For collaborative software, relicensing generally requires rights for the relevant contributions (e.g., ownership, a CLA, or explicit consent). A vote can show consent for some authors, but it does not automatically bind non-responding authors.

C) Moral rights and integrity (selected EU jurisdictions)

In multiple EU jurisdictions, authors may have moral rights that constrain certain alterations to how their work is attributed/distributed. Forcing a more restrictive license outcome contrary to an author’s explicit preference can be argued to conflict with those rights.

Final summary

  • GPLv3+ and GPLv3-only were offered as distinct outcomes.
  • A GPLv3+ vote cannot legitimately be counted as authorizing GPLv3-only.
  • Under the only consistent categorization of the poll, GPLv3+ had majority authorization.
  • Therefore, the move to GPLv3-only was illegal.

Appendix: Voter list (as recorded)

@aitorpazos: GPLv3+
@shortcutme: Doesn't care
@HelloZeroNet
@imachug: GPLv3 and Lax
@rllola: Doesn't care
@tangdou1: GPLv3+
@TheNain38: GPLv3-only and Lax
@jerry-wolf: GPLv3 and Lax
@radfish: Doesn't care
@MuxZeroNet
@matthewrobertbell: Doesn't care
@grez911
@sirMackk: GPLv3+
@Idealcoder: GPLv3
@rainlime
@ysc3839: GPLv3+
@barrabinfc
@0polar
@filips123: GPLv3 and Lax
@cclauss: GPLv3+
@DaniellMesquita: GPLv3
@anoadragon453
@n3r0-ch: Doesn't care
@OliverCole: GPLv3 and Lax
@Th3B3st
@geekless: GPLv3+
@cxgreat2014: GPLv3+ and Lax
@erqan: Doesn't care
@iShift: Doesn't care
@mkg20001: GPLv3+ and Lax
@krzotr
@krixano: GPLv3 and Lax
@nathantym
@Emeraude: Doesn't care
@frerepoulet
@jTeego
@yowmamasita
@reezer: GPLv3 and Lax
@danielquinn: GPLv3+
@HostFat: GPLv3
@JeremyRand: GPLv3+
@volker48: Doesn't care
@tormath1
@rarbg
@ppsfassa: Doesn't care
@brunogarciavaz: Doesn't care
@caryoscelus: GPLv3+
@hugbubby
@mishfit
@vitorio: GPLv3 and Lax
@xfq: GPLv3+ and Lax
@6543: GPLv3+ and Lax
@ajmeese7: Doesn't care
@AceLewis: Doesn't care
@megfault: GPLv3 and Lax
@zasei: Doesn't care
@artemmolotov: Doesn't care
@Nephos: Doesn't care
@Austin-Williams
@bencevans: GPLv3+
@valkheim: GPLv3+
@d14na: GPLv3+ and Lax
@thesoftwarejedi: Doesn't care
@Derson5
@dldx: Doesn't care
@EdenSG
@camponez: GPLv3+ and Lax
@Erkan-Yilmaz
@Fil: Doesn't care
@gyulaweber: GPLv3+
@shakna-israel: Blocking
@flibustier: GPLv3 and Lax
@justinwiley
@kseistrup: GPLv3+
@MRoci: GPLv3+
@sexybiggetje: GPLv3+ and Lax
@BoboTiG: Doesn't care
@medimatrix
@Nodeswitch
@Ornataweaver
@adrelanos: Doesn't care
@quasiyoke: GPLv3 and Lax
@Radtoo: GPLv3 and Lax
@RedbHawk
@rcmorano
@rubo77: GPLv3 and Lax
@SuperSandro2000: Doesn't care
@Thunder33345: Lax
@anonym: Doesn't care
@beigexperience: GPLv3 and Lax
@blurHY: GPLv3+
@dqwyy: Doesn't care
@eduaddad: GPLv3+
@goofy-mdn: Lax
@krikmo
@leycec
@mnlg: Doesn't care
@mymage: GPLv3 and Lax
@probonopd: GPLv3+ and Lax
@saber28: GPLv3 and Lax
@rwv: Doesn't care
@sinkuu: GPLv3 and Lax
@zwgshr

Note:

Ivan Machugovskiy (@purplesyringa, previously known as @imachug) organized the vote. Tamas Kocsis (@shortcutme) then changed the project’s licensing outcome to GPLv3-only; this document asserts that change was illegal.


GPLv3+? thread from @caryoscelus: zeronet-conservancy#113

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions