Skip to content

Commit 7ba74cc

Browse files
Your Nameclaude
andcommitted
feat: complete v1.0 directory with documentation, examples, and exhibits
Populated v1.0/ with all promised content: Documentation: - docs/FAQ.adoc: Comprehensive FAQ covering usage, compatibility, governance - docs/COMPATIBILITY.adoc: Detailed license compatibility matrix - docs/INTEGRATION-GUIDE.adoc: CI/CD, package managers, IDE integration Exhibits: - exhibits/EXHIBIT-A-ETHICAL-USE.txt - exhibits/EXHIBIT-B-QUANTUM-SAFE.txt Examples (working code): - rust/: Cargo project with proper SPDX headers - javascript/: npm package with PMPL licensing - python/: Python package with SPDX compliance - multi-language/: PMPL + MIT combination example Tools: - tools/README.adoc: Links to main tools/ directory All examples include proper SPDX headers and demonstrate PMPL-1.0-or-later usage. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent d1e9d6b commit 7ba74cc

File tree

16 files changed

+2183
-0
lines changed

16 files changed

+2183
-0
lines changed

v1.0/docs/COMPATIBILITY.adoc

Lines changed: 389 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,389 @@
1+
= PMPL v1.0 License Compatibility Matrix
2+
:toc: macro
3+
:toclevels: 2
4+
5+
**Compatibility of PMPL-1.0 with other open source licenses**
6+
7+
toc::[]
8+
9+
== Summary
10+
11+
PMPL-1.0 is built on MPL-2.0 and inherits its compatibility characteristics. As a file-level copyleft license, it can be combined with most other licenses in multi-license projects.
12+
13+
== Compatibility Table
14+
15+
[cols="2,1,3"]
16+
|===
17+
| License | Compatible | Notes
18+
19+
| **MIT**
20+
| ✅ Yes
21+
| MIT code can be combined with PMPL code. MIT files stay MIT, PMPL files stay PMPL.
22+
23+
| **BSD-2-Clause**
24+
| ✅ Yes
25+
| BSD code can be combined with PMPL code. BSD files stay BSD, PMPL files stay PMPL.
26+
27+
| **BSD-3-Clause**
28+
| ✅ Yes
29+
| BSD code can be combined with PMPL code. BSD files stay BSD, PMPL files stay PMPL.
30+
31+
| **Apache-2.0**
32+
| ✅ Yes
33+
| Apache code can be combined with PMPL code. Apache files stay Apache, PMPL files stay PMPL.
34+
35+
| **MPL-2.0**
36+
| ✅ Yes
37+
| PMPL extends MPL-2.0. MPL-2.0 code is forward-compatible with PMPL.
38+
39+
| **LGPL-2.1**
40+
| ✅ Yes (secondary)
41+
| Via MPL-2.0 Section 3.3. Combined work can be distributed under LGPL-2.1-or-later.
42+
43+
| **LGPL-3.0**
44+
| ✅ Yes (secondary)
45+
| Via MPL-2.0 Section 3.3. Combined work can be distributed under LGPL-3.0-or-later.
46+
47+
| **GPL-2.0**
48+
| ✅ Yes (secondary)
49+
| Via MPL-2.0 Section 3.3. Combined work can be distributed under GPL-2.0-or-later.
50+
51+
| **GPL-3.0**
52+
| ✅ Yes (secondary)
53+
| Via MPL-2.0 Section 3.3. Combined work can be distributed under GPL-3.0-or-later.
54+
55+
| **AGPL-3.0**
56+
| ✅ Yes (secondary)
57+
| Via MPL-2.0 Section 3.3. Combined work can be distributed under AGPL-3.0-or-later.
58+
59+
| **ISC**
60+
| ✅ Yes
61+
| ISC code can be combined with PMPL code. ISC files stay ISC, PMPL files stay PMPL.
62+
63+
| **0BSD**
64+
| ✅ Yes
65+
| 0BSD code can be combined with PMPL code. 0BSD files stay 0BSD, PMPL files stay PMPL.
66+
67+
| **Unlicense**
68+
| ✅ Yes
69+
| Public domain code can be combined with PMPL code.
70+
71+
| **CC0**
72+
| ✅ Yes
73+
| Public domain dedication can be combined with PMPL code.
74+
75+
| **EPL-2.0**
76+
| ⚠️ Maybe
77+
| Both are file-level copyleft. Combination possible but complex. Legal review recommended.
78+
79+
| **GPL-2.0-only**
80+
| ⚠️ Restricted
81+
| Can use via secondary license mechanism, but GPLv2-only without "-or-later" is restrictive.
82+
83+
| **Proprietary**
84+
| ⚠️ Conditional
85+
| PMPL files can be in proprietary projects IF kept in separate files and source provided for PMPL files.
86+
87+
| **CC-BY**
88+
| ⚠️ Different domain
89+
| Creative Commons is for creative works, not software. Use with caution for code.
90+
91+
| **CC-BY-SA**
92+
| ⚠️ Different domain
93+
| Share-alike Creative Commons. Compatibility complex. Not recommended for code.
94+
95+
| **Artistic-2.0**
96+
| ⚠️ Maybe
97+
| Weak copyleft. Combination possible but complex. Legal review recommended.
98+
|===
99+
100+
== Detailed Compatibility
101+
102+
=== Permissive Licenses (MIT, BSD, Apache, ISC)
103+
104+
**Status**: ✅ **Fully Compatible**
105+
106+
**How it works**:
107+
108+
[source,text]
109+
----
110+
your-project/
111+
├── LICENSE.txt ← PMPL-1.0 (or state multi-license)
112+
├── src/
113+
│ ├── pmpl-code.rs ← SPDX-License-Identifier: PMPL-1.0-or-later
114+
│ ├── mit-code.rs ← SPDX-License-Identifier: MIT
115+
│ └── apache-code.rs ← SPDX-License-Identifier: Apache-2.0
116+
----
117+
118+
**Rules**:
119+
120+
* Each file keeps its own license
121+
* PMPL files remain under PMPL
122+
* Permissive files remain under their original license
123+
* Can distribute as multi-license project
124+
125+
**SPDX notation**:
126+
127+
[source,text]
128+
----
129+
# Individual files
130+
SPDX-License-Identifier: PMPL-1.0-or-later
131+
SPDX-License-Identifier: MIT
132+
133+
# Project overall (if needed)
134+
SPDX-License-Identifier: PMPL-1.0-or-later AND MIT
135+
----
136+
137+
=== GPL/LGPL (Secondary License)
138+
139+
**Status**: ✅ **Compatible via MPL-2.0 Section 3.3**
140+
141+
**How it works**:
142+
143+
MPL-2.0 (and thus PMPL-1.0) allows the recipient to choose to receive the work under GPL/LGPL instead:
144+
145+
[source,text]
146+
----
147+
"You may also distribute Covered Software under the terms of one or more
148+
Secondary Licenses, so that the recipient of the Larger Work may, at their
149+
option, further distribute the Covered Software under the terms of either
150+
this License or such Secondary Licenses."
151+
----
152+
153+
**Practical application**:
154+
155+
1. **PMPL + GPL in same project**: GPL portions under GPL, PMPL portions under PMPL
156+
2. **Recipient's choice**: When distributing, recipient can choose GPL terms for PMPL portions
157+
3. **Original PMPL remains available**: Original PMPL files always available under PMPL
158+
159+
**Example**:
160+
161+
[source,text]
162+
----
163+
your-project/
164+
├── LICENSE.txt ← PMPL-1.0
165+
├── LICENSE.GPL ← GPL-3.0-or-later (alternative)
166+
├── src/
167+
│ ├── pmpl-code.rs ← PMPL-1.0-or-later (can be taken under GPL)
168+
│ └── gpl-code.rs ← GPL-3.0-or-later
169+
----
170+
171+
**SPDX notation**:
172+
173+
[source,text]
174+
----
175+
SPDX-License-Identifier: (PMPL-1.0-or-later OR GPL-3.0-or-later) AND GPL-3.0-or-later
176+
----
177+
178+
=== Proprietary Software
179+
180+
**Status**: ⚠️ **Conditional** - File-level copyleft applies
181+
182+
**Rules**:
183+
184+
✅ **You CAN**:
185+
186+
* Include PMPL files in proprietary projects
187+
* Keep proprietary code in separate files
188+
* Distribute as a combined work
189+
190+
❌ **You MUST**:
191+
192+
* Keep PMPL files under PMPL
193+
* Provide source for PMPL files
194+
* Maintain PMPL license notices
195+
* Not modify PMPL files without sharing changes
196+
197+
**Example structure**:
198+
199+
[source,text]
200+
----
201+
proprietary-product/
202+
├── LICENSE-PROPRIETARY.txt ← Your proprietary license
203+
├── OPEN-SOURCE-LICENSES.txt ← Notice of PMPL components
204+
├── src/
205+
│ ├── proprietary.rs ← Your code (closed source)
206+
│ └── pmpl-component.rs ← PMPL-1.0 (must be open)
207+
└── pmpl-source/ ← Source for PMPL files
208+
└── pmpl-component.rs
209+
----
210+
211+
== Dual Licensing
212+
213+
You can dual-license your own code under PMPL and another license:
214+
215+
=== PMPL + MIT
216+
217+
[source,text]
218+
----
219+
SPDX-License-Identifier: PMPL-1.0-or-later OR MIT
220+
----
221+
222+
**Recipient's choice**: Use under PMPL or MIT terms.
223+
224+
=== PMPL + Apache-2.0
225+
226+
[source,text]
227+
----
228+
SPDX-License-Identifier: PMPL-1.0-or-later OR Apache-2.0
229+
----
230+
231+
**Use case**: Maximum compatibility while offering ethical use guidelines.
232+
233+
=== PMPL + GPL
234+
235+
[source,text]
236+
----
237+
SPDX-License-Identifier: PMPL-1.0-or-later OR GPL-3.0-or-later
238+
----
239+
240+
**Use case**: Ensure copyleft while offering GPL compatibility.
241+
242+
== Multi-License Projects
243+
244+
For projects with multiple licenses:
245+
246+
=== LICENSE file structure
247+
248+
**Option 1: Single LICENSE with sections**
249+
250+
[source,text]
251+
----
252+
This project contains code under multiple licenses:
253+
254+
1. PMPL-1.0-or-later (files in src/core/)
255+
See LICENSE-PMPL.txt for full text.
256+
257+
2. MIT (files in src/utils/)
258+
See LICENSE-MIT.txt for full text.
259+
260+
3. Apache-2.0 (files in src/vendor/)
261+
See LICENSE-APACHE.txt for full text.
262+
263+
Each file contains SPDX headers indicating its license.
264+
----
265+
266+
**Option 2: Multiple LICENSE files**
267+
268+
[source,text]
269+
----
270+
project/
271+
├── LICENSE ← Primary (PMPL-1.0)
272+
├── LICENSE-MIT ← MIT license text
273+
├── LICENSE-APACHE ← Apache-2.0 license text
274+
└── LICENSES/ ← OR: Directory approach
275+
├── PMPL-1.0.txt
276+
├── MIT.txt
277+
└── Apache-2.0.txt
278+
----
279+
280+
=== REUSE specification
281+
282+
For complex projects, follow https://reuse.software/[REUSE specification]:
283+
284+
[source,text]
285+
----
286+
project/
287+
├── LICENSES/
288+
│ ├── PMPL-1.0-or-later.txt
289+
│ ├── MIT.txt
290+
│ └── Apache-2.0.txt
291+
├── .reuse/
292+
│ └── dep5 ← Copyright and license info
293+
└── src/
294+
└── file.rs ← SPDX headers
295+
----
296+
297+
Validate with:
298+
299+
[source,bash]
300+
----
301+
pip install reuse
302+
reuse lint
303+
----
304+
305+
== Common Scenarios
306+
307+
=== Scenario 1: Adding PMPL component to MIT project
308+
309+
✅ **Allowed**
310+
311+
[source,text]
312+
----
313+
mit-project/
314+
├── LICENSE ← MIT
315+
├── src/
316+
│ ├── main.rs ← MIT
317+
│ └── pmpl-lib.rs ← PMPL-1.0-or-later
318+
----
319+
320+
**Distribution**: Provide both licenses, SPDX headers on each file.
321+
322+
=== Scenario 2: Using PMPL library in proprietary app
323+
324+
✅ **Allowed** (with conditions)
325+
326+
**Requirements**:
327+
328+
* Ship PMPL library source alongside proprietary app
329+
* Maintain PMPL license for library files
330+
* Provide access to modified PMPL source if you modify it
331+
332+
=== Scenario 3: Forking PMPL project to GPL
333+
334+
✅ **Allowed via secondary license**
335+
336+
You can re-license PMPL code under GPL using MPL-2.0 Section 3.3:
337+
338+
[source,bash]
339+
----
340+
# Original: PMPL-1.0-or-later
341+
# Your fork: GPL-3.0-or-later
342+
----
343+
344+
**Requirement**: Include notice that original is available under PMPL.
345+
346+
=== Scenario 4: Combining PMPL with GPL library
347+
348+
✅ **Allowed**
349+
350+
[source,text]
351+
----
352+
combined-project/
353+
├── LICENSE-PMPL.txt
354+
├── LICENSE-GPL.txt
355+
├── src/
356+
│ ├── pmpl-code.rs ← PMPL-1.0-or-later
357+
│ └── gpl-code.rs ← GPL-3.0-or-later
358+
----
359+
360+
**Distribution**: Combined work can be under GPL (via secondary license), but PMPL files remain available under PMPL.
361+
362+
== Legal Compatibility Chart
363+
364+
[source,text]
365+
----
366+
PMPL-1.0
367+
368+
MPL-2.0 (base)
369+
370+
Compatible with:
371+
├── MIT/BSD/Apache (separate files)
372+
├── GPL/LGPL (secondary license)
373+
├── Other MPL-2.0 code (compatible)
374+
└── Proprietary (file-level separation)
375+
----
376+
377+
== Questions?
378+
379+
* **General compatibility**: See link:FAQ.adoc[]
380+
* **Integration guidance**: See link:INTEGRATION-GUIDE.adoc[]
381+
* **Legal questions**: Contact Palimpsest Stewardship Council
382+
* **Complex scenarios**: Seek legal counsel
383+
384+
== References
385+
386+
* **MPL-2.0 Compatibility**: https://www.mozilla.org/en-US/MPL/2.0/FAQ/
387+
* **SPDX License List**: https://spdx.org/licenses/
388+
* **REUSE Specification**: https://reuse.software/spec/
389+
* **FSF License Compatibility**: https://www.gnu.org/licenses/license-compatibility.html

0 commit comments

Comments
 (0)