Представлен выпуск P2P-платформы Radicle 1.0, нацеленной на создание децентрализованного сервиса совместной разработки и хранения кода, похожего на GitHub и GitLab, но не привязанного к конкретным серверам, не подверженного цензуре и работающего с использованием ресурсов участников P2P-сети. Релиз 1.0 ознаменовал стабилизацию протокола и готовность платформы к повсеместному использованию. Начиная с данного выпуска протокол будет изменяться с сохранением обратной совместимости, а инструментарий будут включать возможности для бесшовного обновления существующих систем до новой версии. Наработки проекта написаны на языке Rust и распространяются под лицензиями Apache 2.0 и MIT. Сборки подготовлены для Linux и macOS. Дополнительно развиваются десктоп-клиент, web-интерфейс и консольный интерфейс.
Radicle позволяет не зависеть при разработке и распространении кода от централизованных платформ и корпораций, привязка к которым вносит дополнительные риски (единая точка отказа, компания может закрыться или изменить условия работы). Для управления кодом в Radicle используется привычный Git, расширенный средствами определения репозиториев в P2P-сети. Все данные в первую очередь сохраняются локально (концепция local-first) и всегда доступны на компьютере разработчика, независимо от состояния сетевого подключения.
Участники предоставляют доступ к своему коду и связанным с кодом артефактам, таким как патчи и обсуждения исправления ошибок (issues), которые сохраняются локально и реплицируются на узлы других заинтересованных разработчиков, подключённые к общей децентрализованной P2P-сети. В итоге формируется глобальный децентрализованный Git-репозиторий, данные которого реплицированы и продублированы на разных системах участников.
Для определения соседних узлов в P2P-сети применяется протокол Gossip, а для репликации данных между узлами протокол Heartwood, основанный на Git. Так как протокол основан на Git, платформу легко интегрировать с существующими инструментами для разработки на Git. Для идентификации узлов и верификации репозиториев используется криптография на основе открытых ключей, без применения учётных записей.
Каждый репозиторий в P2P-сети имеет свой уникальный идентификатор и самосертифицирован (self-certifying), т.е. все действия в репозитории, такие как добавление коммитов и оставление комментариев к issue, заверяются владельцем цифровой подписью, позволяющей убедиться в корректности данных на других узлах без использования централизованных удостоверяющих центров. Для получения доступа к репозиторию достаточно, чтобы в online находился хотя бы один узел, на котором имеется его реплицированная копия.
Узлы в P2P-сети могут подписываться на определённые репозитории и получать обновления. Возможно создание приватных репозиториев, доступных только определённым узлам. Для управления и владения репозиторием используется концепция “делегатов” (delegates). Делегатом может быть как отдельный пользователь так и бот или группа, привязанные к специальному идентификатору. Делегаты могут принимать в репозиторий патчи, закрывать issue и задавать права доступа к репозиторию. К каждому репозиторию может быть привязано несколько делегатов.
На системах пользователей Radicle-репозитории хранятся в виде обычных git-репозиториев, в которых присутствуют дополнительные пространства имён для хранения данных пиров и форков, с которыми осуществляется текущая работа. Обсуждения, предлагаемые патчи и компоненты для организации рецензирования тоже сохраняются в git-репозитории в виде совместных объектов (COB – Collaborative Objects) и реплицируются между пирами.
Radicle 1.0 включает в себя:
- Реализацию расширяемого протокола для организации работы P2P-сети
и синхронизации данных. - Элементы социального взаимодействия, такие как issue, патчи и рецензии на код.
- Протокол аутентификации и авторизации на основе открытых ключей, работающий без централизованных удостоверяющих серверов.
- CLI-интерфейс, привычный пользователям, знакомым с Git.
- Web-интерфейс для навигации по репозиториям и узлам.
- Средства для обеспечения конфиденциальности, включающие поддержку приватных репозиториев и возможность работы через анонимную сеть Tor.
- Поддержку повторяемых сборок для проверки, что распространяемые исполняемые файлы Radicle собраны из заявленных исходных текстов.
Ещё не готовые возможности, пока находящиеся в разработке:
- Встроенные инструменты для непрерывной интеграции (CI) и непрерывной доставки (CD).
- Консольный интерфейс Radicle TUI (Terminal User Interface).
- Расширенные возможности рецензирования изменений.
- Система получения уведомлений об изменениях в репозитории.
- Поддержка профилей пользователей и возможность привязки нескольких устройств.
- Поддержка тегов.
- Утилиты для модерирования и управления узлами.
- Десктоп-приложение.