Публикувана версия 1.7 на P2P платформата Radicle, насочена към създаването на децентрализирана услуга за съвместна разработка и съхранение на код, подобна на GitHub и GitLab, но независима от конкретни сървъри, устойчива на цензура и функционираща с ресурсите на участниците в P2P мрежата. Платформата поддържа стандартни елементи за социално взаимодействие между разработчиците, като проблеми, пачове и кодови ревюта. Наработките на проекта са написани на езика 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) и се репликират между пирове.
В новото издание:
- Преработена е реализацията на подписаните препратки (sigrefs — Signed References), в която е добавена защита от повторно използване на подписи. Стариет структури на репозитория позволяваха подмяна на кода с предишна версия, повторно използвайки старата валидна подпис. За да блокира проблема, в новата реализация е добавен указател към предишния запис, обхванат от текущата подпис, което формира непрекъсната верига от промени, чиято цялост може да се проследи относно корена.
- Разширени са възможностите за блокиране на възлови точки, които сега се блокират на ниво управление на връзките. Ако по-рано се блокираше само приемането на данни, без да се ограничава свързването на възела, сега блокировката се прилага на етапа на установяване на връзка с блокирания възел и при приемане на връзка от блокиран възел.
- Разрешено е използването на всякакви препратки към външни обекти Git, освен времеви клони. Преди това се разрешаваха само препратки към външни клонове, тагове, метаданни на Radicle, бележки и обекти за съвместна работа.
- Повишена е информативността на съобщенията за грешки, възникващи при опити за изпълнение на операции, за които потребителят няма достатъчно права.
- Повишена ефективност на входа/изхода. Разработчиците откриха, че на дълго работещи възли комбинацията от настройки „journal_mode = WAL“ и „synchronous = FULL“ в SQLite базата данни, използвана за съхраняване на локалното състояние, води до голям обем операции вход/изход. За да се намали натоварването, параметърът „synchronous“ сега е настроен по подразбиране на стойност „NORMAL“, а в конфигурационния файл на Radicle са добавени настройки за промяна на стойностите на тези параметри от потребителя.
- Устранена уязвимост, информация за която ще бъде разкрита на 23 март. В момента се съобщава само, че екипът от разработчици е извършил сканиране на всички публично достъпни репозиторий на Radicle и не е открил следи от експлоатация на този проблем.
Източник: opennet.ru
