Concept : Contribution & Gouvernance des Buckets
Navigation : Documentation > Contribution
Charte générale de contribution : Charte Complète de Contribution
Sommaire
- Principes de Contribution
- Segmentation des 4 Buckets Officiels
- Bucket
core: Utilitaires fondamentaux - Bucket
gui: Applications de bureau - Bucket
community: Outils émergents et de niche - Bucket
commercial: Logiciels propriétaires et sous licence - Le Pipeline CI/CD d'Intégration Automatisé
- Comment Proposer un Nouveau Paquet
- Liens et Références Associées
1. Principes de Contribution
L'écosystème Érable est conçu pour être à la fois ouvert à la communauté et rigoureusement automatisé. Afin d'éviter les goulots d'étranglement humains rencontrés par d'autres gestionnaires de paquets :
- Audit automatisé par CI/CD : Des bots d'intégration inspectent chaque soumission de paquet.
- Règles d'acceptation objectives : Des critères clairs (popularité, licence, tests d'exécution) déterminent dans quel bucket un logiciel est accueilli.
- Sécurité supply-chain garantie : Aucune contribution ne peut contourner la vérification des sommes de contrôle SHA-256 et l'analyse de sécurité des scripts (Zero Egress).
2. Segmentation des 4 Buckets Officiels
Chaque logiciel est assigné à l'un des quatre buckets officiels selon des critères précis :
flowchart TD
PKG["Nouveau Paquet Proposé"] --> Q_LIC{"Licence Propriétaire / EULA ?"}
Q_LIC -->|Oui| COMM["Bucket commercial"]
Q_LIC -->|Non (Open Source)| Q_GUI{"Interface Graphique (GUI) ?"}
Q_GUI -->|Oui| GUI["Bucket gui"]
Q_GUI -->|Non (CLI / TUI)| Q_POP{"FOSS >= 500 Stars & Multiplateforme ?"}
Q_POP -->|Oui| CORE["Bucket main / core"]
Q_POP -->|Non (Moins de 500 stars ou niche)| COMMU["Bucket community"]
2.1 Bucket main / core : Utilitaires fondamentaux
- Vocation : Les outils en ligne de commande de référence (
git,ripgrep,kubectl,neovim,bat, etc.). - Critères : Licence FOSS reconnue (OSI), $\ge 500$ étoiles GitHub/GitLab, support d'au moins 2 systèmes d'exploitation, tests automatisés obligatoires (
check_version,check_help). - 👉 Consulter la charte détaillée du Bucket Core
2.2 Bucket gui : Applications de bureau
- Vocation : Logiciels fenêtrés nécessitant des raccourcis dans le menu Démarrer ou le dossier
/usr/share/applications. - Critères : Déclaration obligatoire de
parts/shortcuts.toml, icônes et désinstallation propre sans résidus. - 👉 Consulter la charte détaillée du Bucket GUI
2.3 Bucket community : Outils émergents et de niche
- Vocation : Projets open source récents (< 500 étoiles), outils développés par des contributeurs indépendants.
- Critères : Audit rigoureux par le linter AST anti-exfiltration, pas d'appels réseau non supervisés.
- 👉 Consulter la charte détaillée du Bucket Community
2.4 Bucket commercial : Logiciels propriétaires et sous licence
- Vocation : Outils indispensables aux développeurs mais soumis à une licence commerciale ou EULA (ex: IDEs propriétaires, outils cloud spécifiques).
- Critères : Téléchargement direct depuis les serveurs officiels de l'éditeur (aucun miroir tiers), obligation du drapeau
--accept-licensepour l'utilisateur. - 👉 Consulter la charte détaillée du Bucket Commercial
3. Le Pipeline CI/CD d'Intégration Automatisé
Le dépôt core héberge le bot d'automatisation CI/CD (scripts/ci/) qui s'exécute régulièrement :
- Découverte des requêtes : Lecture des issues formatées avec les étiquettes correspondantes.
- Contrôle syntaxique : Validation des fichiers TOML de
parts/. - Téléchargement et empreinte : Téléchargement dans un environnement éphémère sandboxé et calcul du hash SHA-256.
- Exécution des tests de fumée (Smoke tests) : Vérification de la commande
--versionet--help. - Génération de la Merge Request : Création automatique de la proposition de fusion prête à être approuvée.
4. Comment Proposer un Nouveau Paquet
- Identifier le bon bucket selon l'arbre de décision ci-dessus.
- Créer les fichiers manifestes dans
packages/<initiale>/<nom-paquet>/parts/: package.tomltargets.toml- Tester localement l'installation avec votre moteur Érable :
- Ouvrir une Merge Request sur le dépôt du bucket cible sur GitLab.