Arc 5 Quête 21

Le Client du Voyageur

Installation de Radicle, identité cryptographique et premiers pas

Le lendemain de ta promenade dans les terres sauvages, le Maître Archiviste te retrouve dans l'atelier. Sur la table, un sac de voyage en cuir usé, frappé d'un symbole que tu ne reconnais pas : une graine entourée de racines qui s'étendent dans toutes les directions.

« Tu as vu les chemins libres. Tu as compris pourquoi ils existent. Maintenant, il est temps de les emprunter toi-même. Dans ce sac, tu trouveras les outils des voyageurs libres - ceux qui partagent leurs chroniques sans passer par aucune guilde. »

Il ouvre le sac et en sort un étrange compas dont l'aiguille ne pointe vers aucun nord fixe. Elle tourne doucement, comme si elle cherchait d'autres compas semblables dans le monde.

« Voici rad - le client Radicle. Ton passeport pour le réseau pair-à-pair. Apprends à t'en servir, et tu n'auras plus jamais besoin de la permission d'une guilde pour partager ton travail. »

Installer Radicle (rad)

Radicle est un outil en ligne de commande appelé rad. C'est ton interface avec le réseau pair-à-pair. Avant toute chose, il faut l'installer sur ta machine.

Sur Linux

La méthode recommandée utilise le script d'installation officiel :

# Méthode 1 : Script d'installation officiel
curl -sSf https://radicle.xyz/install | sh

# Méthode 2 : Via Cargo (si tu as Rust installé)
cargo install radicle-cli

# Vérifie l'installation
rad --version

Le binaire rad est installé dans ~/.radicle/bin/. Assure-toi que ce chemin est dans ton PATH :

# Ajouter au PATH (dans ~/.bashrc ou ~/.zshrc)
export PATH="$HOME/.radicle/bin:$PATH"

Sur macOS

# Via le script officiel
curl -sSf https://radicle.xyz/install | sh

# Ou via Cargo (si tu as Rust installé)
cargo install radicle-cli

# Vérifie l'installation
rad --version

Note : Radicle n'est pas disponible dans Homebrew core. Utilise le script d'installation officiel ou cargo.

Sur Windows

Radicle est principalement conçu pour Linux et macOS. Sur Windows, tu as deux options :

# Via WSL (Windows Subsystem for Linux) - seule méthode supportée
# Dans un terminal WSL Ubuntu :
curl -sSf https://radicle.xyz/install | sh

Important : Radicle ne fonctionne pas nativement sous Windows (Git Bash inclus). Seul WSL est supporté. Assure-toi que Git est configuré dans ton environnement WSL. Les commandes rad fonctionnent dans le même terminal que tes commandes Git.

Ton identité cryptographique

Sur GitHub, tu as un nom d'utilisateur et un mot de passe. Sur Radicle, c'est différent. Ton identité repose sur la cryptographie - une paire de clés qui prouve que tu es bien toi, sans qu'aucun serveur n'ait besoin de le vérifier.

Créer ton identité avec rad auth

# Créer ton identité Radicle
rad auth

# Tu verras quelque chose comme :
# Initializing your radicle 🌱 identity
# Enter a passphrase (or leave blank):
# Your DID is did:key:z6Mki7...
# You're all set!

La commande rad auth génère :

  • Une clé privée (stockée localement dans ~/.radicle/keys/) - c'est ton secret, ne la partage jamais
  • Une clé publique - c'est ton identité visible par les autres
  • Un DID (Decentralized Identifier) - un identifiant unique au format did:key:z6Mk...

Comprendre les clés ed25519

Radicle utilise le même type de clés que SSH : ed25519. C'est un algorithme de signature numérique moderne, rapide et sûr. Chaque action que tu fais sur Radicle (publier, commenter, proposer un patch) est signée cryptographiquement.

Cela signifie que personne ne peut usurper ton identité - même s'il n'existe aucun serveur central pour vérifier qui est qui.

Le DID - ton identité décentralisée

Le DID (Decentralized Identifier) est un standard du W3C. C'est une manière universelle de s'identifier sans dépendre d'un fournisseur. Ton DID Radicle ressemble à :

did:key:z6Mki7kFMjfQXbB2tRzpR5oSrQFkAuGhUTnKGVzE8pTo6VDB

Ce DID est dérivé mathématiquement de ta clé publique. Il est unique au monde et tu en es le seul propriétaire.

Pas de nom d'utilisateur, pas de mot de passe, pas de serveur d'authentification. Ton identité est une clé mathématique que tu possèdes. C'est la souveraineté numérique.

Initialiser un projet Radicle

Radicle ne remplace pas Git - il s'appuie dessus. Tu commences toujours avec un dépôt Git normal, puis tu y ajoutes la couche Radicle.

rad init - transformer un dépôt Git en projet Radicle

# Crée un dépôt Git normal
mkdir mon-projet
cd mon-projet
git init -b main
echo "# Mon Projet" > README.md
git add README.md
git commit -m "Premier commit"

# Initialise Radicle dans ce dépôt
rad init

# Tu verras :
# Initializing radicle 🌱 project in /home/user/mon-projet
# Name: mon-projet
# Description: (optionnel)
# Default branch: main
# Project rad:z2e7R... created.

La commande rad init crée un identifiant de projet unique (le rad:z...). C'est l'équivalent décentralisé d'une URL GitHub. Cet identifiant est permanent et ne changera jamais.

rad inspect - examiner un projet

# Voir les détails du projet
rad inspect

# Affiche :
# Project: mon-projet
# RID: rad:z2e7R...
# Description: ...
# Default branch: main
# Delegates: did:key:z6Mk... (toi)

Le champ Delegates est important : ce sont les personnes autorisées à merger des patches. Quand tu crées un projet, tu en es le seul délégué.

Publier et synchroniser

rad push - publier ton code sur le réseau

# Publie ton dépôt sur le réseau Radicle
rad push

# Le nœud Radicle local annonce ton projet aux pairs
# Les seeds (nœuds toujours en ligne) vont le répliquer

Contrairement à git push qui envoie vers un serveur précis, rad push publie sur le réseau de pairs. Il n'y a pas de destination unique - ton code est disponible pour tous ceux qui sont connectés.

rad sync - synchroniser avec les pairs

# Synchronise avec les pairs connectés (envoie et récupère les mises à jour)
rad sync

rad sync est l'équivalent d'un git fetch décentralisé. Il contacte les pairs connectés et échange les dernières modifications. La récupération (fetch) est incluse par défaut.

Cloner un projet avec rad clone

# Cloner un projet Radicle
rad clone rad:z2e7RaGkMUjH3dMhiKd5dm2E3pCXA

# Le clone :
# 1. Contacte les pairs et seeds qui hébergent ce projet
# 2. Télécharge le dépôt Git
# 3. Configure automatiquement les remotes Radicle

L'identifiant rad:z... remplace l'URL GitHub. Tu peux le partager par n'importe quel canal - email, messagerie, QR code. Tant qu'un nœud connecté possède le projet, tu peux le cloner.

Astuce : Tu peux aussi trouver des projets Radicle via l'interface web app.radicle.xyz ou radicle.zulipchat.com (la communauté).

Les Patches - Pull Requests décentralisées

Sur GitHub, tu crées une Pull Request pour proposer des modifications. Sur Radicle, l'équivalent s'appelle un Patch. Même concept, mais sans serveur central.

Créer un patch

# 1. Crée une branche et fais tes modifications
git switch -c ma-fonctionnalite
echo "Nouvelle fonctionnalité" >> README.md
git add README.md
git commit -m "Ajouter une fonctionnalité"

# 2. Propose un patch
rad patch create

# Tu seras invité à entrer :
# - Un titre pour le patch
# - Une description (optionnelle)
# Le patch est signé avec ta clé et publié sur le réseau

Lister et consulter les patches

# Lister tous les patches du projet
rad patch list

# Affiche :
# ID       TITLE                    AUTHOR            STATUS
# abc123   Ajouter une fonctionnal  did:key:z6Mk...   open

# Voir les détails d'un patch
rad patch show abc123

Commenter un patch

# Ajouter un commentaire à un patch
rad patch comment abc123 --message "Bonne idée, mais peux-tu ajouter des tests ?"

Merger un patch

# Si tu es un delegate du projet, tu peux merger
rad patch merge abc123

# Le patch est fusionné dans la branche par défaut
# L'action est signée et propagée sur le réseau

Fermer un patch sans merger

# Fermer un patch (rejeté ou abandonné)
rad patch close abc123

Les patches Radicle sont stockés dans Git lui-même (via des références spéciales), pas sur un serveur externe. Si GitHub disparaît demain, tes Pull Requests disparaissent avec. Les patches Radicle, eux, vivent dans ton dépôt.

Les Issues décentralisées

Radicle propose aussi un système d'issues intégré - pas besoin d'un tracker externe.

Créer une issue

# Créer une issue
rad issue create --title "Bug : le fichier de config ne se charge pas" \
                 --description "Quand on lance l'application sans config.yaml, elle plante au lieu d'utiliser les valeurs par défaut."

Lister et gérer les issues

# Lister les issues ouvertes
rad issue list

# Commenter une issue
rad issue comment <issue-id> --message "Je reproduis le bug sur Linux."

# Fermer une issue
rad issue close <issue-id>

# Rouvrir une issue (changer son état)
rad issue state <issue-id> open

Note : La réouverture d'une issue se fait via rad issue state <id> open. Tu peux aussi commenter l'issue pour signaler qu'elle doit être rouverte.

Comme les patches, les issues sont stockées dans les données Radicle du dépôt. Elles voyagent avec le code, de pair en pair.

Comparaison - GitHub vs Radicle

Action GitHub Radicle
Créer un compte S'inscrire sur github.com rad auth (clé locale)
Créer un projet New Repository sur le site rad init dans un dépôt Git
Publier git push origin main rad push
Cloner git clone https://github.com/... rad clone rad:z...
Proposer des modifications Pull Request (via le site) rad patch create
Revue de code Commentaires sur la PR rad patch comment
Fusionner Bouton Merge sur le site rad patch merge
Signaler un bug Issue sur le site rad issue create
Synchroniser git pull rad sync
Hors ligne Lecture seule (code local) Tout fonctionne localement

Exercice pratique - Premiers pas avec rad

Dans cet exercice, tu vas créer ton premier projet Radicle et manipuler les commandes de base. Même sans connexion au réseau, tu peux pratiquer localement.

Étape 1 - Créer ton identité

# Crée ton identité Radicle
rad auth

# Note ton DID quelque part - c'est ton identité

Étape 2 - Créer un dépôt Git et l'initialiser avec Radicle

# Crée un nouveau dépôt
mkdir atelier-voyageur
cd atelier-voyageur
git init -b main

# Crée un premier fichier
echo "# Atelier du Voyageur" > README.md
echo "Mon premier projet Radicle." >> README.md
git add README.md
git commit -m "Initialisation du projet"

# Initialise Radicle
rad init

Étape 3 - Inspecter ton projet

# Vérifie les détails du projet
rad inspect

# Note l'identifiant du projet (RID : rad:z...)

Étape 4 - Créer un patch

# Crée une branche de travail
git switch -c amelioration-readme

# Modifie le README
echo "" >> README.md
echo "## Fonctionnalités" >> README.md
echo "- Collaboration pair-à-pair" >> README.md
echo "- Identité cryptographique" >> README.md

git add README.md
git commit -m "Ajouter la section fonctionnalités"

# Propose un patch
rad patch create

Étape 5 - Lister et examiner

# Liste tes patches
rad patch list

# Reviens sur main et merge le patch
git switch main
rad patch merge <id-du-patch>

Étape 6 - Créer une issue

# Crée une issue de test
rad issue create --title "Ajouter un fichier CONTRIBUTING" \
                 --description "Il faudrait expliquer comment contribuer au projet."

# Liste les issues
rad issue list

Note : Si tu n'as pas installé Radicle, tu peux quand même lire et comprendre chaque commande. L'installation est optionnelle pour cette quête d'introduction - l'important est de comprendre le workflow.

Récapitulatif des commandes

Commande Description
rad auth Créer ton identité cryptographique (clé ed25519 + DID)
rad init Initialiser un projet Radicle dans un dépôt Git existant
rad inspect Afficher les détails du projet (RID, delegates, branches)
rad push Publier les modifications sur le réseau pair-à-pair
rad sync Synchroniser avec les pairs connectés
rad clone rad:z... Cloner un projet depuis le réseau
rad patch create Proposer un patch (équivalent d'une Pull Request)
rad patch list Lister les patches du projet
rad patch comment Commenter un patch
rad patch merge Fusionner un patch dans la branche principale
rad patch close Fermer un patch sans le fusionner
rad issue create Créer une issue décentralisée
rad issue list Lister les issues du projet
rad issue comment Commenter une issue
rad issue close Fermer une issue

Tu ranges soigneusement le compas dans le sac de voyage. Tes premières commandes Radicle sont encore fraîches dans ta mémoire, comme les premiers pas d'un voyage qu'on n'oublie jamais.

Le Maître Archiviste hoche la tête avec satisfaction.

« Tu sais maintenant te présenter au réseau, publier tes chroniques, et collaborer sans intermédiaire. Mais un voyageur a besoin de plus qu'un sac et un compas. Il a besoin d'un point de repère - un endroit où les autres voyageurs peuvent toujours te trouver. »

Il pointe du doigt une colline au loin, où se dresse la silhouette d'une tour solitaire.

« C'est là que nous irons demain. »