Публикуван е новият 1.6 епизод на P2P платформата Radicle, която има за цел да създаде децентрализирана услуга за съвместна разработка и съхранение на код, подобна на GitHub и GitLab, но независима от конкретни сървъри, устойчива на цензура и функционираща с ресурсите на участниците в P2P мрежата. Платформата поддържа основни елементи на социално взаимодействие между разработчиците, като issues, пачове и рецензии на код. Разработките на проекта са написани на Rust и се разпространяват под лицензите Apache 2.0 и MIT. Сборките са подготвени за Linux и macOS. Допълнително се разработват десктоп клиент, уеб интерфейс и конзолен интерфейс.
Radicle позволява разработването и разпространението на код да не зависят от централизирани платформи и корпорации, което носи допълнителни рискове (едина точка на провал, компанията може да затвори или да промени условията за работа). За управление на кода в Radicle се използва познатият Git, разширен с инструменти за дефиниране на хранилища в P2P мрежата. Всички данни първо се запазват локално (концепцията local-first) и винаги са достъпни на компютъра на разработчика, независимо от състоянието на интернет връзката.
Участниците предоставят достъп до своя код и свързаните с него артефакти, като пачове и обсъждания на корекции на грешки (issues), които се съхраняват локално и се репликират на възли на други заинтересовани разработчици, свързани с общата децентрализирана P2P мрежа. В резултат на което се формира глобален децентрализиран Git хранилище, чиито данни са репликирани и дублирани на различни системи на участниците.
За определяне на съседни възли в P2P мрежата се използва протоколът Gossip, а за репликация на данни между възлите протоколът Heartwood, основан на Git. Тъй като протоколът се основава на Git, платформата лесно може да се интегрира с вече съществуващите инструменти за разработка на Git. За идентификация на възлите и удостоверяване на хранилищата се използва криптография на основа на публични ключове, без употреба на акаунти. Аутентификацията и авторизацията се извършват на база на публични ключове без централизирани удостоверяващи органи. сървъри.
Всяка репозитория в P2P мрежата има свой уникален идентификатор и е самосертифицирана, т.е. всички действия в репозитория, като добавяне на комити и оставяне на коментари по проблеми, се удостоверяват от собственика с цифров подпис, позволяващ да се уверим в коректността на данните на другите възли без използване на централизираните удостоверяващи центрове. За да получите достъп до репозитория, е достатъчно поне един възел да е онлайн, на който да има репликирана копия.
Възлите в P2P мрежата могат да се подписват за определени репозитории и да получават актуализации. Възможно е създаването на частни репозитории, достъпни само за определени възли. За управление и владеене на репозитория се използва концепцията „делегати“. Делегат може да бъде както отделен потребител, така и бот или група, свързани с специален идентификатор. Делегатите могат да приемат пачове в репозитория, да затварят проблеми и да задават права за достъп до репозитория. Към всеки репозитор може да бъдат привързани няколко делегати.
Radicle репозиториите се съхраняват на системите на потребителите под формата на обикновени git репозитории, в които присъстват допълнителни пространства от имена за съхранение на данни за пирове и форкове, с които се извършва текущата работа. Дискусиите, предложените пачове и компонентите за организиране на рецензии също се съхраняват в git репозиторията под формата на съвместни обекти (COB — Collaborative Objects) и се репликират между пирове.
В новото издание:
- Реализациите на възела Radicle (radicle-node) преминаха на използване на библиотеката за вход/изход Mio. Изключени са пакетите netservices, io-reactor и popol, които пречеха за постигане на необходимото ниво на многоплатформеност. Добавен е нов модул reactor, в рамките на който io-reactor е преписан на базата на Mio.
- Преходът към Mio позволи реализирането на поддръжка за платформата Windows, която все още има статус експериментален.
- Кодът за парсване на аргументите от командния ред е преминал на библиотеката clap, което унифицира поведението при парсването на аргументи и внесе в утилитата rad възможности като автоматична генерация на подсказки за команди, изход на препоръки за отстраняване на грешки, подсветка на изхода и автозавършване на команди.
- В radicle-node е добавена поддръжка на механизма systemd Credentials за сигурно предаване на достъпни ключове (xyz.radicle.node.secret) и пароли за тяхното декриптиране (xyz.radicle.node.passphrase) в допълнение към използването на променливата на средата RAD_PASSPHRASE, опцията на командния ред «—secret» и параметрите в конфигурационния файл.
- Изискванията за минимално поддържана версия на компилатора Rust са повишени до 1.85.
Източник: opennet.ru
