Представен е новият 1.5 версия на P2P платформата Radicle, която цели създаването на децентрализирана услуга за съвместна разработка и съхранение на код, подобна на GitHub и GitLab, но не свързана с конкретни сървъри, не подлежаща на цензуриране и работеща с ресурсите на участниците в P2P мрежата. Платформата поддържа типични елементи на социално взаимодействие между разработчиците, като issue, патчи и рецензии на код. Разработките на проекта са написани на езика Rust и се разпространяват под лицензиите Apache 2.0 и MIT. Сборките са подготвени за Linux и macOS. Допълнително се развиват десктоп клиент, уеб интерфейс и конзолен интерфейс.
Radicle позволява да не се зависим от централизирани платформи и корпорации при разработката и разпространението на код, привързаността към които внася допълнителни рискове (една точка на отказ, компанията може да затвори или да промени условията на работа). За управление на кода в Radicle се използва познатият Git, разширен с инструменти за определяне на репозитории в P2P мрежата. Всички данни преди всичко се запазват локално (концепция local-first) и винаги са достъпни на компютъра на разработчика, независимо от състоянието на интернет връзката.
Участниците предоставят достъп до своя код и свързаните с него артефакти, като пачове и обсъждания на проблемите (issues), които се запазват локално и се репликират на възли на други заинтересовани разработчици, свързани с общата децентрализирана P2P мрежа. В резултат се формира глобален децентрализиран Git репозиториум, чиито данни са репликирани и дублирани на различни системи на участниците.
За определяне на съседни възли в P2P мрежата се използва протокол Gossip, а за репликация на данни между възлите - протокол Heartwood, основан на Git. Тъй като протоколът е базиран на Git, платформата лесно може да се интегрира с вече съществуващите инструменти за разработка на Git. За идентификация на възлите и верификация на репозиториите се използва криптография с публични ключове, без използването на акаунти. Аутентизацията и авторизацията се осъществяват на базата на публични ключове без централизирани удостоверяващи органи. сървъри.
Всяка репозиторий в P2P мрежата има уникален идентификатор и е самоутвърдителен (self-certifying), т.е. всички действия в репозитория, като добавяне на комити и оставяне на коментари по проблеми, се удостоверяват от собственика с цифров подпис, който позволява да се уверим в коректността на данните на другите възли без да се използват централизирани удостоверяващи центрове. За достъп до репозитория е достатъчно да е активен поне един възел, на който има негова реплицирана копия.
Възлите в P2P мрежата могат да се абонират за определени репозитории и да получават актуализации. Възможно е създаването на частни репозитории, достъпни само за определени възли. За управление и собственост на репозитория се използва концепцията за „делегати“ (delegates). Делегат може да бъде както отделен потребител, така и бот или група, привязани към специален идентификатор. Делегатите могат да приемат патчи в репозитория, да затварят проблеми и да задават права за достъп до репозитория. Към всеки репозитория могат да бъдат привързани няколко делегати.
Radicle репозиторите се съхраняват на системите на потребителите под формата на обикновени git репозитории, в които присъстват допълнителни имена на пространства за съхранение на данни от пирове и форкове, с които се осъществява текущата работа. Обсъжданията, предлаганите патчи и компоненти за организация на рецензиране също се запазват в git репозитория под формата на съвместни обекти (COB — Collaborative Objects) и се реплицират между пирите.
В новото издание:
- Подобрена е поддръжката на bare репозитории, които не съдържат работна папка с копия на файловете на проекта, а съхраняват само историята за промените и метаданни, като клонове и тагове. В командата „rad clone“ е добавена опция „—bare“, която позволява клонирането на хранилището в представление без работно дърво. В утилитата „git-remote-rad“ е подобрена работата с bare хранилища при използване на командите „git push“ и „git fetch“ при обращение към външен rad сървър.
- Добавена е настройка „patch.branch“, която може да се използва в утилитата git-remote-rad („git-remote-rad -o patch.branch[=<name>]“) при добавяне на патч за автоматично създаване на клон в upstream хранилището, без необходимост от използването на командата „rad patch checkout“.
- Подобрено е изходното представяне на командата „rad patch show“, която сега показва оригиналната версия на патча, която преди това се показваше само при задаване на флага „—verbose“. Всички ревизии сега се показват в единна хронология без разделяне на промените от оригиналния автор и другите участници.
- Добавена е възможността за извеждане на логовете в структурирано представяне, което може да се активира чрез опции „—log-logger structured“ и „—log-format json“.
Източник: opennet.ru
