Live data from Hacker News

Radicle: Open-Source, Peer-to-Peer, GitHub Alternative

app.radicle.xyz

281–290 of 299 posts

Re: Radicle: Open-Source, Peer-to-Peer, GitHub Alternative

#281
post #272

Earlier quoted context omitted.

Nothing should be under .git/ except things owned by git (or at least allowed for in an explicit way like the hook scripts). You would have to either add the features to git itself, or at least add to git the knowledge of and allowance for extra features like that. But not just toss non-git data in .git/ simply because the dir happens to exist.

> You would have to either add the features to git itself, That is exactly what I'm suggesting.

I don't think I would agree. Well it depends exactly what you imagine.

There are probably an infinite and always growing and changing number of repo-adjacent things similar to the handful of added features that github currently tacks on to git.

I think it doesn't make sense for git, already complicated enough, to try to do all of that other related stuff, however related.

Maybe in fact git is already doing too much meaningful metadata work directly itself, and should instead try to switch it's current metadata into some kind of generic interface that other software could hook in to better?

So rather than git managing, say, issues, git just manages data. Not merely a db, it would facilitate associating high level feature data like issues and ci and conversations with low level commit data. An issue tracker would just be one of many clients using the interface.

git itself should probably not know very much about the data other than how it is associated to some commit. IE, the actual meaning of the data is either only in the consumer, or perhaps is some agreed standard that multiple consumers adhere to and understand, or perhaps comes with it's own schema definition like dtd or protobuf. Or all of the above, a paid product could have data only it understands, and other software could use standardized data, all stored in git at the same time. Multiple different consumers could use the same generic interface to their own data.

Because these add-on related functions are probably not universal or done being invented. Tomorrow there will be 5 new things you want to attach to a repo besides what github provides today, and so without even knowing what they are, that's how I know it's wrong for git to provide the features itself.

But managing the data without caring what the data is, that could totally be a new built in git function, where you give git itself one new function and interface, and an open-ended number of new feature-providing consumers all just use the same underlying git feature in whatever way they want.

Other than that the only other new thing I think that might be right to add to git itself is a proper way to manage large binary assets.

Re: Radicle: Open-Source, Peer-to-Peer, GitHub Alternative

#282

Earlier quoted context omitted.

How do you know the repository id is the correct one? You have just changed the requirement from knowing the maintainers public key, to knowing a different public key. Sounds pretty much the same problem to me.

The difference is that the repository id is stable, while the maintainer keys can change.

Except repository ids change when the repo is forked.

Re: Radicle: Open-Source, Peer-to-Peer, GitHub Alternative

#283

Earlier quoted context omitted.

While Git is designed in some way for peer-to-peer interactions, there is no deployment of it that works that way. All deployments use the client-server model because Git lacks functionality to be deployed as-is in a peer-to-peer network. For one, it has no way of verifying that the repository you downloaded after a `git clone` is the one you asked for, which means you need to clone from a trusted source (ie. a known…

The problem I'd like to see solved is source of truth. It'd be nice if there were a way to sign a repo with an ENS or domain withiut knowing the hash. Another thing is knowing if the commit history has been tampered with without knowing the hash. The reason for needing to not know the hash is for cases like tornado cash. The site and repo was taken down. There's a bunch of people sharing a codebase with differing has…

This is just another form of the cryptographic key distribution problem. Doesn't matter where the git repository comes from, you can be sure it hasn't been tampered with if the signatures are valid.

Domains with DNSSEC are an interesting solution. PGP public keys are distributable via DNS records.

https://www.pgp.guide/pgp_dns/

https://weberblog.net/pgp-key-distribution-via-dnssec-openpg...

Re: Radicle: Open-Source, Peer-to-Peer, GitHub Alternative

#284
post #52
post #46

Earlier quoted context omitted.

Classic git does not evade censorship, such as the extremely recent news concerning Nintendo. An idea like this has been rolling around in my head, and I'm overjoyed that someone has done the hard work.

Git evades censorship just fine, since it is properly decentralized and doesn't care about where you got the repository from. Plain HTTP transport however does not and most Git repositories are referred to by HTTP URL. If you simply host Git on IPFS you have it properly decentralized without the limits of HTTP. IPNS (DNS of IPFS), which you need to point people to the latest version of your repository, however wasn't…

IPFS does not intentionally replicate (it merely caches). Bringing down the authoritative server can result in lost data. Anonymity is also out of scope for the project.

Re: Radicle: Open-Source, Peer-to-Peer, GitHub Alternative

#285

Earlier quoted context omitted.

this is a very VC-brained comment to make on a peer-to-peer open source project. let's instead ask if there are any single points of failure to the protocol and service, and if so, are those sustainable regarding developer time, effort, and compensation?

You are commenting on the hype channel of one of the biggest VC firms in the world. (there was a time _when that comment was the default type around here_, actually)

That aside, it's also a VC-backed startup. I've been burned enough times by "we promise we're going to be the good kind of corporate!" types to ask upfront now if a big chunk of someone else's money is funding something that doesn't charge their users anything.

Re: Radicle: Open-Source, Peer-to-Peer, GitHub Alternative

#286

A bit of a naiive general question, but why are these things not layered on top of existing technology? You already have Bittorrent for distributing files P2P. We "just" need an extra layer for discovering new updates/patches so that files can dynamically update/grow. These two problems seem fundamentally decoupled. The "git forge" aspect seems to be another fundamentally separate layer on top of that

We tried. At first we built it on top of IPFS. It was much too slow. BitTorrent is interesting but we need a way to have mutability (repos change all the time). So we built the networking layer ourselves and the forge on top of that.

If you built a mutable bittorrent layer yourself (like ipfs but better), then why not make it its own separate thing?

If that's what you've managed to pull off, that's like a way bigger deal than a p2p gitforge (not that that isn't super cool in itself)

I guess architecturally why does it need to be coupled to git and a git forge?

Re: Radicle: Open-Source, Peer-to-Peer, GitHub Alternative

#287

Earlier quoted context omitted.

> it has no way of verifying that the repository you downloaded after a `git clone` is the one you asked for Respectfully disagree here. A repository is a(or multiple) chain(s) of commits, if each commit is signed, you know exactly that the clone you got is the one you asked for. You're right that nobody exposes a UI around this feature, but the capability is there if anyone would have any workflows that require to p…

Here's the problem: how do you know that the commit signers are the current maintainers of the repo?

By joining the web of trust. Meeting people, verifying each other's identities and getting keys signed.

Debian seems to be quite good at this.

https://wiki.debian.org/Keysigning

https://wiki.debian.org/Keysigning/Coordination

https://wiki.debian.org/Keysigning/Offers

Re: Radicle: Open-Source, Peer-to-Peer, GitHub Alternative

#288

Earlier quoted context omitted.

A CONTRIBUTORS file is easy to change by anyone hosting the repository - it's useless for the purpose of verification, unless you have a toolchain to verify each change to said file. "Sign-offs by maintainers" it not useful either unless you already know who the maintainers are, and you are kept up to date (by a trusted source) when the maintainers change. This is what Radicle does, for free, when you clone a repo.

All good points, but now you moved the trust requirement from me having to trust the people working on the code, to me having to trust the tool that hosts the code. I'm not convinced your model is better. :P

For me, one of the benefits of FOSS is that I don't have to trust the people. I can look at the code and decide for myself.

Not looking to convince you of that or anything though... :)

Re: Radicle: Open-Source, Peer-to-Peer, GitHub Alternative

#289

Earlier quoted context omitted.

The repository id can be derived via a hash function from the initial set of maintainers, so all you need to know is that you have the correct repository id. The advantage of this is that (a) it verifies that the code is properly signed by the maintainer keys, and (b) it allows for the maintainer key(s) to evolve. Otherwise you’d have to constantly check the official website for the current key set (which has its own…

I'm not sure how any of this solves the problem. If I am on the internet there is no key or keys that I could definitively say came from the _real_ maintainers. I need to trust some source or sources for that. In your model, committing to the repo requires a private key. This key claims ownership of the repo. If that key is lost or stolen I have lost ownership of that repo. With no out of band method to recover it. I…

Radicle developer here :) And yes you're completely right.

The current state of key management has A LOT left to be desired, because `did:key` has no rotation and so if you lose your key then it's game over. We decided to go with something simple first to allow us to develop the collaboration experience as much as possible -- we're a small team so it's hard to tackle all of the large problems all at once, while also getting an experience that's polished :D

Key management and a general "profile" is high on our priority list after we have properly launched. A few of us think DIDs (https://www.w3.org/TR/did-core/) are a good way forward. In particular, `did:keri` seems very interesting because its method involves a merkle-chain log, which can be easily encoded in Git. It includes key pre-rotation -- meaning there's a key that's available to help recover if something goes wrong. It can also delegate to other people, so you can allow the safety of your identity and key be improved by third-parties.

That said maybe there are other DID methods or other methods in general that might better suit. Or maybe we're able to build something that can be more general, and just needs to essentially resolve to a public/private key pair and we don't care after that.

Would definitely be interested in the communities thoughts here :) Or if someone who's got expertise in the area wants to chip in, hit us up ;)

Post reply on HN