Skip to content

Radicle and Pkarr? #64

@lorenzleutgeb

Description

@lorenzleutgeb

Hey there!

I recently started contributing to Radicle:

Radicle is an open source, peer-to-peer code collaboration stack built on Git. Unlike centralized code hosting platforms, there is no single entity controlling the network. Repositories are replicated across peers in a decentralized manner, and users are in full control of their data and workflow.

Simplifying a bit: Every user generates an Ed25519 identity and runs a Radicle Node associated with this identity. Radicle Nodes gossip updates via Git, including Patches and Issues.

For example, my identity:

$ rad self
Alias           lorenz
DID             did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz
└╴Node ID (NID) z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz
SSH             running (?)
├╴Key (hash)    SHA256:xX6bpr+AeF5G0wIvU8nLisgYRM6XjQVNJs3hkMGt+T0
└╴Key (full)    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFhK7CqgIIbSthoNn8ea32krOnMzC807Z+PpBkR2YOVj

As will be obvious to you, there's a discovery challenge. For now, DNS names of bootstrap nodes are baked in the binary, and passing around hostnames works okay, but it'd be nice to get addresses of other nodes just by their Radicle Node ID, which is an Ed25519 public key (using a different encoding than Pkarr does).

There's also Radicle Explorer, which is a web-based viewer for projects. As you'll notice from the example URL https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 it currently encodes the address of the Radicle Node that should be contacted right in the path (the deployment at app.radicle.xyz may connect to an arbitrary Radicle Node via radicle-httpd, a bridge-like component similar to a Pkarr Relay). It'd be cool if this could be a Radicle Node ID, resolved to an address via a Pkarr Relay.

Apart from the minor discrepancy of different encodings for keys, it looks like Pkarr would be a perfect match for Radicle. So I'm very hyped and happy that you are working on Pkarr. Thanks! I don't have anything particular to discuss here — I guess I would have to prototype an implementation first to see how it goes — but wanted to ping you anyway.

Feel free to check out the Radicle Zulip at radicle.zulipchat.com

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions