La version 1.6 de la plateforme P2P Radicle a été publiée, visant à créer un service décentralisé de développement collaboratif et de stockage de code, similaire à GitHub et GitLab, mais non lié à des serveurs spécifiques, résistant à la censure et fonctionnant avec les ressources des participants du réseau P2P. La plateforme prend en charge des éléments typiques de l'interaction sociale des développeurs, tels que les problèmes, les correctifs et les revues de code. Les travaux du projet sont écrits en Rust et sont distribués sous les licences Apache 2.0 et MIT. Des builds ont été préparés pour Linux et macOS. Un client de bureau, une interface web et une interface en ligne de commande sont également en cours de développement.
Radicle permet de ne pas dépendre des plateformes et des entreprises centralisées pour le développement et la distribution de code, avec les risques additionnels qu'elles impliquent (point de défaillance unique, l'entreprise peut fermer ou changer les conditions d'utilisation). Pour la gestion du code, Radicle utilise Git, enrichi par des outils pour définir des dépôts dans le réseau P2P. Toutes les données sont d'abord sauvegardées localement (concept local-first) et sont toujours disponibles sur l'ordinateur du développeur, quel que soit l'état de la connexion réseau.
Les participants donnent accès à leur code et aux artefacts associés, tels que les patches et les discussions sur les corrections d'erreurs (issues), qui sont sauvegardés localement et répliqués sur les nœuds d'autres développeurs intéressés, connectés au réseau P2P décentralisé commun. Un dépôt Git décentralisé mondial se forme ainsi, dont les données sont répliquées et dupliquées sur différents systèmes des participants.
Pour identifier les nœuds voisins dans le réseau P2P, le protocole Gossip est utilisé, et pour la réplication des données entre les nœuds, le protocole Heartwood, basé sur Git. Étant donné que le protocole repose sur Git, la plateforme s'intègre facilement avec les outils existants pour le développement avec Git. Pour identifier les nœuds et vérifier les dépôts, une cryptographie basée sur des clés publiques est utilisée, sans recourir à des comptes. L'authentification et l'autorisation se font sur la base de clés publiques sans autorité de certification centralisée. serveurs.
Chaque dépôt dans un réseau P2P possède son propre identifiant unique et est auto-certifié, c'est-à-dire que toutes les actions dans le dépôt, telles que l'ajout de commits et les commentaires sur les issues, sont validées par le propriétaire à l'aide d'une signature numérique, permettant ainsi de vérifier l'exactitude des données sur d'autres nœuds sans utiliser de centres de certification centralisés. Pour accéder au dépôt, il suffit qu'au moins un nœud en ligne possède sa copie répliquée.
Les nœuds dans le réseau P2P peuvent s'abonner à des dépôts spécifiques et recevoir des mises à jour. Il est possible de créer des dépôts privés, accessibles uniquement à certains nœuds. La gestion et la propriété d'un dépôt utilisent le concept de « délégués ». Un délégué peut être un utilisateur individuel, un bot ou un groupe, liés à un identifiant spécial. Les délégués peuvent accepter des patchs dans le dépôt, fermer des issues et définir des droits d'accès au dépôt. Plusieurs délégués peuvent être associés à chaque dépôt.
Les dépôts Radicle sont stockés sur les systèmes des utilisateurs sous forme de dépôts git ordinaires, qui contiennent des espaces de noms supplémentaires pour stocker les données des pairs et des forks avec lesquels le travail actuel est effectué. Les discussions, les patchs proposés et les composants pour l'organisation de la révision sont également conservés dans le dépôt git sous forme d'objets collaboratifs (COB - Collaborative Objects) et sont répliqués entre les pairs.
Dans cette nouvelle version :
- L'implémentation du nœud Radicle (radicle-node) a été mise à jour pour utiliser la bibliothèque d'entrée/sortie Mio. Les dépendances ont été réduites en supprimant les paquets netservices, io-reactor et popol, qui interféraient avec le niveau de multiplateforme nécessaire. Un nouveau module reactor a été ajouté, au sein duquel io-reactor a été réécrit sur la base de Mio.
- Le passage à Mio a permis d'ajouter un support pour la plateforme Windows, qui reste pour l'instant au stade expérimental.
- Le code pour parser les arguments de la ligne de commande a été transféré à la bibliothèque clap, ce qui uniformise le comportement en matière d'analyse des arguments et introduit dans l'outil rad des fonctionnalités telles que la génération automatique d'aide sur les commandes, l'affichage de recommandations pour la correction des erreurs, la mise en surbrillance des sorties et l'autocomplétion des commandes.
- Le support du mécanisme systemd Credentials a été ajouté à radicle-node pour un transfert sécurisé des clés d'accès (xyz.radicle.node.secret) et des mots de passe pour leur déchiffrement (xyz.radicle.node.passphrase), en complément de l'utilisation de la variable d'environnement RAD_PASSPHRASE, de l'option de ligne de commande «—secret» et des paramètres dans le fichier de configuration.
- Les exigences pour la version minimale supportée du compilateur Rust ont été élevées à 1.85.
Source : opennet.ru
