Sentinel Compliance: Apache-2.0 + REUSE 3.3
"Ogni file in Zenzic porta la firma crittografica della sua licenza. Non esistono angoli bui."
1. La Licenza
Zenzic è rilasciato sotto la Apache License 2.0. Questa non è una scelta di policy — è un impegno ingegneristico. Apache-2.0 garantisce:
| Permesso | Dettagli |
|---|---|
| ✅ Uso commerciale | Nessuna restrizione |
| ✅ Modifica | Fork, patch, estensione |
| ✅ Distribuzione | Ridistribuzione sotto la stessa licenza |
| ✅ Concessione brevetti | Licenza brevetto esplicita da tutti i contributori |
Condizioni: Preservare i file LICENSE e NOTICE nelle distribuzioni.
Testo completo: File LICENSE alla radice di ogni repository Zenzic.
2. La Firma della Licenza — SPDX + REUSE 3.3
Ogni file sorgente in Zenzic porta un header SPDX — una dichiarazione leggibile dalla macchina di autorialità e licenza:
# SPDX-FileCopyrightText: 2026 PythonWoods <[email protected]>
# SPDX-License-Identifier: Apache-2.0
Questo non è un commento. È una firma di licenza — analizzabile da qualsiasi
strumento conforme a REUSE 3.3, incluso reuse lint.
I file senza header individuale sono coperti da dichiarazioni bulk in REUSE.toml:
[[annotations]]
path = ["docs/**", "i18n/**", "*.md"]
SPDX-License-Identifier = "Apache-2.0"
Strategia di copertura:
| Componente | Metodo |
|---|---|
| File sorgente Python | Header SPDX per file |
| Script shell | Header SPDX per file |
| Configurazioni (TOML, YAML) | Header per file o REUSE.toml |
Documentazione (.mdx, .md) | Dichiarazione bulk REUSE.toml |
| File auto-generati | Copertura REUSE.toml |
| Asset binari (SVG, PNG) | Dichiarazione bulk REUSE.toml |
3. L'Unico Gate della Verità
uv run reuse lint
Questo è il solo comando di verifica della conformità autorizzato. Esso:
- Analizza ogni header SPDX in ogni file.
- Valida tutte le dichiarazioni bulk in
REUSE.toml. - Riporta qualsiasi file senza copertura come fallimento di conformità.
- Restituisce exit 0 solo quando il 100% dei file ha una licenza dichiarata.
Output atteso:
Congratulations! Your project is compliant with version 3.3 of the REUSE Specification.
Questo gate viene eseguito in:
- L'hook pre-commit Sentinel Guard (hook 8 di 8)
just preflight— il mirror completo della CI locale
Qualsiasi PR che fallisce uv run reuse lint non viene integrata.
4. Policy Contribuzione — Nessun CLA, Copyright Multi-Autore
Zenzic usa il modello di copyright multi-autore. Non è richiesto alcun Contributor License Agreement (CLA).
| Scenario | Azione |
|---|---|
| Nuovo file (qualsiasi contributore) | Aggiungi la tua riga di copyright SPDX |
| Modifica piccola (< 10 righe) | Mantieni gli header esistenti invariati |
| Contribuzione sostanziale | Aggiungi la tua riga di copyright sotto quelle esistenti |
Esempio di file multi-autore:
# SPDX-FileCopyrightText: 2026 PythonWoods <[email protected]>
# SPDX-FileCopyrightText: 2026 Nome Contributore <[email protected]>
# SPDX-License-Identifier: Apache-2.0
Mantieni il copyright del tuo contributo. La licenza Apache-2.0 — inclusa la concessione di brevetti — si applica automaticamente all'atto della sottomissione.
5. Policy Dipendenze di Terze Parti
Zenzic può dipendere solo da librerie con licenze compatibili con Apache-2.0:
| Licenza | Compatibile | Note |
|---|---|---|
| MIT | ✅ | Permissiva |
| BSD 2/3-Clause | ✅ | Permissiva |
| Apache-2.0 | ✅ | Identica |
| LGPL-3.0 | ✅ | Solo uso come libreria |
| ISC | ✅ | Equivalente a MIT |
| GPL-2.0 / GPL-3.0 | ❌ | Contaminazione copyleft |
| Proprietaria | ❌ | Non open-source |
Quando si aggiunge una dipendenza: verificare la compatibilità, aggiungere al file
NOTICE, eseguire uv run reuse lint.
6. Disclaimer Legale
Questo documento fornisce orientamenti operativi, non consulenza legale. Per domande sulla conformità Apache-2.0, concessioni di brevetti o diritti di contribuzione, consultare un professionista legale qualificato.
Riferimenti:
Saga VI: The Governance of Quartz — leggi la cronaca