Il y a quelque temps, j’ai dit que je voulais construire un remplaçant pour GitHub.
La prise de conscience importante, c’est que je n’avais pas besoin de construire un autre GitHub.
Git distribue déjà le code.
Ce qu’il ne distribue pas, c’est la collaboration autour du code.
Issues. Reviews. Résultats de CI. Décisions. Gouvernance. Identité. Mémoire d’agent.
Cette partie-là reste généralement piégée dans le service de quelqu’un d’autre.
Alors j’ai créé Hubnot.
Petite note sur le nom : ce projet avait initialement un nom différent. Mes amis européens m’ont très gentiment fait remarquer qu’il traînait quelques bagages indésirables dans certaines langues, j’ai donc saisi l’indice et je l’ai renommé avant le lancement. Oups, ma faute. (C’est pour ça que vouloir être créatif avec les noms est une mauvaise idée). 😅
https://github.com/LynnColeArt/hubnot
Des faits signés dans Git
Hubnot distribue la collaboration avec le dépôt Git lui-même.
Il n’y a pas de serveur Hubnot.
Il n’y a pas de base de données Hubnot.
Il n’y a pas de compte SaaS qui possède l’état du projet.
Un remote Git ordinaire transporte à la fois le code et les faits de collaboration signés, stockés sous refs/hn/*.
Cela signifie que les propositions, les reviews, les requêtes et résultats de CI, les décisions de gouvernance, les faits de fusion, les identités d’appareils, les amendements de politique et la mémoire délibérée d’agent peuvent tous voyager avec le dépôt.
Et ils sont signés.
Le protocole est conçu autour de faits immuables plutôt que d’un état de site web mutable.
Une review dit : « cet acteur a approuvé cette proposition exacte ».
Un résultat de CI dit : « ce runner a testé ce candidat exact ».
Une décision dit : « ce mainteneur a accepté cette révision exacte selon cette politique ».
Si la proposition change, l’ancienne preuve ne s’applique pas magiquement à la nouvelle.
On crée une nouvelle révision et on rassemble de nouvelles preuves.
Ça a l’air évident quand on le dit tout haut.
Mais ce n’est pas comme ça que la plupart des systèmes de collaboration logicielle sont modélisés.
L’alpha opérationnelle
Hubnot a franchi son premier jalon important : l’alpha opérationnelle est terminée.
Plus important encore, Hubnot a utilisé son propre protocole pour réviser, tester en sandbox de manière indépendante, approuver, accepter et fusionner des changements dans sa propre branche main publique.
Alors oui, il a déjà commencé à manger sa propre pâtée.
Ou peut-être ses propres objets Git.
Le projet est encore en alpha. Le protocole n’est pas encore stable et il reste beaucoup à construire.
Mais l’idée centrale fonctionne.
Git nous a déjà donné le contrôle de version distribué.
Hubnot est une expérience pour finir le travail.
Le code ne devrait pas être la seule partie de la collaboration logicielle qui appartienne à ceux qui font le boulot.
Sous licence MIT.
À vous de cloner, casser, améliorer, contester et enrichir.
Maintenant, file, petite créature de lumière, et va casser quelque chose !