Radicle: peer-to-peer collaboration with Git
Radicle is a new, peer-to-peer, MIT/Apache-licensed collaboration platform written in Rust and built on top of Git. It adds support for issues and pull requests (which Radicle calls "patches") on top of core Git, which are stored in the Git repository itself. Unlike GitHub, GitLab, and similar forges, Radicle is distributed; it doesn't rely on having everyone use the same server. Instead, Radicle instances form a network that synchronizes changes between nodes.
As a new project, Radicle is not fully featured compared to the mature and centralized forges. That said, the Radicle developers are using Radicle itself to collaborate on the software, along with a Zulip chat system. The first 1.0.0 release candidate was announced on March 26.
(Note that I am paid to help develop Radicle.)
Overview
In Radicle, each user runs their own node on each computer they use for collaboration. The node stores copies of the repositories the user is interested in, regardless of whether they're created by the user or cloned from another node. The node process runs in the background to fetch changes from peers and serve repositories to peers that want them. To the user, the node acts like a local Git server. You clone from, pull from, or push to the node and it coordinates with other nodes.
There is a web interface for browsing repositories, issues, and patches, and it also allows opening and managing issues. The web interface can be opened for the local node, or on a suitably configured server, for any other node. Thus you can inspect any public node to see if it is in sync with yours.
The web interface looks a lot like the more mainstream forges, and is meant to feel instantly familiar. You can browse the code, issues, and existing patches. However, unless you run your own Radicle node and open its web interface, you can't currently make changes: you can't report issues, comment on issues, etc.
If you want to clone a repository locally, the web interface provides two ways: either using normal Git (git clone) and an HTTPS URL, just like other forges, or having your Radicle node fetch it and clone from that using the rad command-line tool. You don't need to use Radicle to get a copy of a repository from Radicle.
Creating issues and patches — and commenting on them — happens using your own Radicle node. There is a command-line interface, and a web user interface. The Radicle project is also working on a full-screen terminal user interface, like Midnight Commander but for Git, and there is integration with Visual Studio Code and IntelliJ IDEs, among others.
Motivation
The motivation for Radicle is similar to that of the overall decentralization movement. The centralized Git forges are popular for good reasons: they've put in a lot of effort into being easy to use and efficient, and to provide the kinds of features their users need. However, they are also not always great for everyone. There is some truth in the joke that when GitHub is down, the world stops developing software. Git was the first popular distributed version control system. Then, the popularity of GitHub made it the most centralized version control system.
With a peer-to-peer system, if your node is down, you may have to stop working, but nobody else needs to. More importantly, you don't need permission to run a Radicle node. Your access can't be revoked. Your repositories can't be deleted from your node by others. Nobody will force you to accept an "updated" set of terms and conditions.
Radicle stores issues and patches in the Git repository itself. You can create, comment, and manage them while offline. Radicle is local-first software: network access is only required for operations that inherently require communicating with other computers, such as retrieving or sending changes. Everything else works without the network.
Radicle repositories are self-signing, a necessary feature in a distributed system. While a GitHub repository can be authenticated by location (it's on GitHub with a given name), a Radicle repository is associated with a small set of cryptographic signing keys, which allows its identity and contents to be authenticated regardless of where the repository is stored.
Radicle's origin traces back to 2017. Its development is funded by Radworks, an organization that coordinates on the Ethereum blockchain using a token called RAD. However, Radicle does not use any blockchain or cryptocurrency technology. Radicle is not the only approach to decentralized collaboration over Git. ForgeFed is a protocol built on ActivityPub to support a federated network of Git servers.
Architecture
Nodes communicate with each other using two different protocols. First, there is a gossip protocol, where nodes tell each other about the nodes and repositories they know about, and about changes to the repositories. Second, they use the Git v2 smart transfer protocol to exchange repository content.
Each node stores copies of the repository as it exists on each other node it knows about, using the Git namespace feature and the node identifier as a name. Each node has nearly identical content, so this is an efficient way to store the data. To Git, a Radicle repository is a perfectly normal repository. Radicle uses standard Git mechanisms to add a persistent repository identity, issues, and patches. These are stored in special Git refs.
Every repository stored in Radicle has an identity that is the same in every Radicle node where the repository appears. If there are multiple copies of a repository stored in a node, each copy has the same identity, and can thus be identified as a version of the same repository. This identity is created by committing an "identity document" that contains metadata about the repository; an example identity document is:
{ "payload": { "xyz.radicle.project": { "defaultBranch": "master", "description": "Radicle Heartwood Protocol & Stack", "name": "heartwood" } }, "delegates": [ "did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT", "did:key:z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW", "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM" ], "threshold": 1 }
The document includes a description of the repository and its default branch. The delegates list contains the public Ed25519 keys of the delegate(s) that are empowered to change the identity document or commit to the main branch. This document is stored behind the rad/id ref in the repository. It must be signed by one of the delegate's private keys. Each repository has a short ID that is calculated from a hash of the initial version of the identity document. This ID will not change as the identity document is modified, and can thus be used to identify the repository over time.
There is no way to prevent anyone from changing the identity document on their own node and signing it with their own key, bypassing Radicle. However, other nodes won't accept the change, since it is not signed by a delegate's key, making such changes pointless. Radicle also signs the branch and tag refs. The signatures are refreshed whenever a node changes anything in the repository. This means that other nodes can verify another node's repository content without inspecting the other node directly. This helps prevent forgeries and related attacks.
Issues and patches are stored using an implementation of a conflict-free replicated data type, which Radicle calls a "collaborative object", or COB. Any node can append data to a COB, and changes from different nodes can be merged without conflict. (Normal git conflict management applies to the rest of the content of the repositories, however: the user needs to resolve them.) The COB mechanism in Radicle is generic, and can be used to build further collaboration tools.
Seed nodes
Any node can synchronize data with any other node, but only if they can communicate directly. With network address translation (NAT) being prevalent, this is often not possible. Radicle does not yet have "NAT punching", but relies on third-party, publicly accessible seed nodes. This is safe thanks to the repositories being self-signed: the seed node can't modify the data.
Thus, if Alice and Bob are both behind NAT networks, they can collaborate via a seed node on the Internet that they both can access. Unlike with centralized forges, anyone can set up a seed node. This works especially well for open-source projects that don't need to keep repositories hidden. If hiding is necessary, a private seed node and Radicle private repositories can be used. A private repository is one that's configured to only be shared with specific other nodes. However, Radicle is not yet a good solution for truly confidential material: the private nodes are still rather rudimentary.
Missing features and other challenges
Radicle does not yet have mature support for continuous-integration systems, although work on that is underway. There is also only rudimentary support for code review, but that is also being worked on.
Currently, Radicle has a simple identity system: each node has its own public key. A challenge for the future is to evolve this into a more versatile identity system. For example, a developer with both a laptop and a desktop system would benefit from being able to certify that both nodes are theirs. Support for groups or organizations is also missing.
Perhaps a more fundamental challenge is that interacting with a Radicle repository, even just to report issues, requires using Radicle. With a centralized forge, all you need is an account and a web browser. This may be a problem for projects that would like to use Radicle, but whose users can't be expected to use it.
Conclusion
Radicle is a new and promising decentralized approach to Git hosting. If
you are curious to know more, the guides are a good place to
start. We're also accepting patches and hoping to bring in new
contributors, so if you know some Rust and care about developer tooling,
please join us on our Zulip
forum.
Index entries for this article | |
---|---|
GuestArticles | Wirzenius, Lars |
Posted Mar 29, 2024 14:26 UTC (Fri)
by atnot (subscriber, #124910)
[Link] (6 responses)
Immutability of data: Having an everlasting, unchangable, signed database anyone can write to is rarely actually desirable. Among other things like dire consequences for pasting the wrong thing from your clipboard, it opens up endless vectors of abuse and harassment. That immutability might seem a lot less nice when someone starts posting pictures of your front door or CSAM and other illegal imagery to your issue tracker when you merge something they don't like. People do also change things like names for a variety of reasons and usually really appreciate those names not lingering in old issues forever or having to nag hundreds of repo maintainers to change them. That's not to say that none of these issues can't be narrowly fixed individually, but that the real world is usually far more mutable than this type of model allows.
Git security: Git has had a relatively constant stream of security issues that allow compromising local machines with malicious git archives. Usually this isn't a huge issue, because the people who can commit to repos are relatively trusted and/or the repo contains executable code anyway. But when everyone is constantly pushing and pull from git repos just for issue tracking, that becomes a lot more risky.
Data size: Similarly to the other two issues, one might imagine a situation where two users get into an endless offtopic argument, or some jokester posts the entire bee movie script or a uuencoded version of the shrek movie as a comment. Even non-maliciously, one might want to show a screenshot of some buggy behavior, or upload some long logs. This is now part of the eternal record, so it must be downloaded forever by everyone who wants to look at your issue tracker now and into the future. Lore.kernel.org rotates git archives regularly for this reason, but that's only possible because it's just an achive of emails sent and not the entire current and historic state of a working issue tracker.
Moderation: again, see everything above. Having this floating cloud of contributor nodes without seemingly any mechanism for proper moderation is just negligent and a non-starter for public collaboration. This might work in a scenario where everyone is trusted in the first place, but in that case there's really not any need for this rigmarole in the first place. And if fully public collaboration is out of scope, it's not a fit to replace any of the centralized services.
Given the existence of a cryptocurrency token behind this, I suspect the solution to this is supposed to be tokenized aligned incentives whatever. I'll just nip that in the bud and say that cryptocurrencies have all of these issues even by themselves and paying in some wildly fluctuating crypto token to open a bug report instead of just, say, sending an email will not sound appealing to anyone who isn't current hungry to dump said token on someone else.
Posted Mar 30, 2024 8:11 UTC (Sat)
by westerntelegraphic (subscriber, #132321)
[Link] (2 responses)
This is a already a problem with anything built on top of git -- the Author and Committer headers contain user.name. Pijul has a much better solution: it identifies users by an ed25519 key (which is part of the commit-hash). There is a separate, ephemeral mapping from ed25519 keys to human-readable names (each signed by the key of course) which is not part of the hash chain: https://pijul.org/manual/keys.html
In fact, pretty much all the complaints you made apply equally to git itself: "Git security" -- obvs. "Data size: Lore.kernel.org rotates git archives" -- as a convenience; their size hasn't been a problem as you predict it would. "Moderation: Having this floating cloud of contributor nodes without seemingly any mechanism for proper moderation is just negligent" -- that's exactly what the commercial software industry said the problem with open source was, back in the 1990s.
And yes, we get it, you don't like cryptography.
Posted Mar 31, 2024 14:40 UTC (Sun)
by gray_-_wolf (subscriber, #131074)
[Link] (1 responses)
1. How are people "from outside" referenced? For example, I (not a pijul user) report some bug via email. In some projects, adding Reported-by: X Y into the commit message is customary. How would that be handled?
2. And follow up on the same topic, are any references to usernames/emails in commit messages (reviewed-by, co-authored, ...) automatically replaced by the corresponding key? Or is that left as an exercise to the commit author?
Would you happen to know the answers?
Posted Apr 1, 2024 12:07 UTC (Mon)
by spacefrogg (subscriber, #119608)
[Link]
2. All content inside commit messages is handled as described in 1. It could be considered a widespread mis-use of commit messages to bake ill-defined semantics into them and apply social norms on top. That is not what they are supposed to be used for or what their data model can meaningfully support. This means they will always break current or future social norms one way or another.
Posted May 14, 2024 0:31 UTC (Tue)
by zaitseff (subscriber, #851)
[Link]
Immutability of data: Having an everlasting, unchangable, signed database anyone can write to is rarely actually desirable. SKS Keyserver had exactly the same problem: once a public key, or part of a public key like an additional signature, was added, it could not be removed. Worse, IIRC anyone could add such material to other people's keys—up to and including JPEG images of who-knows-what… Many keyserver operators, myself included, left the keyserver pool for this or similar reasons.
Posted Sep 19, 2024 22:14 UTC (Thu)
by Spudd86 (guest, #51683)
[Link] (1 responses)
It uses cryptographic identities, but that has nothing whatever to do with crypto currency or NFTs.
It's peer to peer and distributed in the same way that git is. It verifies things with normal crystallographic signatures, as already commonly used with git.
Posted Sep 19, 2024 22:19 UTC (Thu)
by Spudd86 (guest, #51683)
[Link]
What is the relationship between Radicle and the Radworks ($RAD) token?
Radicle is a true peer-to-peer protocol. It doesn’t use nor depend on any blockchain or cryptocurrency.
Radworks, the organization that has been financing Radicle is organized around the RAD token which is a governance token on Ethereum.
Posted Mar 29, 2024 18:18 UTC (Fri)
by comex (subscriber, #71521)
[Link] (2 responses)
It's also usually faster to access local data than a remote server.
Git was originally designed to be paired with mailing lists, which have more or less the same resilience. Everyone on the mailing list has an archive of all mail from the list (if they don't delete it), and if the list goes down, it's not too hard to set up a new one.
But then GitHub ruined it by adding centralized issues and pull requests.
I'm not a mailing list revanchist; I think GitHub won by providing a legitimately better experience. I just want to recover the decentralization.
So I'd like to use a decentralized issue/PR tracking system for my projects. However, I highly value accessibility and drive-by contributions, so it's essential that users shouldn't be required to use any new tool in order to access and contribute issues and PRs. There should be a nice web UI that can do most of what GitHub does, *in addition* to a local tool for more advanced users. Sounds like Radicle is partway there, but the inability to contribute using the web UI is a blocker for me. I hope that gets improved soon.
Posted Mar 30, 2024 2:42 UTC (Sat)
by salimma (subscriber, #34460)
[Link]
Posted Sep 10, 2024 14:23 UTC (Tue)
by ceplm (subscriber, #41334)
[Link]
Posted Mar 29, 2024 18:37 UTC (Fri)
by dilinger (subscriber, #2867)
[Link] (1 responses)
Posted Sep 11, 2024 3:44 UTC (Wed)
by stephenjudd (guest, #3227)
[Link]
Posted Mar 30, 2024 0:10 UTC (Sat)
by leromarinvit (subscriber, #56850)
[Link] (1 responses)
Ever since I read that blog post, I've wished for something like its fictional decent tool to become reality. I'm glad it seems to be getting closer! (And I'm wondering now if rad is an intentional pun on decent...) Radicle is probably not perfect yet, and the very first comment here brings up some legitimate areas of concern. But I don't see why these couldn't be addressed in some way.
Let's hope we'll one day have a viable alternative to centralized forges that's easy enough to use that it can have a shot at becoming the de-facto default that GitHub currently is!
Posted Mar 30, 2024 14:29 UTC (Sat)
by mricon (subscriber, #59252)
[Link]
I bowed out when the project went on a weird cryptocurrency bend. Thankfully, that has been massively deprioritized (but not abandoned altogether).
Posted Mar 30, 2024 6:53 UTC (Sat)
by mirabilos (subscriber, #84359)
[Link] (6 responses)
Thanks for the warning, I stopped reading there. Saved me time.
Posted Apr 5, 2024 23:20 UTC (Fri)
by Curan (subscriber, #66186)
[Link] (5 responses)
Rust has several very good concepts. And it does promise some solutions for issues in other languages (especially C/C++, ASM or similar). That said: Rust also has a ton of issues, not least of it being based off LLVM and not having any other implementation (the project for adding Rust to GCC is many versions behind and has major hurdles to climb yet).
But I would always expect a better critique than "written in $language".
Posted Apr 6, 2024 15:56 UTC (Sat)
by mirabilos (subscriber, #84359)
[Link] (1 responses)
Posted Apr 10, 2024 22:05 UTC (Wed)
by Curan (subscriber, #66186)
[Link]
Of librsvg I was not aware and I must admit I am surprised. A SVG parser might be messy because of its standard (and extensions), but not being able to compile everywhere was not what I was expecting.
Python I have – very personally – no interest in. So I do not have any knowledge in this space. Sorry.
That said: I can accept the argument of "needs to compile to all the platforms I/$entity" care for. That was not clear to me from your initial post. Because I do also think, that having some software available ob one system and not necessarily on all others is not an issue in all cases. That being said: that Rust is limited by its implementation/LLVM is an issue. I wish there were more resources available to the gccrs developers [0], who aim for a better and long-term hopefully better platform.
----
[0] <https://rust-gcc.github.io/>
Posted Apr 10, 2024 21:43 UTC (Wed)
by intgr (subscriber, #39733)
[Link] (2 responses)
This is not technically true any more. There is a working, stable Cranelift backend. Though it generates less optimized code than LLVM/GCC and supports far fewer ISAs. https://lwn.net/Articles/964735/
Posted Apr 10, 2024 22:08 UTC (Wed)
by Curan (subscriber, #66186)
[Link]
---
[0] <https://rust-gcc.github.io/>
Posted Apr 10, 2024 22:19 UTC (Wed)
by mirabilos (subscriber, #84359)
[Link]
The lacking support in Rust itself and LLVM was the issue in the first place, so anything supporting even *less* is… quite unhelpful.
Not to forget Cranelift itself is also written in Rust…
gccrs and even rust_codegen_gcc or what’s it’s called are also not helpful yet. They _might_ become somewhat helpful once they are available in Debian so that standard package building picks them up when building Rust packages on nōn-rustc/llvm architectures, automatically, and they are supported on all architectures and can build all the codes.
So, perhaps in a decade or something.
It’s worse than ghc, and as bad as pre-Zero Java was, no, even worse, with the GCJ situation we had a stopgap.
Posted Mar 30, 2024 7:56 UTC (Sat)
by westerntelegraphic (subscriber, #132321)
[Link] (1 responses)
Please do consider making the UI at least minimally functional with javascript turned off. Gitea, Codeberg, and Sourcehut all let you browse a project's files with javascript turned off. The radicle web interface just displays a blank page :(
PS, there does not appear to be a git tag for the 1.0.0 (or 1.0.0-rc1) release.
PPS, you might be interested in crate2nix. It puts every crate is its own derivation, so it can do two things crane can't: (1) builds of your dependencies can be distributed across multiple machines and (2) build artifacts can be reused by multiple different dependers. I ran `crate2nix generate && nom build -f Cargo.nix workspaceMembers.radicle-cli` from a checkout of your project at 345fa57b and it worked fine, spreading the build across eight machines in parallel. Note: I had to turn the cross-crate-boundary build.rs symlinks into copies.
Posted Apr 5, 2024 23:23 UTC (Fri)
by Curan (subscriber, #66186)
[Link]
Posted Apr 2, 2024 6:30 UTC (Tue)
by ceplm (subscriber, #41334)
[Link]
I was trying to play with Radicle over the Easter weekend while porting Bugs Everywhere to Python3 (seed available). I have the same feeling about it as with IPFS: something which may be very important for somebody, but for anybody normal it introduces just a horrible amount of complications in between my code and the Universe with no clear benefit for me. Also, the thing is somewhere around the Proof-of-concept stage and it is horribly unusable. For example, I have not found a way here how to switch from this view to the CGit on my server (or Gitea, if I want to be presumptuous) is just enough for me, https://git.cepl.eu/.
Posted Apr 5, 2024 23:14 UTC (Fri)
by Curan (subscriber, #66186)
[Link] (2 responses)
The "Crypto Bro" closeness would make this project suspect to me, if I didn't know Lars and trust him.
Posted Apr 9, 2024 19:22 UTC (Tue)
by mathstuf (subscriber, #69389)
[Link] (1 responses)
Posted Apr 10, 2024 22:13 UTC (Wed)
by Curan (subscriber, #66186)
[Link]
Posted Apr 11, 2024 13:15 UTC (Thu)
by raven667 (subscriber, #5198)
[Link] (3 responses)
Maybe I missed it and could do a little more research but does the application work with IPv6 addresses because that can restore peer-to-peer connectivity in a lot of cases, Google was recently reporting that around 40% of their traffic is now IPv6 so even if _your_ ISP or your region doesn't support it yet, others support it very well, so plan A can be direct IPv6 p2p and plan B can be some NAT traversal technology.
Tangent: Now that I'm thinking about it, I'm wondering about the production history of Teredo protocol as used by the Xbox, I'm not sure Xbox Live still uses it but I haven't seen a retrospective on what the pros and cons of it were, operationally. Teredo (IIUC) is an IPv6 tunnel over IPv4/UDP designed to work behind a NAT and encode the public NAT IP and port for peer-to-peer NAT traversal, the Xbox used it for p2p gaming to reduce latency vs bouncing all traffic from behind NAT routers through a central server. Maybe games just moved away from p2p flows toward mediation through a central game arbiter as an anti-cheat measure, dunno.
Posted Apr 11, 2024 14:33 UTC (Thu)
by atnot (subscriber, #124910)
[Link]
Posted Apr 11, 2024 14:38 UTC (Thu)
by Wol (subscriber, #4433)
[Link]
Aiu you, an xbox would open an IPv4 link to a Microsoft server that was both IPv6 and IPv4. It would then get an IPv6 address from that server, and tunnel all IPv6 traffic over the IPv4 link.
If I was implementing something like that, I'd just ask for an IPv6 address from my local DHCP, and only use Teredo if I couldn't get one. In which case XBox Live could still be using that, just that as IPv6 has got more universal Teredo would disappear naturally of its own accord.
I'm not aware of using IPv6, but to the best of my knowledge my router is dual, and my PCs and laptops support IPv6 by default ... so hopefully by now NAT is just dying out naturally ...
Cheers,
Posted Apr 12, 2024 1:45 UTC (Fri)
by Cyberax (✭ supporter ✭, #52523)
[Link]
> Maybe I missed it and could do a little more research but does the application work with IPv6 addresses because that can restore peer-to-peer connectivity
It won't. IPv6 in practice behaves like NAT, you need both peers to somehow communicate their decision to their firewalls. You can't just randomly connect to a port of an IPv6 peer and expect it to work. This is especially true for mobile devices, which form the main IPv6 deployment pool right now.
Posted Apr 22, 2024 11:47 UTC (Mon)
by massimiliano (subscriber, #3048)
[Link] (1 responses)
Disclaimer: Radicle is very dear to me mostly because I worked full time on it for most of 2020. I have been following it since then but I am no longer active in the project.
I have two main gripes with it:
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
- your Git hosting service enshittified and took your data hostage
- you just want to switch hosting services for some other reason
- your hosting service suffered data loss
- you don't have an Internet connection and need to work offline temporarily
- your hosting service got a DMCA notice (...this is a concern for everything from youtube-dl to Nintendo fangames)
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
This reminds me of Konstantin Ryabitsev's 2019 blog post Patches carved into developer sigchains (which also spawned a rather lengthy discussion thread on LWN). And while I haven't looked at either protocol in any detail, Radicle's protocol guide mentions inspiration drawn from the "Secure Scuttlebutt" protocol Ryabitsev proposed to use.
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
javascriptless viewing like Gitea, Codeberg, and Sourcehut have?
javascriptless viewing like Gitea, Codeberg, and Sourcehut have?
Radicle: peer-to-peer collaboration with Git
python3
branch, where all porting happens.Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
Wol
Radicle: peer-to-peer collaboration with Git
Radicle: peer-to-peer collaboration with Git
I really believe in the project goals, but when working inside the team I have not been able to steer the project in those two directions. I still consider this a personal failure of mine (or at least a big missed opportunity).
About directly supporting sharing repository contents using git repos hosted "anywhere", I proposed it but the idea went nowhere: the p2p protocol was too central to the "node" idea (with all the hosting issues and eventual firewall-piercing technical hurdles that it implies).
I also clearly stated that the overall tradeoffs between energy efficiency, costs and reliability with a totally distributed system are terrible. There are good reasons why most forges (starting from github) can give away reliable git storage space for free, and getting that pervasive level of adoption with a p2p system IMHO is between "too hard" and "plain impossible".
However, this idea was not understood and went nowhere.
About the second issue, decoupling personal user identity from node identity was literally the first thing I tried to do in the project, with technical proposals and pull requests. In this case the complications I was adding were "too large", and we ultimately decided we were not able to work together (for this and other reasons).
I am sorry to see that also this idea of mine did not make it (even if it is considered for post-1.0 work).
That said, the project is solid and provides something that is sorely needed, and I really like all the team members I have met at the time; working with them has been a wonderful experience despite the disagreements!
I am still convinced that the only way to mass adoption would be allowing plain github repos to participate in the network as "passive", "data-store" nodes.
But I still wish the project good luck with all my heart!
Posted Jun 14, 2024 13:28 UTC (Fri)
by shackra (guest, #171967)
[Link]
Radicle: peer-to-peer collaboration with Git