docs: add licensing and compliance documentation

Add comprehensive FOSS compliance documentation including:
- COPYRIGHT.md: copyright holders and code ownership
- LICENSING.md: GPL-3.0-or-later policy and source offer
- NOTICE: attribution requirements for permissive licenses
- THIRD-PARTY-LICENSES.md: third-party software inventory
- TRADEMARKS.md: trademark notices and non-affiliation
- os-release hook and files: identify FWS as separate from Arch Linux

These documents establish legal compliance baseline for GPL/AGPL/Apache/MIT/BSD obligations before public distribution.
This commit is contained in:
2026-06-17 15:18:39 +02:00
parent 3f83316fa8
commit 43c1053bd7
7 changed files with 527 additions and 0 deletions
+147
View File
@@ -0,0 +1,147 @@
# Logiciels tiers & licences — FWS
Ce document est l'**inventaire de conformité** (« bill of materials ») des
logiciels tiers que FWS reconditionne, embarque ou redistribue. Il sert à
satisfaire les obligations d'**attribution** et de **préservation des avis de
licence** des licences GPL, LGPL, AGPL, Apache, MIT et BSD.
Trois familles de tiers :
1. **La base du dépôt** : FWS est un fork d'**archiso**.
2. **Les paquets construits/redistribués par FWS** (`pkgbuilds/` + `local-repo/`),
notamment l'installateur **Anaconda** et ses dépendances Python.
3. **L'ensemble des paquets Arch Linux** agrégés dans l'ISO live (chacun sous sa
propre licence ; l'avis de licence de chaque paquet est présent dans
`/usr/share/licenses/<paquet>/` sur le système installé/live).
---
## 1. Base du dépôt
| Composant | Rôle | SPDX | Détenteur | Source amont |
|---|---|---|---|---|
| **archiso** | système de build (mkarchiso, profils, man, Makefile) | `GPL-3.0-or-later` | Arch Linux / Archiso Authors | https://gitlab.archlinux.org/archlinux/archiso |
Auteurs originaux : voir [AUTHORS.rst](AUTHORS.rst).
---
## 2. Paquets construits / redistribués par FWS
Sources des recettes : `pkgbuilds/*/PKGBUILD`. Binaires : `local-repo/*.pkg.tar.zst`.
La **source correspondante** (au sens GPL/LGPL) de chacun est le tarball amont
référencé par `source=()` dans le PKGBUILD, plus le PKGBUILD lui-même.
| Paquet | Version | SPDX | Détenteur principal | Source amont |
|---|---|---|---|---|
| anaconda | 45.8 | `GPL-2.0-or-later` | Red Hat, Inc. & contributeurs Anaconda | https://github.com/rhinstaller/anaconda |
| anaconda-widgets | 45.8 | `GPL-2.0-or-later` | Red Hat, Inc. | https://github.com/rhinstaller/anaconda |
| pykickstart | 3.74 | `GPL-2.0-or-later` | Red Hat, Inc. | https://github.com/pykickstart/pykickstart |
| python-blivet | 3.13.2 | `LGPL-2.1-only` | Red Hat, Inc. | https://github.com/storaged-project/blivet |
| python-meh | 0.43 | `GPL-2.0-or-later` | Red Hat, Inc. | https://github.com/rhinstaller/python-meh |
| python-productmd | 1.50 | `LGPL-2.1-or-later` | Red Hat, Inc. / release-engineering | https://github.com/release-engineering/productmd |
| python-simpleline | 1.8 | `LGPL-3.0-or-later` | Red Hat, Inc. | https://github.com/rhinstaller/python-simpleline |
| python-requests-file | 2.1.0 | `Apache-2.0` | David Shea | https://github.com/dashea/requests-file |
| python-requests-ftp | 0.3.1 | `Apache-2.0` | Cory Benfield | https://github.com/Lukasa/requests-ftp |
| python-pid | 3.0.4 | `Apache-2.0` | trbs | https://github.com/trbs/pid |
| python-iso639 | 0.4.5 | **`AGPL-3.0-only`** ⚠ | Mikael Karlsson (noumar) | https://github.com/noumar/iso639 |
| python-langtable | 0.0.51 | `GPL-3.0-or-later AND MIT` | Mike FABIAN | https://github.com/mike-fabian/langtable |
| python-xkbregistry | 1.5 | `MIT` | Stephen Early | https://github.com/sde1000/python-xkbregistry |
| libreport | 2.17.15 | **`GPL-2.0-only`** ⚠ | Red Hat, Inc. (projet ABRT) | https://github.com/abrt/libreport |
| satyr | 0.43 | `GPL-2.0-or-later` | Red Hat, Inc. (projet ABRT) | https://github.com/abrt/satyr |
| libxmlrpc (xmlrpc-c) | 1.64.03 | `custom` (BSD-style permissive) | Auteurs xmlrpc-c | https://xmlrpc-c.sourceforge.net/ |
| winboat-bin | 0.9.0 | `MIT` | Auteurs WinBoat (TibixDev) | https://www.winboat.app |
> Les versions et identifiants SPDX ci-dessus proviennent des champs `license=`
> des PKGBUILD et des `.PKGINFO` des paquets de `local-repo/`. Quand le `.PKGINFO`
> portait une étiquette ancienne et imprécise (`GPL`, `Apache`), l'identifiant
> SPDX retenu est celui du dépôt amont (p. ex. `satyr` → `GPL-2.0-or-later`).
> **À corriger dans les PKGBUILD** pour des étiquettes SPDX exactes.
---
## 3. Paquets Arch Linux de l'ISO
L'ISO live agrège tout l'ensemble de paquets listé dans
`configs/releng/packages.x86_64` et `configs/baseline/packages.x86_64` (noyau
Linux, Xorg, Openbox, environnements de bureau, utilitaires…). Chaque paquet
conserve sa licence d'origine ; l'avis correspondant est fourni dans
`/usr/share/licenses/<paquet>/` sur le système. FWS ne revendique aucun droit
sur ces paquets.
---
## 4. Analyse de compatibilité des licences
**Licence effective du dépôt FWS : `GPL-3.0-or-later`** (imposée par la dérivation
d'archiso, lui-même GPL-3.0-or-later).
### 4.1 Principe d'agrégation (le cas général)
L'ISO et le dépôt de paquets sont des **agrégations** de programmes indépendants
(« mere aggregation », GPLv3 §5 / GPLv2 §2). Chaque paquet est distribué comme
une unité séparée (binaire `.pkg.tar.zst` distinct, processus distinct,
bibliothèque partagée distincte) et **conserve sa propre licence**. C'est
exactement le modèle juridique sous lequel Arch Linux, Debian et Fedora
distribuent des milliers de paquets de licences hétérogènes sur un même média.
À ce niveau, la compatibilité copyleft **n'est pas requise** : il n'y a pas
d'« œuvre combinée » unique.
### 4.2 Compatibilité au sein du runtime Anaconda
Anaconda charge plusieurs modules dans **un même processus Python** au moment de
l'exécution. Les licences en présence et leur compatibilité montante vers GPLv3 :
| Licence du composant | Compatible GPLv3 ? | Note |
|---|---|---|
| `GPL-2.0-or-later` (anaconda, meh, pykickstart, satyr…) | ✅ | la clause « or later » autorise l'usage en GPLv3 |
| `LGPL-2.1-only` (blivet) | ✅ | LGPL-2.1 §3 autorise la relicence en GPL ; usage dynamique |
| `LGPL-2.1-or-later` (productmd) | ✅ | montée vers (L)GPLv3 |
| `LGPL-3.0-or-later` (simpleline) | ✅ | sous-ensemble de GPLv3 |
| `Apache-2.0` (requests-file, requests-ftp, pid) | ✅ | compatible GPLv3 (sens unique) ; voir [NOTICE](NOTICE) |
| `MIT` (xkbregistry, winboat) | ✅ | permissive |
| `MIT`/`BSD-style` (langtable, libxmlrpc) | ✅ | permissive |
### 4.3 ⚠ Deux points à surveiller (signalés en bonne foi)
1. **`python-iso639` est `AGPL-3.0-only`.** L'AGPL est compatible avec GPLv3 via
la clause de compatibilité réciproque (GPLv3 §13 / AGPLv3 §13) : on peut
combiner du code AGPLv3 et GPLv3. La **clause réseau** de l'AGPL (mise à
disposition de la source aux utilisateurs distants d'un service réseau) est
en pratique **inerte** pour un installateur hors-ligne. **Cependant**, l'AGPL
est la licence la plus contaminante et beaucoup d'organisations l'interdisent
par politique interne. **Recommandation béton :** si l'AGPL n'est pas
souhaitée, remplacer `noumar/iso639` par une bibliothèque ISO-639 non-AGPL
(p. ex. `pycountry` — BSD, ou les données `iso-codes`), ce qui élimine le
sujet.
2. **`libreport` est `GPL-2.0-only`** (sans « or later »). GPL-2.0-**only** n'est
**pas** compatible en montée avec GPLv3/AGPLv3. Tant que `libreport` reste un
paquet **séparé** (bibliothèque partagée distincte, appelée via `python-meh`
qui importe `report`), on demeure dans le régime d'agrégation §4.1 — et c'est
la configuration que **Fedora elle-même distribue**. Le risque n'apparaîtrait
que si l'on **liait statiquement** `libreport` (GPLv2-only) avec un composant
AGPLv3-only/GPLv3-only dans un **seul binaire** : à éviter. En l'état (paquets
séparés), pas de conflit.
### 4.4 Verdict
En l'état (paquets séparés, agrégation sur ISO, modules Python chargés au
runtime), **la configuration est cohérente et alignée sur la pratique des
distributions majeures**. Les deux points ⚠ ci-dessus méritent une décision
explicite (garder / remplacer l'AGPL) et une revue par un juriste FOSS avant
diffusion commerciale.
> **Ceci n'est pas un avis juridique.** Analyse de bonne foi fondée sur les
> métadonnées de licence du dépôt à la date du 2026-06-17.
---
## 5. Préservation des avis
- Les textes de licence amont présents dans les sources sont conservés lors du
`package()` (pacman installe `LICENSE`/`COPYING` dans
`/usr/share/licenses/<paquet>/`).
- Les attributions requises par Apache-2.0 / MIT / BSD figurent dans [NOTICE](NOTICE).
- Aucun avis de droit d'auteur amont ne doit être retiré des sources ou binaires
redistribués.