Radicle

Installation

# Via binaires pré-compilés (recommandé)
curl -sSf https://radicle.xyz/install | sh

# Via Cargo (Rust)
cargo install radicle-node radicle-cli

# Vérifier
rad --version
rad --help

Prérequis : Git installé, connexion réseau pour sync.

Identité

# Créer une identité (clé Ed25519, une seule fois)
rad auth
# Tu choisis un alias et une passphrase

# Afficher ton identité
rad self
# Montre : DID (did:key:z6Mk...), alias, node ID

# L'identité est stockée localement
# Pas de serveur central, pas de compte à créer

DID = Decentralized Identifier. C'est ta clé publique, ton identité sur le réseau.

Projet

# Initialiser un projet Radicle (dans un dépôt git existant)
cd mon-projet
git init && git add . && git commit -m "init"
rad init
# Choisir : nom, description, branche par défaut, visibilité

# Inspecter le projet
rad inspect              # RID, nom, description, delegates
rad id                   # ton identité dans ce projet

# Structure créée
# .git/refs/namespaces/   - refs Radicle
# Aucun fichier ajouté dans le working tree

Réseau - Push / Sync

# Publier les changements sur le réseau
rad push                 # push vers les seed nodes connectés

# Synchroniser (envoie et récupère les mises à jour)
rad sync                 # synchroniser avec les pairs

# Cloner un projet distant
rad clone rad:z3gqcJ...  # cloner via RID (Radicle ID)

Patches (équivalent des Pull Requests)

# Créer un patch (depuis une branche)
git switch -c ma-feature
# ... faire des modifs, commiter ...
rad patch create         # crée un patch à partir de la branche

# Lister les patches
rad patch list           # tous les patches
rad patch list --state open  # seulement les ouverts

# Consulter un patch
rad patch show PATCH_ID

# Commenter / reviewer
rad patch comment PATCH_ID --message "LGTM !"
rad patch review PATCH_ID --accept
rad patch review PATCH_ID --reject

# Fusionner un patch
rad patch merge PATCH_ID

# Fermer sans fusionner
rad patch close PATCH_ID

Issues (tickets décentralisés)

# Créer une issue
rad issue create
# Ouvre un éditeur pour titre + description

# Lister
rad issue list
rad issue list --state open

# Consulter
rad issue show ISSUE_ID

# Commenter
rad issue comment ISSUE_ID "Bonne idée !"

# Fermer
rad issue close ISSUE_ID

Node - Gestion du nœud

# Démarrer le noeud local
rad node start           # démarre en arrière-plan
rad node status          # état du noeud
rad node stop            # arrêter

# Logs et debug
rad node logs            # voir les logs en temps réel
rad node config          # afficher la configuration

# Le noeud écoute sur le port 8776 (TCP)
# Nécessaire pour sync P2P

Tracking - Suivre des projets

# Suivre un projet (le répliquer localement)
rad track rad:z3gqcJ...       # par RID
rad untrack rad:z3gqcJ...     # arrêter de répliquer

# Inspecter le projet courant (RID, delegates, etc.)
rad inspect

Comparaison GitHub vs Radicle

ConceptGitHubRadicle
DépôtRepositoryProject (RID)
IdentitéCompte GitHubDID (clé crypto)
ContributionPull RequestPatch
TicketsIssueIssue
CopieForkClone (fork implicite)
FavoriStarTrack
CI/CDGitHub Actionsradicle-ci
Hébergementgithub.comSeed nodes P2P
ModèleCentraliséDécentralisé (P2P)
DisponibilitéDépend de GitHubRéseau distribué
CensurePossible (DMCA, etc.)Résistant

Seed Node - Hébergement

# Un seed node est un noeud Radicle permanent
# Il réplique les projets et les rend accessibles

# Prérequis serveur
# - Linux, port 8776 ouvert (TCP)
# - radicle-node installé

# Configuration
rad node config
# Fichier : ~/.radicle/config.json
# Policies : block (liste noire) ou allow (liste blanche)

# Systemd (démarrage automatique)
# /etc/systemd/system/radicle-node.service
# [Service]
# ExecStart=/usr/local/bin/radicle-node
# User=radicle
# Restart=always

sudo systemctl enable radicle-node
sudo systemctl start radicle-node

# Firewall
sudo ufw allow 8776/tcp     # Ubuntu
sudo firewall-cmd --add-port=8776/tcp --permanent  # Fedora