Recientemente the release of the first beta version of the Radicle P2P platform was announced and its desktop client Radicle Upstream.
The project aims to create a decentralized service for collaborative development and code storage, similar to GitHub and GitLab, but not tied to specific servers, as well as not being subject to censorship and working with the resources of the P2P network participants.
Radicle allows not to depend on platforms and centralized corporations for open source development and distribution, to which linking introduces additional risks (single point of failure, a company can close or change working conditions).
To manage code in Radicle the well-known Git is used, expanded by defining repositories on a P2P network. Everyone data is mainly stored locally and they are always available on the developer's computer, regardless of the state of the network connection. To protect the information, cryptography based on public keys is used, without the use of accounts. The list of participant repositories of the P2P network can be seen in the project's seed node.
At the heart of the P2P network is the Git-based Radicle Link protocol that replicates data between participants. Participants provide access to their code and to the code of the projects they are interested in, redundant copies of which are stored locally and replicated on the systems of other interested developers. As a result, a global decentralized Git repository is formed, the data of which is replicated and duplicated across different participant systems.
The protocol supports two types of identification objects: participant and project. The participant contacts the person who launched the node on the P2P network (par) and the project describes a repository in which multiple participants can work.
The network creates a social graphic of communication between the participants and the projects: Participants keep track of projects that interest them and other participants. Items from the tracked participants are made available to other participants who are following the current participant.
Development is carried out "bazaar" style rather than maintaining the canonical master view in Radicle, there are several parallel branches with their maintainers and contributors exchanging patches with each other.
Instead of linking to a repository external reference, Radicle is based on a unique repository on the local machine of each developerr, where you can pull changes from the tracked contributors 'repositories and submit your changes to the tracking contributors' repositories.
Conceptually, a project becomes a collection of code views in the systems of all participants in the development. In practice, a change delivery hierarchy is organized based on a chain of trust: to receive changes in their local copy of the repository, the developer adds other developers as (remote) sources, which automatically forms a subscription to the new commits that appear in their repositories. All changes in the P2P network are digitally signed and can be verified by other participants.
The easiest way to connect to the network is to install the desktop application Radicle Upstream, which allows you to create keys to identify a new member, host your code, and communicate with other developers.
Currently, implementation is limited to joint work on code and bug tracking system, but in the future they plan to expand the tools to organize discussions and review changes, as well as implement support for private repositories with access based on end-to-end encryption.
Finally, if you are interested in knowing more about it, you can check the following link
The proxy code for the node operation is written in Rust, in the graphical client in TypeScript, Svelte and Electron. The developments of the project They are distributed under the GPLv3 license.
The packages are ready for Linux (AppImage) and macOS.