Opublikowano wydanie platformy P2P Radicle 1.6, która ma na celu stworzenie zdecentralizowanej usługi współpracy i przechowywania kodu, podobnej do GitHub i GitLab, ale niezwiązanej z konkretnymi serwerami, niepoddającej się cenzurze i działającej na zasobach uczestników sieci P2P. Platforma wspiera typowe elementy interakcji społecznej programistów, takie jak issue, poprawki i recenzje kodu. Rozwój projektu napisano w języku Rust i jest dystrybuowane na licencjach Apache 2.0 i MIT. Przygotowano wersje dla systemów Linux i macOS. Dodatkowo rozwijane są klient desktopowy, interfejs webowy i interfejs konsolowy.
Radicle pozwala na niezależność w rozwijaniu i dystrybucji kodu od scentralizowanych platform i korporacji, których powiązania wprowadzają dodatkowe ryzyka (pojedynczy punkt awarii, firma może zniknąć lub zmienić warunki współpracy). Do zarządzania kodem w Radicle wykorzystywany jest znany Git, rozszerzony o mechanizmy określania repozytoriów w sieci P2P. Wszystkie dane są przede wszystkim przechowywane lokalnie (koncepcja local-first) i zawsze dostępne na komputerze dewelopera, niezależnie od stanu połączenia sieciowego.
Uczestnicy udostępniają dostęp do swojego kodu oraz powiązanych z kodem artefaktów, takich jak poprawki oraz dyskusje dotyczące błędów (issues), które są przechowywane lokalnie i replikowane na węzły innych zainteresowanych deweloperów podłączonych do wspólnej zdecentralizowanej sieci P2P. W efekcie tworzy się globalne, zdecentralizowane repozytorium Git, którego dane są replikowane i duplikowane na różnych systemach uczestników.
Do określania sąsiednich węzłów w sieci P2P stosowany jest protokół Gossip, a do replikacji danych między węzłami protokół Heartwood, oparty na Git. Ponieważ protokół jest oparty na Git, platformę łatwo zintegrować z istniejącymi narzędziami do rozwoju wykorzystującymi Git. Do identyfikacji węzłów oraz weryfikacji repozytoriów stosuje się kryptografię opartą na kluczach publicznych, bez użycia kont. Uwierzytelnianie i autoryzacja odbywają się na podstawie kluczy publicznych bez scentralizowanego systemu uwierzytelniania. serwerów.
Każde repozytorium w sieci P2P ma swój unikalny identyfikator i jest samoświadome (self-certifying), co oznacza, że wszystkie działania w repozytorium, takie jak dodawanie commitów i pozostawianie komentarzy do problemów, są poświadczane przez właściciela podpisem cyfrowym, co pozwala na upewnienie się o poprawności danych na innych węzłach bez użycia scentralizowanych centrów certyfikacji. Aby uzyskać dostęp do repozytorium, wystarczy, że w trybie online będzie przynajmniej jeden węzeł, na którym znajduje się jego zreplikowana kopia.
Węzły w sieci P2P mogą subskrybować określone repozytoria i otrzymywać aktualizacje. Możliwe jest tworzenie prywatnych repozytoriów, które są dostępne tylko dla określonych węzłów. Do zarządzania i posiadania repozytorium stosuje się koncepcję „delegatów” (delegates). Delegatem może być zarówno pojedynczy użytkownik, jak i bot lub grupa przypięta do specjalnego identyfikatora. Delegaci mogą przyjmować poprawki do repozytorium, zamykać problemy i ustalać prawa dostępu do repozytorium. Do każdego repozytorium może być przypisanych kilku delegatów.
Repozytoria Radicle są przechowywane na systemach użytkowników jako standardowe repozytoria git, które zawierają dodatkowe przestrzenie nazw do przechowywania danych węzłów i forków, z którymi prowadzone są bieżące prace. Dyskusje, proponowane poprawki i komponenty do organizacji recenzji również są przechowywane w repozytorium git w postaci wspólnych obiektów (COB — Collaborative Objects) i replikowane między węzłami.
W nowym wydaniu:
- Implementacja węzła Radicle (radicle-node) została przetłumaczona na użycie biblioteki wejścia/wyjścia Mio. Zależności usunięto z pakietów netservices, io-reactor i popol, które przeszkadzały w osiągnięciu właściwego poziomu wieloplatformowości. Dodano nowy moduł reactor, w ramach którego io-reactor został przepisany na bazie Mio.
- Przejście na Mio pozwoliło na wprowadzenie wsparcia dla platformy Windows, która na razie ma status eksperymentalny.
- Kod do przetwarzania argumentów wiersza poleceń został przetłumaczony na bibliotekę clap, co ujednoliciło zachowanie podczas przetwarzania argumentów i wprowadziło do narzędzia rad takie możliwości jak automatyczne generowanie podpowiedzi do poleceń, wyświetlanie rekomendacji w przypadku błędów, podświetlenie wyjścia i autouzupełnianie poleceń.
- W radicle-node dodano wsparcie dla mechanizmu systemd Credentials do bezpiecznego przekazywania kluczy dostępu (xyz.radicle.node.secret) oraz haseł do ich deszyfracji (xyz.radicle.node.passphrase) oprócz użycia zmiennej środowiskowej RAD_PASSPHRASE, opcji wiersza poleceń „—secret” i parametrów w pliku konfiguracyjnym.
- Wymagania dotyczące minimalnej wspieranej wersji kompilatora Rust podniesione do 1.85.
Źródło: opennet.ru
