NOTE: When we say
Git
, we do not meanGitHub
. GitHub is a centralized platform, and Git is a protocol. You can use Git and not use GitHub, instead storing your code on platforms such as GitLab or BitBucket.
Collaboration on code these days mostly happens through GitHub. There are alternatives like GitLab and BitBucket, but GitHub is by far the most used Git platform.
However, using GitHub is not a free lunch. GitHub is owned by Microsoft, and with centralization comes tradeoffs. Since you're hosting your code and content on GitHub's platform, that means they could censor you if they wanted to. Let's look at an example:
youtube-dl is a free and open source download manager for video and audio from YouTube, and over 1,000 other websites. It is one of the most starred projects on GitHub, with over 100,000 stars.
In October 2020, GitHub took down the youtube-dl repository, along with various other public forks of the project, based on a request from the Recording Industry Association of America (RIAA).
This spurred a lot of controvery, and highlighted how open-source software and code could be taken down due to it being hosted on a centralized platform. Even though GitHub publicly reinstated that repository in November 2020 due to public backlash, it was still an indicator of how much power their have over your code.
Since GitHub is a US corporation, they have to play according to the US government. Being a centralized platform means GitHub can ban whoever they want from the platform and prevent them from participating in open source through the world's largest open source platform.
Due to pressure from the US government, GitHub has currently banned all Iranian, Syrian, and Crimean accounts. This is heavily misaligned with the values and mission of building a free and open community.
In the spirit of decentralization and removing control from intermediaries, Radicle emerged as a decentralized code collaboration tool. It provides similar functionality to Git, without the centralized platform risk.
Open source runs the world
You may have heard this before. Free and public code has made it significantly easier and cheaper to build software, and innovation in the industry is growing exponentially due to it.
Code collaboration platforms like GitHub have undoubtedly played a huge hand, and have changed forever the way developers write and maintain software. However, they are centralized, and everything you do on these platforms are locked in and exist solely on those platforms.
As an alternative set out to achieve the true goals, Radicle is built on the following principles:
The Radicle Network is built on a peer-to-peer protocol called Radicle Link. Radicle Link extends the Git protocol, and adds gossip messaging to find peers interested in the same data in a decentralized way.
The gossip protocol is a decentralized communication protocol, where all nodes randomly talk to other nodes and request information or share information they want to, and by forwarding knowledge to other nodes, the 'gossip' eventually makes way to nodes who want what you have, or have what you want.
Very similar to how IPFS shares data, participants in the Radicle Network share and spread data they are interested in by keeping a local copy and sharing it. Since it is an extension of the Git protocol, it maintains the efficiency of Git's data transfer protocol through the peer to peer network.
In Radicle, repositories are called projects, which are replicated and shared by peers. If you've ever used torrents, the word 'peers' may sound familiar. Essentially they are people or organizations either looking for data they are interested in, or making data they already have publicly available for other peers.
If you want to go even deeper into how exactly Radicle Link works, you can find a more in-depth documentation on the specification here
While they are built to solve the same problems, albeit with different approaches, the way to use Radicle is somewhat different than using GitHub.
Unlike Git, Radicle projects do not have a single canonical view (i.e. a master/main branch). Instead, Radicle projects have multiple upstreams, i.e. different forks of the code, maintained by the code maintainers and contributors.
To fetch and receive changes from contributors, you have to add them as remotes to your project. This automatically tracks them, and you can subscribe to the new code updates they make on their upstream.
To actually get started with using Radicle, the primary way is to download the Radicle Upstream desktop client. It is an open source client which acts as your gateway to the Radicle Network.
Unfortunately, the Radicle Upstream Desktop Client currently does not ship for Windows. It is only available for Linux and macOS.
The basic workflow for creating projects on Radicle is quite similar to how GitHub would work:
git push
command (but you're pushing to Radicle now, not GitHub)To look at open source projects hosted on Radicle, you need access to the project's Radicle ID.
Using the Desktop client, you can search for the Radicle ID. This will send out an information request message on the Gossip protocol, and once you find a peer who can share that information with you, you will be able to view the project.
To contribute to an open source project, you can fork a project and make changes to it as you normally would.
Then, the original repository can track your changes if they add your fork as a remote of the repository.
That will let them automatically track your changes and generate patches which can be merged into the original repo from your fork automatically.
Radicle has an optional integration with Ethereum. Users can opt-in to the integration which would allow them to have unique global names for your profiles and organizations by using ENS, own decentralized organizations on Radicle by having members be linked to an Ethereum wallet, and be able to accept contributions in crypto for your open source projects.
Additionally, Radicle also has the $RAD token on Ethereum, which is the governance token for the Radicle DAO. This token provides voting power in the DAO which controls the Radicle Network.
Hopefully this article gives a conceptual idea of what Radicle is, how it is different from GitHub, why it is important, and how it works.
In the coming level, we will do a practical introduction of Radicle and go through the process of actually setting up repositories on Radicle, and sharing them with others.