
18 марта 2026 года состоялся выпуск P2P-платформы Radicle 1.7. Это решение для создания децентрализованного сервиса совместной разработки и хранения кода, похожего на GitHub и GitLab, но не привязанного к конкретным серверам, не подверженного цензуре и работающего с использованием ресурсов участников P2P-сети. Релиз Radicle 1.0 состоялся в сентябре 2024 года.
Платформа Radicle поддерживает типовые элементы социального взаимодействия разработчиков, такие как issue, патчи и рецензии на код. Компоненты проекта Radicle написаны на языке Rust и опубликованы на GitHub под лицензиями Apache 2.0 и MIT.
Сборки Radicle подготовлены для Linux и macOS. Дополнительно развиваются десктоп-клиент, веб-интерфейс и консольный интерфейс.
По информации OpenNET, для определения соседних узлов в P2P‑сети Radicle применяется протокол Gossip, а для репликации данных между узлами — протокол Heartwood, основанный на Git. Так как протокол основан на Git, платформу легко интегрировать с существующими инструментами для разработки на Git. Для идентификации узлов и верификации репозиториев используется криптография на основе открытых ключей, без применения учётных записей. Аутентификация и авторизация осуществляется на основе открытых ключей без централизованных удостоверяющих серверов.
Каждый репозиторий в P2P‑сети имеет свой уникальный идентификатор и самосертифицирован (self‑certifying), то есть все действия в репозитории, такие как добавление коммитов и оставление комментариев к issue, заверяются владельцем цифровой подписью, позволяющей убедиться в корректности данных на других узлах без использования централизованных удостоверяющих центров. Для получения доступа к репозиторию достаточно, чтобы в online находился хотя бы один узел, на котором имеется его реплицированная копия.
Узлы в P2P‑сети могут подписываться на определённые репозитории и получать обновления. Возможно создание приватных репозиториев, доступных только определённым узлам. Для управления и владения репозиторием используется концепция «делегатов» (delegates). Делегатом может быть как отдельный пользователь так и бот или группа, привязанные к специальному идентификатору. Делегаты могут принимать в репозиторий патчи, закрывать issue и задавать права доступа к репозиторию. К каждому репозиторию может быть привязано несколько делегатов.
Radicle‑репозитории хранятся на системах пользователей в виде обычных git‑репозиториев, в которых присутствуют дополнительные пространства имён для хранения данных пиров и форков, с которыми осуществляется текущая работа. Обсуждения, предлагаемые патчи и компоненты для организации рецензирования тоже сохраняются в git‑репозитории в виде совместных объектов (COB — Collaborative Objects) и реплицируются между пирами.
Основные изменения и доработки в Radicle 1.7:
переработана реализация подписанных ссылок (sigrefs — Signed References), в которой появилась защита от повторного использования подписей. Старая структура репозитория позволяла подменить код на его старую версию, повторно использовав старую корректную подпись. Для блокирования проблемы в новой реализации добавлен указатель на предыдущую запись, охватываемый текущей подписью, что формирует непрерывную цепочку изменений, целостность которой можно отследить относительно корня;
расширены возможности блокировки узлов, которые теперь блокируются на уровне управления соединениями. Если раньше блокировался только приём данных, не не ограничивалось подключение узла, то теперь блокировка применяется на этапе установки соединения с заблокированным узлом и при приёме соединения от заблокированного узла;
разрешено использовать любые ссылки на внешние объекты Git, кроме временных веток. Раньше разрешались только ссылки на внешние ветки, теги, метаданные Radicle, заметки и объекты для совместной работы;
повышена информативность сообщений об ошибках, возникающих при попытке выполнения операций, для которых у пользователя недостаточно прав;
повышена эффективность ввода/вывода. Разработчики обнаружили, что на долго запущенных узлах сочетание настроек «journal_mode = WAL» и «synchronous = FULL» в БД SQLite, применяемой для хранения локального состояния, приводит к большому объёму операций ввода/вывода. Для снижения нагрузки по умолчанию параметр «synchronous» теперь выставлен в значение «NORMAL», а в файл конфигурации Radicle добавлены настройки для изменения значения данных параметров пользователем;
устранена уязвимость, информация о которой будет раскрыта 23 марта. В настоящее время сообщается лишь то, что команда разработчиков выполнила сканирование всех публично доступных репозиториев Radicle и не выявила следов эксплуатации данной проблемы.
