01. Règles d'Acceptation du Bucket main
Navigation : Documentation > Chartes de Contribution > Règles Bucket Main
Sommaire
- Critères d'Éligibilité Stricts
- Popularité et Légitimité Communautaire
- Licence Logicielle et Transparence
- Portabilité Multiplateforme
- Exigences Techniques dans les Manifestes
- Sanity Checks Obligatoires
- Zéro Dépendance Système Impérative
- Surveillance Automatisée
- Exemple de Manifeste Conforme
Le bucket main constitue le socle fondamental de erable. Il regroupe les outils en ligne de commande (CLI / TUI) essentiels, matures et reconnus de l'écosystème du développement.
1. Critères d'Éligibilité Stricts
Pour qu'un paquet soit accepté dans le bucket main, il doit impérativement satisfaire à l'ensemble des critères suivants :
1.1 Popularité et Légitimité Communautaire
- Nombre d'étoiles minimum : Le dépôt source officiel (GitHub, GitLab, Codeberg) doit cumuler au minimum 500 étoiles (stars).
- Activité du projet : Le projet doit être activement maintenu (au moins un commit ou une release au cours des 12 derniers mois).
- Adoption éprouvée : L'outil doit répondre à un cas d'usage généraliste et être couramment utilisé dans la communauté des développeurs.
- Prévention de la manipulation d'étoiles (Star Gaming) : L'intégration continue analyse de façon 100% automatisée la vélocité et les métriques du dépôt (ratio stars/forks/issues, historique continu d'au moins 6 mois). Si les seuils algorithmiques sont satisfaits, la publication est débloquée sans goulot d'étranglement humain.
1.2 Licence Logicielle et Transparence
- 100% Open Source (FOSS) : La licence doit être explicitement reconnue par l'OSI (ex: MIT, Apache-2.0, BSD-3-Clause, GPLv3, MPL-2.0, Unlicense).
- Les logiciels propriétaires, freewares sans code source ouvert ou licences commerciales sont strictement interdits dans
core(ils doivent être soumis dans le bucketcommercial).
1.3 Portabilité Multiplateforme
- Le paquet doit proposer des cibles binaires fonctionnelles pour au moins 2 des 3 systèmes d'exploitation majeurs (Windows, Linux, macOS).
- Sauf exception justifiée, les cibles
x86_64etaarch64(ARM64) doivent être couvertes.
2. Exigences Techniques dans les Manifestes
2.1 Sanity Checks Obligatoires (parts/verification.toml)
Chaque paquet doit obligatoirement définir :
check_version: Une commande exécutable renvoyant la version exacte du paquet et validée par une expression régulière stricte.check_help: Une commande--helprenvoyant un code de sortie0et confirmant l'affichage des instructions d'utilisation.
2.2 Zéro Dépendance Système Impérative
- Les binaires doivent être autant que possible compilés en statique (musl sous Linux, runtime C autonome ou déclaration explicite de
vcredist-2022). - Les paquets ne doivent pas nécessiter d'élévation de privilèges administrateur (UAC / sudo).
2.3 Surveillance Automatisée (parts/autoupdate.toml)
- Tout paquet soumis dans
maindoit obligatoirement inclure un blocparts/autoupdate.tomlconfiguré pour que le bot CI puisse mettre à jour automatiquement les futures versions sans intervention humaine.
3. Processus d'Audit et Validation 100% Automatisé
- Zéro Approbation Humaine Requise : Si l'ensemble des critères d'éligibilité, des audits de sécurité et des tests d'intégrité sont satisfaits, la fusion et la publication dans le bucket sont 100% automatiques.
- Passage des Tests CI Obligatoire : Tous les workflows d'intégrité (linter AST anti-exfiltration, conformité des schémas TOML, vérification cryptographique SHA-256 et provenance SLSA 3, tests d'exécution de
check_versionetcheck_help) doivent être au vert.