Die Veröffentlichung der P2P-Plattform Radicle 1.6 ist da. Diese Plattform zielt darauf ab, einen dezentralisierten Service für die gemeinsame Entwicklung und Speicherung von Code zu schaffen, der mit GitHub und GitLab vergleichbar ist, jedoch nicht an spezifische Server gebunden ist, zensurfrei funktioniert und die Ressourcen der Teilnehmer des P2P-Netzwerks nutzt. Die Plattform unterstützt gängige Elemente der sozialen Interaktion unter Entwicklern, wie Issues, Patches und Code-Reviews. Die Entwicklung des Projekts erfolgt in Rust und wird unter den Lizenzen Apache 2.0 und MIT veröffentlicht. Bereitstellungen sind für Linux und macOS vorbereitet. Zusätzlich werden ein Desktop-Client, ein Webinterface und ein Konsoleninterface entwickelt.
Radicle ermöglicht es, bei der Entwicklung und Verteilung von Code unabhängig von zentralisierten Plattformen und Unternehmen zu sein, deren Bindung zusätzliche Risiken mit sich bringt (wie z.B. einen einzelnen Ausfallpunkt, das Unternehmen könnte schließen oder die Nutzungsbedingungen ändern). Zur Verwaltung des Codes in Radicle wird das gewohnte Git verwendet, ergänzt durch Mittel zur Definition von Repositories in einem P2P-Netzwerk. Alle Daten werden in erster Linie lokal gespeichert (Konzept "local-first") und sind stets auf dem Computer des Entwicklers verfügbar, unabhängig vom Zustand der Netzwerkverbindung.
Die Teilnehmer gewähren Zugang zu ihrem Code und verwandten Artefakten, wie z.B. Patches und Diskussionen über Fehlerbehebungen (Issues), die lokal gespeichert und auf Knoten anderer interessierter Entwickler, die mit dem gemeinsamen dezentralen P2P-Netzwerk verbunden sind, repliziert werden. Dadurch entsteht ein globales, dezentrales Git-Repository, dessen Daten auf verschiedenen Systemen der Teilnehmer repliziert und dupliziert sind.
Für die Identifizierung benachbarter Knoten in einem P2P-Netzwerk wird das Gossip-Protokoll verwendet, während das Heartwood-Protokoll, basierend auf Git, für die Replikation von Daten zwischen den Knoten zuständig ist. Da das Protokoll auf Git basiert, lässt sich die Plattform problemlos in bestehende Git-Entwicklungstools integrieren. Zur Identifikation der Knoten und zur Validierung der Repositories kommt eine kryptographische Methode auf Basis von Public-Key-Kryptographie zum Einsatz, ohne dass Benutzerkonten erforderlich sind. Die Authentifizierung und Autorisierung erfolgt ebenfalls auf Basis von Public Keys, ohne zentrale Zertifizierungsstellen. Server.
Jedes Repository in einem P2P-Netzwerk besitzt eine eindeutige Identifikation und ist selbstzertifizierend, d.h. alle Aktionen im Repository, wie das Hinzufügen von Commits und das Hinterlassen von Kommentaren zu Issues, werden vom Eigentümer mit einer digitalen Signatur versehen. Diese ermöglicht es, die Integrität der Daten auf anderen Knoten zu überprüfen, ohne zentrale Zertifizierungsstellen einzusetzen. Um auf das Repository zuzugreifen, reicht es aus, wenn sich mindestens ein Knoten online befindet, der eine replizierte Kopie davon hat.
Knoten im P2P-Netzwerk können sich für bestimmte Repositories anmelden und Updates erhalten. Es ist möglich, private Repositories zu erstellen, die nur bestimmten Knoten zugänglich sind. Zur Verwaltung und Eigentümerschaft eines Repositories wird das Konzept der 'Delegierten' verwendet. Ein Delegierter kann sowohl ein einzelner Benutzer als auch ein Bot oder eine Gruppe sein, die an eine spezielle Identifikationsnummer gebunden sind. Delegierte können Patches im Repository akzeptieren, Issues schließen und Zugriffsrechte für das Repository festlegen. An jedes Repository können mehrere Delegierte gebunden werden.
Radicle-Repositories werden auf den Systemen der Benutzer als gewöhnliche Git-Repositories gespeichert, in denen zusätzliche Namensräume für die Speicherung von Peer-Daten und Forks vorhanden sind, mit denen aktuell gearbeitet wird. Diskussionen, vorgeschlagene Patches und Komponenten zur Organisation von Reviews werden ebenfalls im Git-Repository als kollaborative Objekte (COB – Collaborative Objects) gespeichert und zwischen den Peers repliziert.
In der neuen Version:
- Die Implementierung des Radicle-Knotens (radicle-node) wurde auf die Mio-Ein- und Ausgabebibliothek umgestellt. Die Abhängigkeiten von netservices, io-reactor und popol wurden entfernt, da sie die Erreichung eines angemessenen Niveaus an Plattformunabhängigkeit beeinträchtigten. Ein neues Reactor-Modul wurde hinzugefügt, in dem der io-reactor auf Basis von Mio neu geschrieben wurde.
- Der Wechsel zu Mio ermöglicht die Unterstützung der Windows-Plattform, die derzeit als experimentell gilt.
- Der Code zur Analyse von Kommandozeilenargumenten wurde auf die Clap-Bibliothek umgestellt, was das Verhalten bei der Analyse der Argumente vereinheitlicht hat und der rad-Utility Funktionen wie die automatische Generierung von Hilfestellungen zu Befehlen, Empfehlungen zur Fehlerbehebung, die Hervorhebung von Ausgaben und die automatische Vervollständigung von Befehlen hinzugefügt hat.
- In radicle-node wurde die Unterstützung für das Systemd-Credentials-System hinzugefügt, um Zugangsschlüssel (xyz.radicle.node.secret) und Passwörter zu deren Entschlüsselung (xyz.radicle.node.passphrase) sicher zu übertragen, zusätzlich zur Verwendung der Umgebungsvariable RAD_PASSPHRASE, der Kommandozeilenoption "—secret" und der Parameter in der Konfigurationsdatei.
- Die Anforderungen an die minimal unterstützte Version des Rust-Compilers wurden auf 1.85 erhöht.
Quelle: opennet.ru
