Skip to content

Commit 7c71cf7

Browse files
docs(legal): prepare contributor agreement draft (#37)
1 parent 5673adb commit 7c71cf7

4 files changed

Lines changed: 563 additions & 0 deletions

File tree

CONTRIBUTING.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,14 @@ mechanism may be introduced after professional legal review. This document is
6262
not a CLA, does not transfer copyright, and does not create an implied
6363
assignment or commercial-license grant.
6464

65+
A Harmony-based copyright-license CLA is currently being evaluated in
66+
[`docs/legal/CONTRIBUTOR_LICENSE_AGREEMENT_DRAFT.md`](docs/legal/CONTRIBUTOR_LICENSE_AGREEMENT_DRAFT.md),
67+
with unresolved adoption gates recorded in
68+
[`docs/legal/CLA_ADOPTION_CHECKLIST.md`](docs/legal/CLA_ADOPTION_CHECKLIST.md).
69+
Both documents are non-operative drafts. Do not sign or rely on them. Opening a
70+
pull request, issue, or discussion does not accept the draft, and no CLA
71+
automation or electronic acceptance process is active.
72+
6573
Until a reviewed mechanism exists, maintainers should not merge a substantial
6674
external code or asset contribution merely because it was submitted under the
6775
repository's Community license. The required rights for the proposed

docs/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ without creating an unreviewed second source of truth.
6868
## Rights and governance
6969

7070
- [Asset provenance](legal/ASSET_PROVENANCE.md)
71+
- [Contributor License Agreement draft](legal/CONTRIBUTOR_LICENSE_AGREEMENT_DRAFT.md)
72+
- [CLA adoption checklist](legal/CLA_ADOPTION_CHECKLIST.md)
7173
- [Dual-licensing readiness report](legal/dual-licensing-readiness-report.md)
7274
- [Dual-licensing decision record](governance/dual-licensing-decision.md)
7375
- [Commercial-license draft](legal/COMMERCIAL-LICENSE-DRAFT.md)
Lines changed: 226 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
# HitTheKit CLA adoption checklist
2+
3+
> **DRAFT PROCESS — NOT IN FORCE — NOT LEGALLY REVIEWED**
4+
>
5+
> This checklist does not activate the accompanying CLA draft, request a
6+
> signature, or authorize substantial external contributions.
7+
8+
## Selected planning model
9+
10+
The current planning candidate is the Harmony Combined Contributor Agreement
11+
Template 1.0 configured as:
12+
13+
- copyright license, not copyright assignment;
14+
- contributor retains copyright;
15+
- broad sublicensable copyright grant;
16+
- patent grant;
17+
- outbound licensing based on Harmony Option Five; and
18+
- separate treatment of individual and Legal Entity contributors still to be
19+
decided.
20+
21+
Option Five is being evaluated because it permits open-source and commercial
22+
or proprietary outbound licenses while promising that an incorporated
23+
Contribution is also available under the community license used for the
24+
Material. Its breadth is not yet approved.
25+
26+
## Blocking legal and identity decisions
27+
28+
- [ ] Obtain review from a qualified lawyer, FOSS legal clinic, or equivalent
29+
professional familiar with contributor agreements and dual licensing.
30+
- [ ] Verify the legal identity and capacity of the party receiving the grant.
31+
- [ ] Decide whether the recipient is an individual, company, foundation, or
32+
another legal structure.
33+
- [ ] Record the recipient's legal address and a private legal contact.
34+
- [ ] Select governing law, forum, and dispute process with qualified advice.
35+
- [ ] Verify chain of title and authority for the existing HitTheKit code.
36+
- [ ] Confirm the intended MPL-2.0 transition separately; the CLA must not be
37+
used to imply that a repository license change has already occurred.
38+
- [ ] Review the scope of “transferable,” “irrevocable,” “otherwise exploit,”
39+
multi-tier sublicensing, and future commercial/proprietary licensing.
40+
- [ ] Review patent scope, Affiliate coverage, subsequently acquired claims,
41+
combination claims, limitations, and termination/retaliation.
42+
- [ ] Decide whether and how to address moral rights without an unnecessarily
43+
broad waiver.
44+
- [ ] Draft jurisdiction-appropriate warranty, disclaimer, liability,
45+
severability, assignment, notices, and entire-agreement terms.
46+
47+
## Contributor types and authority
48+
49+
- [ ] Decide whether to publish separate Individual and Entity agreements.
50+
- [ ] Define when an individual contributor needs employer consent.
51+
- [ ] Define acceptable evidence of employer consent.
52+
- [ ] Define the Entity signatory's required authority and title.
53+
- [ ] Decide whether entities maintain a list of authorized contributors.
54+
- [ ] Define how an entity adds or removes authorized contributors.
55+
- [ ] Decide how contractors, students, public employees, and grant-funded
56+
contributors are handled.
57+
- [ ] Decide whether contributions from minors will be accepted.
58+
- [ ] If minors may contribute, obtain qualified advice on age, guardian
59+
consent, identity verification, privacy, and revocation.
60+
61+
## Contributions and third-party material
62+
63+
- [ ] Define the channels that count as intentionally “Submitted.”
64+
- [ ] Define a clear “Not a Contribution” mechanism.
65+
- [ ] Keep issues, discussions, hardware observations, ideas, and facts outside
66+
contractual acceptance unless qualified review says otherwise.
67+
- [ ] Define a non-owner/mixed-submission review process—or continue to reject
68+
all mixed submissions.
69+
- [ ] Explicitly reject unapproved third-party code, music, recordings,
70+
performances, charts, MIDI captures, artwork, fonts, trademarks,
71+
confidential information, and personal data.
72+
- [ ] Require provenance and license evidence for any exceptional third-party
73+
material accepted through a separate process.
74+
- [ ] Confirm that a CLA grants only rights the contributor controls and never
75+
substitutes for third-party licenses.
76+
77+
## Existing and future contributions
78+
79+
- [ ] Inventory any substantial external contribution made before activation.
80+
- [ ] Decide whether prior contributors must separately opt in.
81+
- [ ] Do not presume retroactive acceptance based on an old pull request,
82+
commit, discussion, or repository license.
83+
- [ ] Define the effective date for each contributor and Contribution.
84+
- [ ] Define treatment when the community license changes after acceptance.
85+
- [ ] Define the procedure if the receiving legal entity changes.
86+
- [ ] Define a transparent amendment process and when re-acceptance is needed.
87+
88+
## Privacy, signatures, and records
89+
90+
- [ ] Publish a privacy notice before collecting acceptances.
91+
- [ ] Identify the data controller, purposes, lawful basis, processors,
92+
transfers, and contact.
93+
- [ ] Decide which identity, name, email, employer, timestamp, IP address, and
94+
other evidence is actually necessary; minimize collection.
95+
- [ ] Define retention periods rather than retaining personal data by default.
96+
- [ ] Define access, correction, objection, deletion, export, and complaint
97+
handling as applicable.
98+
- [ ] Record the exact CLA version and immutable digest accepted.
99+
- [ ] Preserve an auditable timestamp and authenticated contributor identity.
100+
- [ ] Design the electronic signature/acceptance action with qualified review.
101+
- [ ] Define recovery, backup, access control, incident response, and processor
102+
exit procedures for acceptance records.
103+
104+
## CLA Assistant and repository controls
105+
106+
- [ ] Complete legal and privacy review **before** enabling CLA Assistant.
107+
- [ ] Publish only the approved, versioned CLA text—not this draft—as the
108+
acceptance source.
109+
- [ ] Review CLA Assistant's hosting, authentication, custom fields, privacy,
110+
retention, availability, and version-change behavior.
111+
- [ ] Configure a test repository before connecting HitTheKit.
112+
- [ ] Verify individual and Entity workflows, bot comments, re-signing, and
113+
failure/recovery behavior.
114+
- [ ] Add the CLA status check to branch protection only after a successful
115+
test run and with a unique check name.
116+
- [ ] Keep maintainer bypass disabled or document narrowly reviewed emergency
117+
handling.
118+
- [ ] Update the pull-request template without claiming that opening a PR
119+
constitutes acceptance.
120+
- [ ] Update `CONTRIBUTING.md`, `GOVERNANCE.md`, privacy documentation, and the
121+
public website only when the agreement actually enters into force.
122+
- [ ] Publish a plain-language announcement of the effective date, scope,
123+
contributor choices, community-license promise, and contact route.
124+
- [ ] Confirm substantial external contributions remain blocked until every
125+
activation item is complete.
126+
127+
GitHub required status checks enforce workflow results; they do not determine
128+
whether the CLA text or acceptance process is legally sufficient. CLA
129+
Assistant automates prompts, GitHub authentication, acceptance records, and a
130+
pull-request status check, but it is not the legal reviewer or receiving party.
131+
132+
## DCO, CLA, and CLA Assistant are different
133+
134+
| Mechanism | Primary function | What it does not establish by itself |
135+
| --- | --- | --- |
136+
| Developer Certificate of Origin (DCO) | Contributor attests provenance and a right to submit under the indicated open-source terms, commonly recorded with `Signed-off-by` | It does not grant HitTheKit the separate, broad sublicensing rights needed for proprietary/commercial outbound licensing. |
137+
| Contributor License Agreement (CLA) | A contract can expressly grant copyright and patent rights while the contributor retains ownership | A draft is not operative without identified parties, reviewed terms, valid acceptance, and appropriate records. |
138+
| CLA Assistant | Automates the presentation and collection of a project's chosen CLA and reports status to GitHub | It does not draft, approve, interpret, or make legally sufficient the CLA and privacy process. |
139+
140+
MPL 2.0 grants rights from contributors to recipients of MPL-covered software,
141+
but its contributor grant does not automatically appoint the HitTheKit
142+
maintainer to relicense every external Contribution under unrelated proprietary
143+
terms. The proposed CLA is intended to address that separate inbound-rights
144+
need if qualified review approves it.
145+
146+
## Review findings to resolve before adoption
147+
148+
### P0
149+
150+
None identified in a non-operative documentation draft.
151+
152+
### P1 — adoption blockers
153+
154+
- The receiving legal party, governing law, forum, legal contact, privacy
155+
controller, and acceptance process are unknown.
156+
- Harmony Option Five and the copyright grant are deliberately broad; their
157+
sublicensing, transferability, irrevocability, and proprietary-license scope
158+
require qualified review and plain-language disclosure.
159+
- Patent scope and any retaliation/termination mechanism are unresolved.
160+
- Individual, Entity, employer-consent, Affiliate, and minor-contributor
161+
processes are unresolved.
162+
- The public `main` license and the intended MPL-2.0 state are temporarily
163+
different; activation before the community-license transition is settled
164+
would create avoidable ambiguity.
165+
- Privacy, retention, version evidence, electronic signature, and treatment of
166+
prior Contributions are unresolved.
167+
168+
### P2 — process and clarity risks
169+
170+
- One combined draft is convenient for review but separate Individual and
171+
Entity forms may be clearer operationally.
172+
- Media and third-party-content rules may need their own contributor guide and
173+
provenance workflow rather than additional breadth in the CLA.
174+
- A CLA tool outage, Gist change, account rename, or bot-status ambiguity needs
175+
an operational recovery procedure.
176+
177+
### P3 — editorial follow-up
178+
179+
- Defined terms, capitalization, translations, accessibility, and
180+
plain-language summaries should be normalized after legal text stabilizes.
181+
- A version identifier and digest format should be selected before publication.
182+
183+
## Pro bono review request template
184+
185+
Subject: Limited pro bono review request — open-source contributor agreement
186+
187+
> Hello,
188+
>
189+
> I maintain HitTheKit, an open-source electronic-drum learning game. The
190+
> project is preparing to use Mozilla Public License 2.0 for its community
191+
> edition and may later offer separate commercial licenses. I would like
192+
> contributors to retain their copyright while granting the project the
193+
> copyright and patent permissions needed to distribute accepted contributions
194+
> under MPL 2.0 and, transparently, under separate commercial/proprietary terms.
195+
>
196+
> I have prepared a non-operative draft based on the Harmony Agreements
197+
> copyright-license model and outbound Option Five. The project is not yet
198+
> accepting substantial external code or assets, no one is being asked to sign
199+
> the draft, and CLA Assistant has not been configured.
200+
>
201+
> I currently have no budget for a full commercial engagement. Would your
202+
> clinic, practice, or open-source legal community be willing to provide a
203+
> limited pro bono review of the draft, focusing on the receiving party,
204+
> sublicensing scope, patent grant, employer/entity contributions, governing
205+
> law, privacy and electronic acceptance? I can provide the short draft,
206+
> adoption checklist, current license documents, and a concise list of open
207+
> questions.
208+
>
209+
> I understand that availability may be limited and that an informal community
210+
> response may not create a lawyer-client relationship or replace advice from a
211+
> qualified professional in the relevant jurisdiction.
212+
213+
## Primary drafting references
214+
215+
- Harmony agreement templates and guide:
216+
<https://www.harmonyagreements.org/agreements>
217+
- Mozilla Public License 2.0:
218+
<https://www.mozilla.org/MPL/2.0/>
219+
- Developer Certificate of Origin 1.1:
220+
<https://developercertificate.org/>
221+
- CLA Assistant project documentation:
222+
<https://github.com/cla-assistant/cla-assistant>
223+
- GitHub protected branches and required status checks:
224+
<https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches>
225+
226+
This checklist is engineering and governance preparation, not legal advice.

0 commit comments

Comments
 (0)