Jump to content

Radicle

From ArchWiki
"Radicle is an open source, peer-to-peer code collaboration stack built on Git. Unlike centralized code hosting platforms, there is no single entity controlling the network. Repositories are replicated across peers in a decentralized manner, and users are in full control of their data and workflow." - from radicle.xyz.

See upstream documentation for any missing parts.

Radicle, though great, has some notable missing features compared to Forgejo:

  • The web frontend is purely read-only, interaction is done only via the CLI or the desktop application.
  • No "releases". Unless you count git tags.
  • No built-in "project management", e.g kanban. See #Planning board/kanban.
  • Relatively simple issue management with assigning, commenting, reacting & tagging.
    • No "milestones", "due date" or "dependencies".
  • No bundled package registries, you will have to use a separate programs.

If you're alright without those features, or find the minimalism itself a feature, then continue on.

Installation

Install the radicle-binAUR package which includes radicle-cli-binAUR and radicle-node-binAUR.

Configuration

First we need to generate our Radicle DID (Decentralized Identifier):

$ rad auth 

We can also query it with:

$ rad self

To be able to have any peer to peer communications, we need to have our node up and running:

$ rad node start

We can query the node's status with:

$ rad node status

Usage

Radicle manages issues and content distribution, but the core is still git, so make sure you're familiar with it.

In an already initialized git repository, create a globally unique Repository ID (RID).

$ rad init

This creates a new remote "rad".

$ git remote show rad

We can now locally or remotely clone the repository with the shown "Fetch URL". We can also emit the "//" from the command.

$ rad clone rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5

The example RID is for heartwood, the backbone for radicle.

We can also just seed the repository without checking it out.

$ rad seed rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5

And to stop seeding:

$ rad unseed rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5

The seeded repositories storage directory is mentioned in rad self as "Home" => "Storage". We can list all, including seeded, repositories with:

$ rad ls --all

Managing Issues

Radicle bundles issues with the repository.

$ rad issue

Seed node Setup

Node uptime isn't guaranteed for regular users, so having a dedicated server to seed your repository is a good idea.

Also see upstream guide.

Instead of running rad seed for every new repository you might create. It's simpler to "follow" your node to automatically seed every published repository.

$ rad follow 

Frontend Web Server Setup

Since radicle is decentralized, there is no real need for a server, but for users not using radicle, it can be used to introduce them and to clone with regular git.

Note that the frontend is purely read-only. You can not "log in" nor create issues with it.

Frontend maintained by the core team: https://app.radicle.xyz/

Install the radicle-httpd-binAUR

Tips and tricks

CI/CD

See radicle-ci-broker.

Migrating from github/gitlab

See radicle-migration-tool.

Planning board/kanban

See radicle-planning-boards.