Would it be feasible for Radicle to support other VCS like Mercurial or Fossil?

Hi, I just found out about this project and I find it very exciting. I’m wondering though how difficult would it be to expand Radicle to support other VCS. I personally would be interested in adding Mercurial support myself, but I’m not familiar with the code base.

Is Radicle too dependent on git that it’d be more sensible to start a separate project, or can it be done in the same project?


1 Like

Great minds think alike @zanovvyi :slight_smile:

We definitely have support for other VCSes in mind — something I’d personally be interested in is Pijul. We’re trying not to be strictly tied to Git, but for the first version, it’s the most viable since it contains a lot of useful functionality.

Regarding contributing, it’s still early days for us on writing the protocol. There are some places where we left some breadcrumbs to follow for implementing another VCS back-end. For example, radicle-surf has the VCS trait for retrieving a history of changes, which would get passed to a Snapshot function for retrieving a Directory. Then the browsing capabilities on directories are built-in.
The majority of the Radicle protocol is in the radicle-link project. Here you can see traces of us leaving holes for future VCS additions.

At the moment it’s hard to guide you to an exact way of adding another VCS since we’re still only adding Git as a backend ourselves. If you wanted to try adding a radicle-surf back-end, however, I would be more than happy to guide you there, since my name appears everywhere if you git-blame that repo. I would able to point you to different parts of the code to look at for inspiration and help. Otherwise, looking through radicle-link and its spec (a Work In Progress) might be a good way of getting a feel for how we’re moving forward on the replication protocol and managing data within Git.

I hope this is helpful, and others might chime in with extra detail.

And thanks for reaching out :seedling: