Radicle
S01:E06

Radicle

Episode description

In this episode we embark on a learning journey guided by Fintan and Lorenz into the realms of forges, patches and repositories. Radicle is a code collaboration platform built for developers who value transparency, ownership, and open-source resilience, building on peer-to-peer and local-first infrastructure for censorship-resistant collaboration directly over Git.

This conversation flows through many avenues from federated forges to DIDs and the next steps on the horizon for Radicle. Also mentioned is the Digital Identity report by Cade Diehm and New Design Congress.

Connect to the Radicle team and community on their multi-lane Radicle Zulip chat and learn more about sovereign Git collaboration.

Download transcript (.srt)
0:25

Hello and welcome to today's episode of SolarCast

0:32

and with us today we have two developers

0:37

and the core maintainers from Radical.

0:40

Unfortunately in this episode today my main recording

0:46

microphone broke down so what you'll be hearing

0:49

is my backup microphone and luckily that was

0:54

still going but the audio quality is maybe

0:57

not up to par for the usual episode.

1:01

Just a forewarning but I think it's still

1:05

good enough.

1:05

I did my best to edit it so

1:07

it will be a pleasant enough conversation.

1:11

And the conversation that we'll be hearing will

1:14

be going through a lot of different aspects

1:17

and you'll be kind of with me on

1:19

the learning journey of what it means to

1:23

do peer to peer and local first Git

1:28

collaborations and forages.

1:32

So if you are as curious as I

1:35

am and was then tag along and let's

1:40

dive in.

1:47

Thank you so much for joining today for

1:50

this episode of SolarCast and with us here

1:55

today for those of you who cannot see

1:57

us is Lawrence and Fintan from the Radical

2:02

project.

2:04

Radical.xyz. So to get to know y

2:10

'all a little bit would it be okay

2:12

that you tell us a little bit about

2:14

how you entered Radical and what your backgrounds

2:17

are?

2:18

Yeah so mine was like a long winding

2:23

journey of getting to work on like functional

2:30

programming during college times, working remote for a

2:36

company that actually used Haskell.

2:39

So yeah I became enamored with Haskell in

2:41

particular during my university days and that eventually

2:46

led me to OSCoin.

2:50

And that happens to be the kind of

2:54

like roots of Radical so to speak.

2:58

So we kept in touch and I was

3:01

interested in the project.

3:04

It was kind of the idea of OSCoin

3:06

was to try and bring sustainability to open

3:11

source projects through a kind of like weighted

3:15

graph system, cryptocurrency and basically if you're dependent

3:23

upon a lot then your project would theoretically

3:27

get rewarded a lot.

3:30

So there's this classic xkcd comic with the

3:34

stack of blocks and we have the tiny

3:36

little block holding up everything in the corner.

3:40

So in theory that block would be getting

3:43

a lot of funding to make sure that

3:44

the whole stack doesn't collapse.

3:47

They realized that not only is funding a

3:51

problem but also the like collaboration on code

3:56

artifacts and repositories seem to be a problem

3:59

as well because it's rooted in centralized companies

4:05

and centralized countries let's say.

4:09

GitHub being based in America under Microsoft.

4:15

So early indications of what we're seeing now

4:19

in this like shift towards more sovereign solutions.

4:25

So like trying to break away from the

4:27

US.

4:30

Yeah and it was right about then that

4:33

I joined.

4:34

That project was kind of like the first

4:36

iteration and after that it was a Rust

4:41

project and it was the second iteration of

4:48

what we call Radical.

4:49

And then the name was Radical Link and

4:53

instead of a kind of Lisp machine it

4:56

was kind of back to basics.

4:58

We've got Git, why don't we build on

5:01

top of it.

5:03

So that's around when I joined about six

5:06

and a half years ago.

5:09

I've been working on things since then.

5:12

I can get into the why a bit

5:16

more but maybe I'll hand it over to

5:18

Lorenz to kind of give his perspective of

5:21

why he got into this.

5:24

Thank you Fintan.

5:26

Hello to all our listeners.

5:29

I am Lorenz and I joined the project

5:32

quite a bit later.

5:34

So I was not around in this OS

5:36

coin phase and the let's say the earlier

5:39

explorations and iterations of the project.

5:43

I joined quite a bit later just as

5:47

a open source contributor.

5:51

So I first started contributing just out of

5:55

interest because I liked the idea.

5:58

I was actually as GitHub got acquired by

6:03

Microsoft a few years back I started wondering

6:07

okay like where is this going and I

6:12

figured why aren't there more projects that work

6:17

on the decentralization aspect and making the decentralized

6:21

components of Git which are really strong more

6:25

usable and more user-friendly.

6:28

Because the reason is that the underlying situation

6:32

is that Git actually is very decentralized but

6:35

the dynamics in the real world have unfolded

6:39

in a way that we see lots of

6:41

concentration so we see lots of people gravitating

6:44

towards GitHub big part of the open source

6:47

ecosystem and a few other forges but GitHub

6:51

is the biggest by far.

6:54

So at that time I didn't even really

6:56

know about Radical.

6:59

Blockchains were more prominent but I had a

7:04

few questions and reservations there so I didn't

7:09

really engage much in these projects but then

7:14

at some point I learned that Radical actually

7:18

switched the implementation to Rust and switched to

7:22

one that is not dependent on the blockchain

7:24

but is more open to like opt-in

7:28

in the future or build on top but

7:30

certainly not in the core of it as

7:32

it was previously.

7:34

In fact the situation that Fintan mentioned before

7:37

about the graph to distribute the resources and

7:41

funds among open source communities this is a

7:43

project that spun out into so this still

7:46

exists it's called DRIPS and we say it's

7:49

our sister project but that kind of was

7:52

realized that it might be better to split

7:54

these two aspects and I do agree.

7:57

So after that period I decided okay now

8:01

is the time that I start contributing to

8:04

one of these projects and then I started

8:06

contributing to Radical.

8:07

As usual you know you find those things

8:11

that you think could be improved you start

8:14

with smaller ones then you somehow understand the

8:17

code base you find a few bigger ones

8:20

and that's how I grew into a more

8:24

senior contributor to the project and then at

8:29

some point I was asked whether I would

8:32

like to maintain the project together with Fintan

8:36

and Adrian and yeah that's what I'm doing

8:40

now.

8:41

You mentioned something there as usual and then

8:45

you describe this process of like finding these

8:48

different projects that you want to contribute to.

8:50

When you say as usual who are you

8:53

talking about here like as usual?

8:55

Yeah it's probably colored by my own view.

8:59

I would say as usual for really an

9:02

open source enthusiast you know the kind of

9:05

people that use open source software and if

9:07

they see an issue or something that could

9:10

be improved they really go clone the code

9:13

figure it out do the fix and so

9:16

on and yeah I have done that in

9:20

like a handful projects those that I use

9:22

personally and I like to do that when

9:25

possible but of course it's not always possible

9:27

to start with when the software is not

9:30

free.

9:31

So I've been having a lot of conversations

9:34

with some friends recently who are new in

9:38

the open source space and they want to

9:40

start exploring and I think one of the

9:43

challenges is kind of what you touched upon

9:45

here is like finding what project to contribute

9:47

to and so we touched on it or

9:51

so why did you find that Radical was

9:56

the project worthwhile to contribute?

9:58

I think that Radical is pretty far out

10:02

there in terms of ambition and also in

10:06

terms of challenge in bringing Git back closer

10:12

a bit to its roots or at least

10:14

how we see it bringing this decentralization aspect

10:18

back.

10:19

So there are quite a few open source

10:22

projects out there in terms of different forges

10:25

for example many many will know Codeburg and

10:29

that they use ForgeJoe others might know SourceHUD

10:37

but as far as I know Codeburg is

10:42

an association so they are structured as an

10:45

association registered in Germany they invite new members

10:48

to join and the core offering is that

10:51

they host infrastructure for you to collaborate on

10:55

open source code open source software free software.

10:59

And they're kind of like GitHub but open

11:01

source?

11:02

I mean I wouldn't go that far I

11:06

wouldn't say they are like GitHub because GitHub

11:10

is yeah is a bit of a different

11:13

topic I guess but Fintan yeah please take

11:17

it away.

11:18

Maybe it's good to just clarify what like

11:21

a GitForge means in general so most people

11:27

my favorite comment is like Git it's already

11:30

decentralized when we talk about Radical and we

11:35

fully recognize that of course it is it's

11:37

a decentralized tool and how developers started using

11:44

it is through a decentralized workflow called email

11:47

so the Git core team and the Linux

11:50

team use email lists for collaborating through Git

11:57

and so email can be one Forge and

12:01

that the like step after that was SourceHUD

12:06

which is an email based Forge where you

12:09

get a website where things can be hosted

12:12

and you can see the emails coming in

12:15

and discussions.

12:17

GitHub is another GitForge which is also a

12:22

platform and that's what people are most familiar

12:27

with as a Forge.

12:29

Other Forges now exist such as Codeburg and

12:34

also Tangled on the Approto protocol if people

12:38

are familiar with Approto and Newsguy.

12:43

GitLab another Forge yeah so okay so I'm

12:48

coming from the perspective of like peer-to

12:50

-peer space and there's tons of different people

12:52

coming from a lot of different spaces can

12:53

we go back like a little bit to

12:55

the basics I think anyone working with code

12:57

has encountered like Git has encountered repositories and

13:02

have heard about Forges but what actually is

13:05

a Forge?

13:06

Yeah yeah exactly so it's I guess it's

13:09

a home for collaboration so Git gives you

13:14

the commits and files so blobs, treats, commits

13:20

that allows you to version control your code

13:25

over time but as humans we have lots

13:29

of other ways that we collaborate and that's

13:33

where we see things like issues or task

13:36

trackers or discussions on changes identifying as someone

13:44

who collaborates on these Git repositories that's I

13:50

think that's where Forges bring or like yeah

13:55

yeah they paint the picture a little bit

13:57

more on top of Git.

14:00

And in comparison to like something like CRDTs

14:03

like we have this space that's become really

14:07

really popular lately with Local First and all

14:11

of that and CRDTs are a common means

14:13

of facilitating collaboration like what's the differentiation there

14:17

between Forges and CRDTs?

14:20

I'll let Lorenz take it.

14:23

So I think that CRDTs are a technology

14:28

and a definition of how a data structure

14:33

should work and what features a data structure

14:35

should have and you can build something like

14:40

a Forge which is a little more abstract

14:43

concept like a feature set of things that

14:46

people want to do so you approach you

14:49

can approach it from two sides you can

14:50

say okay what does the user want to

14:52

do okay they want to do code review

14:53

they want to discuss the changes and then

14:56

the CRDT is a bit on is a

14:58

bit of technology that can enable this and

15:02

then yes what Radical actually does is it

15:05

implements a Forge based on top of CRDTs

15:09

so many of the things in Radical that

15:12

we talk about like patches and issues are

15:15

implemented as CRDTs so the underlying structure still

15:19

is a CRDT but it is not critical

15:23

for the user to know that when they

15:25

open a patch there will be an operation

15:27

on the CRDT that's abstracted away.

15:31

Yeah to analogize it would be like asking

15:36

what's the difference between a page rank and

15:40

a web search or like a search engine

15:43

so page rank is just an algorithm and

15:47

a search engine can like bring other features

15:50

to the table.

15:52

Yeah so we were on the topic of

15:55

like why and so the why enters into

16:01

the space now and then we kind of

16:03

like moved into what actually is Radical.

16:08

I have an idea of bringing us back

16:11

a bit here to where we were before

16:13

talking about the different Forges and other solutions

16:17

in this space and we talked about a

16:20

bunch of those and you can you can

16:23

place them on a line and you can

16:25

think about okay how centralized are they and

16:28

I think we have like peak centralization with

16:32

GitHub and then you can place the others

16:36

right and then we have this concept of

16:39

federation where as there are a few different

16:44

ways of how to achieve federation but usually

16:47

you have multiple servers and then the user

16:50

logs into one of these servers and then

16:52

there's data being federated between the servers so

16:55

all of these solutions which includes Tangled on

17:01

AT Proto and which includes the work towards

17:04

federation in Forge Joe I would put them

17:08

in the middle.

17:11

Email also yes you're very right to point

17:13

that out email is also of that kind

17:16

you communicate your email server and then the

17:19

emails are replicated and then we have another

17:24

category where Radical falls into which is basically

17:28

where there are no servers there are just

17:31

nodes in the network and they sync in

17:33

a peer-to-peer manner yeah and there

17:37

aren't really any other competitors in a sense

17:41

or any other projects that are currently ambitious

17:45

and as active as we are to develop

17:48

a really peer-to-peer Git layer.

17:53

And I have so many questions in this

17:56

regard I'm so curious and I've been hearing

17:59

ever since I heard about Radical which was

18:01

about two years ago now I've been wanting

18:04

to figure out a little bit more to

18:08

start from the perspective of why is it

18:10

important to do it peer-to-peer in

18:12

this setting like what makes the big difference

18:15

here and then how do you enable those

18:18

peer-to-peer connections?

18:19

So I think it's important in general to

18:23

have a technology that works in this local

18:27

first and peer-to-peer manner because it

18:30

puts all the power into the user or

18:34

at least very very close to the user

18:36

they control their own hardware there is no

18:39

central authority that tells them when to log

18:42

in or whether their account is blocked or

18:45

not and it is a technology that enables

18:49

this completely decentralized setting where you know I

18:54

join Funkfeuer which is an association of people

18:59

that put Wi-Fi antennas and on their

19:03

roofs and then they might make direct peer

19:06

-to-peer connections if you need internet access

19:10

to let's say a data center in order

19:13

to use your forge then well you're tied

19:16

to this access but with Radical it will

19:19

just work in such a completely partitioned part

19:24

of the of the internet just as well

19:27

for example if Fintan and me work in

19:31

a room and are logged into the same

19:33

Wi-Fi then we can just directly exchange

19:38

information over Radical and we don't need to

19:40

go out to a data center and so

19:43

on so we are immediately much more resilient

19:46

and much more sovereign than with these other

19:49

technologies.

19:50

It enables this routing agnostic perspective where you

19:54

can route over different transport layers it sounds

19:57

like could you use mesh, Wi-Fi, Bluetooth,

20:00

sneaker net whatever kind of here?

20:02

Yeah I have to admit that we are

20:04

currently using TCP transport so we are a

20:09

bit limited in that regard but we could

20:12

extend so that's a limitation of the current

20:16

implementation but not out of the protocol design

20:19

so the data structures that arise from the

20:22

sync process they work even if you you

20:26

know transfer via sneaker net or whatever but

20:30

the current implementation expects to talk IP and

20:34

TCP.

20:35

I had a previous conversation with IRO and

20:38

we talked a lot about map traversal or

20:40

hole punching to establish these peer-to-peer

20:43

connections.

20:45

How do you go about that?

20:49

We know about IRO, we are actually in

20:54

loose contact with them and we are really

20:58

watching the awesome work they are doing and

21:01

we are thinking of at least allowing connections

21:07

via IRO to in a like a testing

21:12

phase.

21:13

It lines up really well on like the

21:17

the cryptography of it so in radical nodes

21:21

are identified by an edwards 25519 key and

21:25

the same is true for IRO so we

21:28

might get the direct correspondence between IRO endpoints

21:32

and and a radical node ids so it

21:36

all looks it all looks really nice and

21:38

they would give us the hole punching capability

21:41

which we don't have currently.

21:44

But it's an ongoing process and we're definitely

21:50

eager to experiment more.

21:52

And this is actually we're getting into an

21:55

area that has been a big part of

21:57

my research in the past which is this

22:01

what's starting to emerge is kind of an

22:03

ecology of protocols from previous years like 10

22:08

years ago a lot of projects were trying

22:11

to build the entire solution on their own

22:14

which meant rebuilding the same wheels over and

22:17

over but now these kind of protocols are

22:21

entering more of a modular form of design

22:25

so it sounds like you're solving a quite

22:27

a specific part of the puzzle piece of

22:32

peer-to-peer networking and specifically for git.

22:36

What is like where do you see yourself

22:39

and what is your solution more concretely?

22:42

Yeah that's a great question and I do

22:46

hearken back to when I started a phrase

22:49

that was thrown around was like protocols not

22:52

platforms.

22:55

So yeah I guess where we're trying to

23:00

fit in is building the protocol on top

23:04

of git for collaboration and as we spoke

23:11

before we're talking about we're talking about it

23:14

in a self-sovereign way we also fit

23:18

into this local first even offline first scenario

23:24

where you can hop on a plane still

23:27

work on your collaboration not just your code

23:31

so I can like reply to issues reply

23:35

to patch comments and then come back online

23:38

later and sync up with the network so

23:43

yes putting that protocol first and hopefully making

23:48

it repeatable so that people can come and

23:51

boost the ecosystem with other implementations in the

23:55

future I think so

24:05

I'm also thinking like you mentioned in the

24:08

beginning like a question that a lot of

24:10

people have asked you is like okay so

24:13

why are you doing this git is already

24:15

decentralized like what do you say when people

24:19

ask that like where do you because okay

24:26

I think it boils down to decentralization be

24:28

a very fuzzy term because there's so many

24:32

forms of decentralization and federation and peer-to

24:35

-peer are often dumped in as it clumps

24:37

some under decentralization is it there in the

24:42

distinction that by enabling what or by doing

24:49

what you're doing with git you're kind of

24:51

bringing it to a new level of decentralization

24:54

my thoughts here are that we are we

24:59

have realized and I think many people will

25:02

agree that software engineering and managing a software

25:07

project being open source or maybe even not

25:12

is not just about git commits and and

25:17

tags and so on there's a lot that

25:20

works on top like code review and discussions

25:24

about the code and tasks and so on

25:27

and these are just fundamentally not part of

25:32

git so here we compete in a sense

25:35

with these other forges so git is decentralized

25:38

in the aspect that you can you can

25:42

put the repository on any computer and if

25:45

you set those computers up well enough then

25:48

you can have this network of git repositories

25:51

and that is decentralized but you're decentralized only

25:55

at the level of git features which aren't

25:58

really enough to do all the things you

26:01

want to do as alluded to before so

26:04

this is one aspect you you need more

26:07

than just git and you also want it

26:10

to be decentralized that at least we do

26:12

and then one other thing that comes to

26:16

mind is that for using git in a

26:19

decentralized way you have to make careful configuration

26:24

like you have to share these urls of

26:27

all the murals of your repository with everyone

26:30

so if five people want to want to

26:33

collaborate on a git repository in a truly

26:35

decentralized way then each of these five persons

26:38

has to note down the git url of

26:42

all the four others and we make an

26:45

improvement here because we have a globally consistent

26:50

way to address git repositories and that's something

26:55

that git itself doesn't have there is no

26:57

standard way to say this repository which is

27:01

agnostic over various locations of the repository that's

27:06

something that we add and note that this

27:08

is not centralized so there's not a global

27:10

registry where you register the repository but this

27:15

is done in a decentralized way are you

27:19

using dhts like distributed hash tables no we're

27:24

not using dhts currently we do node discovery

27:28

via a gossip network so at first you

27:33

join the network usually via what we call

27:36

a process of bootstrapping so you first have

27:39

to know some node in the network and

27:42

then from then on the nodes will give

27:45

out addresses of other nodes that they have

27:47

found on the network and then very quickly

27:49

you build an address book of other nodes

27:54

awesome so i'm wondering now like you talked

27:57

a bit about like the importance of enabling

28:01

the collaboration aspects in connection to git and

28:05

we also mentioned platforms and stuff like that

28:10

where what is like dream scenario where do

28:16

y'all want to go like what is

28:18

the roadmap what is a future that you

28:21

envision when radical is like a project that's

28:25

complete fully because i guess it's also still

28:27

in development yeah um what does that look

28:32

like for you that's a it's an interesting

28:34

question because there's a question of when is

28:38

it a software project ever done and i

28:43

actually it reminds me of a post by

28:45

moxie um one of the founders of signal

28:51

and in it they write about kind of

28:55

like envy or jealousy of musicians where it's

28:58

like you release a piece of music and

29:00

then it's kind of just done and you're

29:02

you're done i mean you can always like

29:05

remaster edit remix whatever push software just like

29:12

it feels infinite it can go on forever

29:15

but yeah but then yeah is it mostly

29:24

like scope creep or is it like is

29:28

it because there's maintenance what is the main

29:31

thing that makes it infinite do you think

29:34

maintenance does make it feel infinite the most

29:38

but of course i think what makes it

29:40

feel infinite is just like the power of

29:43

ideas and um yeah maybe scope creep is

29:48

kind of like a way of describing that

29:50

but i guess it's all about like constant

29:55

improvements like git was