The release of the Radicle P2P platform 1.6 has been published, aimed at creating a decentralized service for collaborative code development and storage, similar to GitHub and GitLab, but not tied to specific servers, resistant to censorship, and utilizing the resources of participants in the P2P network. The platform supports standard elements of developer social interaction, such as issues, patches, and code reviews. The project's code is written in Rust and is distributed under the Apache 2.0 and MIT licenses. Builds are prepared for Linux and macOS. Additionally, a desktop client, web interface, and console interface are under development.
Radicle allows developers to work on and distribute code independently from centralized platforms and corporations, which can introduce additional risks such as a single point of failure, and the company might shut down or change its terms of service. Code management in Radicle uses the familiar Git, enhanced with tools for identifying repositories in a P2P network. All data is primarily stored locally (a local-first concept) and is always accessible on the developer’s computer, regardless of the status of the network connection.
Participants grant access to their code and related artifacts, such as patches and discussions about bug fixes (issues), which are stored locally and replicated on the nodes of other interested developers connected to the shared decentralized P2P network. As a result, a global decentralized Git repository is formed, with data replicated and duplicated across various participants' systems.
To identify neighboring nodes in the P2P network, the Gossip protocol is used, while data replication between nodes is managed by the Heartwood protocol, based on Git. Since the protocol is based on Git, the platform can be easily integrated with existing Git development tools. For node identification and repository verification, cryptography based on public keys is utilized, without the use of accounts. Authentication and authorization are carried out based on public keys without centralized authorities. servers.
Each repository in the P2P network has its own unique identifier and is self-certifying, meaning all actions in the repository, such as adding commits and leaving comments on issues, are validated by the owner with a digital signature, allowing verification of data integrity on other nodes without the use of centralized certificate authorities. To access the repository, it is sufficient for at least one node containing its replicated copy to be online.
Nodes in the P2P network can subscribe to specific repositories and receive updates. It is possible to create private repositories accessible only to certain nodes. The concept of 'delegates' is used for managing and owning a repository. A delegate can be an individual user, a bot, or a group tied to a specific identifier. Delegates can accept patches into the repository, close issues, and set access permissions for the repository. Multiple delegates can be associated with each repository.
Radicle repositories are stored on users' systems as regular git repositories, which include additional namespaces for storing peer and fork data that are currently being worked on. Discussions, proposed patches, and components for organizing reviews are also stored within the git repository as collaborative objects (COB) and are replicated among peers.
In the new release:
- The Radicle node implementation (radicle-node) has been transitioned to use the Mio input/output library. The dependencies netservices, io-reactor, and popol have been removed, which were hindering the achievement of an adequate level of cross-platform compatibility. A new reactor module has been added, in which io-reactor has been rewritten based on Mio.
- The transition to Mio has enabled support for the Windows platform, which is currently experimental.
- The code for parsing command-line arguments has been migrated to the clap library, which has unified the behavior when parsing arguments and brought features to the rad utility such as automatic command hint generation, error correction recommendations, output highlighting, and command autocompletion.
- Support for the systemd Credentials mechanism has been added to radicle-node for secure transfer of access keys (xyz.radicle.node.secret) and passwords for their decryption (xyz.radicle.node.passphrase), in addition to using the environment variable RAD_PASSPHRASE, the command-line option '--secret', and parameters in the configuration file.
- The requirements for the minimum supported version of the Rust compiler have been raised to 1.85.
Source: opennet.ru
