#^Первый публичный выпуск децентрализованной платформы совместной разработки RadicleПредставлен первый бета выпуск P2P-платформы Radicle и связанного с ней десктоп-клиента Radicle Upstream. Проект нацелен на создание децентрализованного сервиса совместной разработки и хранения кода, похожего на GitHub и GitLab, но не привязанного к конкретным серверам, не подверженного цензуре и работающего с использование ресурсов участников P2P-сети. Код прокси для работы узла написан на языке Rust, в графический клиент на TypeScript, Svelte и Electron. Наработки проекта распространяются под лицензией GPLv3. Сборки подготовлены для Linux (AppImage) и macOS.
Radicle позволяет не зависеть при разработке и распространении открытого кода от централизованных платформ и корпораций, привязка к которым вносит дополнительные риски (единая точка отказа, компания может закрыться или изменить условия работы). Для управления кодом в Radicle используется привычный Git, расширенный средствами определения репозиториев в P2P-сети. Все данные в первую очередь сохраняются локально и всегда доступны на компьютера разработчика, независимо от состоянии сетевого подключения. Для защиты информации используется криптография на основе открытых ключей, без применения учётных записей. Список репозиториев участников P2P-сети можно посмотреть на seed-узле проекта.
В основе P2P-сети лежит протокол Radicle Link, основанный на Git и обеспечивающий репликацию данных между участниками. Участники предоставляют доступ к своему коду и коду интересующих их проектов, избыточные копии которых сохраняются локально и реплицируются на системы других заинтересованных разработчиков. В итоге формируется глобальный децентрализованный Git-репозиторий, данные которого реплицированы и продублированы на разных системах участников.
Протокол поддерживает два типа объектов идентификации - участник и проект. Участник связывается с персоной, запустившей узел в P2P-сети (peer), а проект описывает репозиторий, над которым может работать несколько участников. В сети выстраивается социальный граф связи участников и проектов - участники отслеживают интересующие их проекты и других участников. Объекты отслеживаемых участников становятся доступны другим участникам, которые следят за текущим участником.
Разработка ведётся в стиле "базара" - вместо поддержания канонического эталонного представления (master) в Radicle присутствует несколько параллельных веток (upstream) со своими сопровождающими и участниками, которые обмениваются между собой патчами. Вместо привязки к внешнему эталонному репозиторию, в Radicle работа отталкивается от монорепозитория на локальной машине каждого разработчика, в который можно извлекать изменения из репозиториев отслеживаемых участников и передавать свои изменения в репозитории отслеживающих участников.
Концептуально, проект становится совокупностью представлений кода на системах всех участников разработки. На практике организуется иерархия доставки изменений на основе цепочки доверия - для получения изменений в свою локальную копию репозитория разработчик добавляет других разработчиков в качестве источников (remotes), что автоматически формирует подписку на появляющиеся в их репозиториях новые коммиты. Все изменения в P2P-сети заверяются цифровой подписью и могут быть верифицированы другими участниками.
Наиболее простым способом подключения к сети является установка десктоп-приложения Radicle Upstream, которое позволяет создать ключи для идентификации нового участника, разместить свой код и наладить взаимодействие с другими разработчиками. В настоящее время реализация ограничена совместной работой над кодом и системой отслеживания ошибок (issues), но в будущем планируют расширить средства для организации обсуждений и рецензирования изменений, а также реализовать поддержку приватных репозиториев с доступом на основе сквозного шифрования.
#
p2p #
git #
electron #
development #
decentralize