A fost lansată versiunea 1.5 a platformei P2P Radicle, care vizează crearea unui serviciu descentralizat de colaborare și stocare a codului, asemănător cu GitHub și GitLab, dar fără legături cu servere specifice, imun la cenzură și funcționând cu resursele participanților din rețeaua P2P. Platforma suportă elemente standard de interacțiune socială între dezvoltatori, cum ar fi issue-uri, patch-uri și recenzii de cod. Proiectele sunt scrise în limbajul Rust și sunt distribuite sub licențele Apache 2.0 și MIT. Versiunile sunt pregătite pentru Linux și macOS. Se dezvoltă, de asemenea, un client desktop, o interfață web și o interfață de consolă.
Radicle permite dezvoltarea și distribuția codului fără a depinde de platforme și corporații centralizate, la care legătura aduce riscuri suplimentare (punct unic de eșec, compania se poate închide sau poate schimba termenii de operare). Pentru gestionarea codului, Radicle utilizează Git-ul familiar, extins cu instrumente pentru identificarea repository-urilor în rețeaua P2P. Toate datele sunt în primul rând salvate local (conceptul local-first) și sunt întotdeauna accesibile pe computerul dezvoltatorului, indiferent de starea conexiunii la rețea.
Participanții oferă acces la codul lor și la artefactele asociate, cum ar fi patch-uri și discuții despre corectarea erorilor (issues), care sunt salvate local și replicate pe nodurile altor dezvoltatori interesați, conectați la rețeaua P2P descentralizată comună. În acest fel, se formează un repository Git global descentralizat, ale cărui date sunt replicate și duplicate pe diferite sisteme ale participanților.
Pentru determinarea nodurilor adiacente în rețeaua P2P se aplică protocolul Gossip, iar pentru replicarea datelor între noduri se folosește protocolul Heartwood, bazat pe Git. Deoarece protocolul se bazează pe Git, platforma se integrează ușor cu instrumentele existente pentru dezvoltare pe Git. Pentru identificarea nodurilor și validarea repository-urilor se utilizează criptografia cu chei publice, fără a folosi conturi. Autentificarea și autorizarea se realizează pe baza cheilor publice, fără autorități de certificare centralizate. servere.
Fiecare repository într-o rețea P2P are un identificator unic și este auto-certificat, adică toate acțiunile din repository, cum ar fi adăugarea de commit-uri și comentarii la issue-uri, sunt validate de proprietar cu o semnătură digitală, ceea ce permite verificarea corectitudinii datelor pe alte noduri fără a folosi autorități de certificare centralizate. Pentru a avea acces la repository, este suficient ca cel puțin un nod să fie online, pe care există o copie replicată a acestuia.
Nodurile din rețeaua P2P se pot abona la anumite repository-uri și pot primi actualizări. Este posibil să se creeze repository-uri private, accesibile doar anumitor noduri. Conceptul de «delegati» este folosit pentru gestionarea și deținerea unui repository. Un delegat poate fi atât un utilizator individual, cât și un bot sau un grup, legate de un identificator special. Delegatii pot accepta patch-uri în repository, pot închide issue-uri și pot seta drepturi de acces la repository. La fiecare repository pot fi atașați mai mulți delegati.
Repository-urile Radicle sunt stocate pe sistemele utilizatorilor sub formă de repository-uri git obișnuite, care conțin spații de nume suplimentare pentru stocarea datelor despre peeri și forcuri, cu care se lucrează în prezent. Discuțiile, patch-urile propuse și componentele pentru organizarea revizuirii sunt, de asemenea, salvate în repository-ul git sub formă de obiecte colaborative (COB — Collaborative Objects) și sunt replicate între peeri.
În noua versiune:
- S-a îmbunătățit suportul pentru repozitorii bare, care nu conțin un director de lucru cu copia fișierelor proiectului, ci doar istoricul modificărilor și metadatele, cum ar fi ramurile și etichetele. Comenzii „rad clone” i s-a adăugat opțiunea „—bare”, care permite clonarea repozitorului într-o formă fără arbore de lucru. În utilitarul „git-remote-rad”, s-a îmbunătățit funcționarea cu repozitorii bare atunci când se folosesc comenzile „git push” și „git fetch” pentru a accesa un server rad extern.
- A fost adăugată setarea „patch.branch”, care poate fi utilizată în utilitarul git-remote-rad („git-remote-rad -o patch.branch[=<name>]”) când se adaugă un patch pentru a crea automat o ramură în repozitoriul upstream, fără a mai fi necesară utilizarea comenzii „rad patch checkout”.
- A fost îmbunătățit output-ul comenzii „rad patch show”, care acum afișează versiunea originală a patch-ului, care era anterior afișată doar cu specificarea flag-ului „—verbose”. Toate reviziile sunt acum prezentate într-o cronologie unitară, fără a fi împărțite în modificările originalului autor și cele ale altor participanți.
- A fost adăugată funcționalitatea de a afișa logurile într-o formă structurată, activată prin opțiunile „—log-logger structured” și „—log-format json”.
Sursa: opennet.ro
