# Radicle — Decentralized alternative for Github in Web3

If you don’t have time to read but want to know what’s there in this post. Find the quick read 👇

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1698055063743/1ce7ecad-aa02-4c9b-8b7e-4f76d26ffd9e.gif align="left")

Radicle is a decentralized network for software development collaboration that aims for high security, censorship resistance, and usability.

### On this Post

In this post we will see the following about Radicle

1. What is Radicle?
    
2. Radicle code storage and communication technology
    
3. Get Started with Radicle
    

### 1\. What is Radicle?

Radicle is a software development management platform and decentralized network that enables computer programmers to collaborate on software projects in a peer-to-peer (P2P) fashion.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1698055066427/d660babb-d36b-48cd-95fc-df8cf3859116.png align="left")

P2P Network

Radicle is free and designed to be highly secure, user-friendly, and censor-resistant. Radicle can also function in an offline environment. This means it doesn’t require a **Domain Name Service (DNS)** — or even internet connectivity — in order to function.

Users can freely share coding projects without the need for a permissioned gatekeeper such as a centralized code repository, DNS hosting service, or proprietary collaboration platform or app.

### 2\. Radicle code storage and communication technology

Radicle was initially built using the **InterPlanetary File System (IPFS)**, the team later decided that the IPFS did not satisfy the performance requirements required by the project.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1698055068086/facea1e6-3257-4d04-884f-8db468170cd3.png align="left")

IPFS

Instead, the Radicle team replaced the IPFS system with Git, which now functions as the storage and replication layer of the Radicle network. Radicle uses Git primarily as a database. Built on Git, Radicle is secured by public-key cryptography (PKC) to maintain security and code provenance.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1698055070616/0fd41db3-42dc-4680-a1ec-c1d4c24df3db.png align="left")

Public key Cryptography

Radicle has built a P2P communication layer called Radicle Link.(Traditional Client-Server architecture).

Radicle Link allows coders (or “peers”) to share and spread data by keeping local copies on their personal devices. The more peers who are interested in a specific software project, the more accessible it becomes throughout the Radicle crypto network.

Radicle also features a blockchain-based tool called Radicle Orgs, which allows you to grant access control to code repositories via smart contracts. You can also share Radicle code repositories via your multi-signature wallet (a.k.a. multi-sig wallet), which gives a global team the ability to share access in a transparent and permissioned fashion. Radicle offers a desktop application for both the macOS and Linux operating systems (OSs) as well.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1698055073346/01141310-bfaf-4d44-9b24-22c678bab986.png align="left")

Multi-Sig Wallet

### 3\. Get Started with Radicle

#### Radicle CLI Installation

👉 To install with 🍺 Homebrew, run:

```javascript
brew tap radicle/cli https://seed.alt-clients.radicle.xyz/radicle-cli-homebrew.git
brew install radicle-cli
```

👉 To install on 🐧 **Debian/Ubuntu**, first download the package signing key:

```javascript
curl https://europe-west6-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
```

Then update your sources list with the radicle repository by creating a registry file:

```javascript
echo deb https://europe-west6-apt.pkg.dev/projects/radicle-services radicle-cli main | sudo tee -a /etc/apt/sources.list.d/radicle-registry.list
```

Then update the package list and install `radicle-cli`:

```javascript
sudo apt update
sudo apt install radicle-cli
```

#### Create Radicle Identity

The first time you run rad auth, you are prompted to create a new radicle identity and Ed25519 keypair.

**rad auth**  
Initializing your 🌱 profile and identity

ok Username · nidhin  
ok Passphrase · \*\*\*\*\*\*\*\*\*\*\*\*\*\*  
ok Creating your 🌱 Ed25519 keypair...  
ok Adding to ssh-agent...  
ok Profile 3ae66df3-6ac7-8466-7013-83839749ed05 created.

Your radicle Peer ID is hyncoz7x4s8x9447g6yogy4iy41q8i4juy5uhou57w1ga7obt644wo. This identifies your device.  
Your personal 🌱 URN is rad:git:hnrkmx6trm4bu19bwa4apbxj8ftw8f7amfdyy. This identifies you across devices.

\=&gt; To create a radicle project, run \`rad init\` from a git repository.

#### Initialize Radicle to a project

Run rad init to create a Radicle project from the repo. This creates a unique peer-to-peer identity for your repository that can be shared on the network, and associates your radicle key with it.

> Clone an existing git repo which has commits because when i tried for a fresh project it doens’t works

**rad init**  
Initializing local 🌱 project ImageCompression

ok Description · This is to test how radicle works  
ok Default branch · master  
ok Initializing new project...  
ok Project initialized: rad:git:hnrkqi6ohci8m59i54ppiy3fqkedkjt98ymdo

\=&gt; To publish, run \`rad push\`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1698055074998/13320aba-3f6a-461e-82cb-648816a29b52.png align="left")

#### Run rad push to publish to the network

The first time you push, you will be asked to select a seed node to push to. To push to your own seed, specify its address with the `**--seed**` option. seed is similar to Remote VM

**rad push**  
Pushing 🌱 to remote \`rad\`  
Everything up-to-date

Git version 2.35.1  
Select a seed node to sync with...  
\* pine.radicle.garden  
\* willow.radicle.garden  
\* maple.radicle.garden

Your code will be synced and available on the network via the web or git.

Git signing key ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL460KIEccS4881p7PPpiiQBsxF+H5tgC6De6crw9rbU

Syncing 🌱 project rad:git:hnrkqi6ohci9m59i54ppiy3fqkedkjt98ymdo to https://willow.radicle.garden

ok Syncing delegate identity hnrkqdpm9ub19oc8dccx44echy76hzfsezyio...  
ok Syncing project identity...  
ok Syncing project refs...  
ok Fetching remotes (\*)...  
ok Project synced.

🌱 Your project is synced and available at:

(web) https://app.radicle.xyz/seeds/willow.radicle.garden/rad:git:hnrkqi6ohci9m59i54ppiy3fqkedkjt98ymdo/  
(git) https://willow.radicle.garden/hnrkqi6ohci9m59i54ppiy3fqkedkjt98ymdo.git

#### Radicle CLI commands

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1698055077255/cd09a4cb-c7d7-4e44-9d8c-f4f76208bfe4.png align="left")

Radicle CLI commands

### Reference Links

<iframe src="https://www.youtube.com/embed/7hrliBvHnh4?feature=oembed" width="700" height="393"></iframe>

Radicle Video

[**Radicle Interface**  
*Interact with Radicle*app.radicle.xyz](https://app.radicle.xyz/)

[**Radicle**  
*Sovereign code infrastructure*radicle.xyz](https://radicle.xyz/get-started.html)

### Congratulations!

In this post, we have seen the alternative for Github in Decentralized network named Radicle as well as how to initialize and deploy a project in Radicle using Radicle CLI

Will catch up in a new post with more interesting crafts till then Happy Learning :)
