Predstavujeme vydanie P2P platformy Radicle 1.5, zameranej na vytvorenie decentralizovanej služby pre spoluprácu a ukladanie kódu, podobnej GitHubu a GitLabu, ale nepriputej k konkrétnym serverom, necenzurovanej a fungujúcej s využitím zdrojov účastníkov P2P siete. Platforma podporuje štandardné prvky sociálnej interakcie vývojárov, ako sú issue, patche a recenzie kódu. Vyvinuté komponenty projektu sú napísané v jazyku Rust a šíria sa pod licenciami Apache 2.0 a MIT. Zostavy sú pripravené pre Linux a macOS. Okrem toho sa vyvíja desktopový klient, webové rozhranie a konzolové rozhranie.
Radicle umožňuje nielen vyvíjať a zdieľať kód bez závislosti na centralizovaných platformách a korporáciách, ktorých viazanie prináša ďalšie riziká (jediný bod zlyhania, spoločnosť sa môže zatvoriť alebo zmeniť podmienky práce). Na riadenie kódu v Radicle sa používa známy Git, rozšírený prostriedkami na určovanie repozitárov v P2P sieti. Všetky dáta sú najprv uložené lokálne (koncept local-first) a vždy k dispozícii na počítači vývojára, bez ohľadu na stav sieťového pripojenia.
Účastníci poskytujú prístup k svojmu kódu a súvisiacim artefaktom, ako sú patchy a diskusie o opravách chýb (issues), ktoré sa ukladajú lokálne a replikujú na uzly iných zaujímavých vývojárov pripojených k spoločnej decentralizovanej P2P sieti. Týmto spôsobom sa formuje globálny decentralizovaný Git repozitár, ktorého dáta sú replikované a duplikované na rôznych systémoch účastníkov.
Na určenie susedných uzlov v P2P sieti sa používa protokol Gossip, a na replikáciu dát medzi uzlami protokol Heartwood, založený na Gite. Keďže je protokol založený na Gite, platformu je ľahké integrovať so existujúcimi nástrojmi pre vývoj na Gite. Na identifikáciu uzlov a verifikáciu repozitárov sa používa kryptografia na báze verejných kľúčov, bez použitia účtov. Autentifikácia a autorizácia sa vykonáva na báze verejných kľúčov bez centralizovaných certifikačných autorít. serverov.
Každý repozitár v P2P sieti má svoj jedinečný identifikátor a je samoverifikovaný (self-certifying), t.j. všetky činnosti v repozitári, ako pridávanie commitov a zanechávanie komentárov k issue, sú overované vlastníkom digitálnym podpisom, ktorý umožňuje overiť správnosť údajov na iných uzloch bez použitia centralizovaných certifikačných autorít. Na získanie prístupu k repozitáru stačí, aby bol online aspoň jeden uzol, na ktorom je jeho replikovaná kópia.
Uzly v P2P sieti sa môžu prihlasovať k určitým repozitárom a získavať aktualizácie. Je možné vytvárať súkromné repozitáre, prístupné len určitým uzlom. Na správu a vlastníctvo repozitára sa používa koncept „delegátov“ (delegates). Delegátom môže byť jednotlivý používateľ, ale aj bot alebo skupina, viazaná na špeciálny identifikátor. Delegáti môžu prijímať do repozitára patche, zatvárať issue a nastavovať práva prístupu k repozitáru. K každému repozitáru môže byť priradených niekoľko delegátov.
Radicle repozitáre sú uložené na systémoch používateľov ako obyčajné git repozitáre, v ktorých existujú dodatočné menné priestory na uchovávanie údajov peerov a forkov, s ktorými sa vykonáva aktuálna práca. Diskusie, navrhované patche a komponenty na organizovanie recenzovania sú tiež uchovávané v git repozitári vo forme spoločných objektov (COB — Collaborative Objects) a replikuje sa medzi peerami.
V novom vydaní:
- Vylepšená podpora bare repozitárov, ktoré neobsahujú pracovný adresár s kópiou súborov projektu, ale uchovávajú iba históriu zmien a metadáta, ako sú vetvy a tagy. Do príkazu 'rad clone' bola pridaná možnosť '--bare', ktorá umožňuje klonovať repozitár do pohľadu bez pracovného stromu. V utilite 'git-remote-rad' sa zlepšila práca s bare repozitármi pri používaní príkazov 'git push' a 'git fetch' pri prístupe k externému rad serveru.
- Pridané nastavenie 'patch.branch', ktoré je možné použiť v utilite git-remote-rad ('git-remote-rad -o patch.branch[=<name>]') pri pridávaní patchu na automatické vytvorenie vetvy v upstream repozitári, bez nutnosti použitia príkazu 'rad patch checkout'.
- Vylepšený výstup príkazu 'rad patch show', ktorý teraz ukazuje pôvodnú verziu patchu, výstupnú predtým iba pri zadaní príznaku '--verbose'. Všetky revízie sú teraz zobrazené v jednej chronológii bez rozdelenia na zmeny od pôvodného autora a ostatných účastníkov.
- Pridaná možnosť výstupu logov v štruktúrovanom zobrazení, zapínanom cez možnosti '--log-logger structured' a '--log-format json'.
Zdroj: opennet.ru
