1
00:00:25,780 --> 00:00:32,560
Hello and welcome to today's episode of SolarCast

2
00:00:32,560 --> 00:00:37,760
and with us today we have two developers

3
00:00:37,760 --> 00:00:40,360
and the core maintainers from Radical.

4
00:00:40,700 --> 00:00:46,140
Unfortunately in this episode today my main recording

5
00:00:46,140 --> 00:00:49,860
microphone broke down so what you'll be hearing

6
00:00:49,860 --> 00:00:54,080
is my backup microphone and luckily that was

7
00:00:54,080 --> 00:00:57,740
still going but the audio quality is maybe

8
00:00:57,740 --> 00:01:00,980
not up to par for the usual episode.

9
00:01:01,980 --> 00:01:05,280
Just a forewarning but I think it's still

10
00:01:05,280 --> 00:01:05,800
good enough.

11
00:01:05,920 --> 00:01:07,760
I did my best to edit it so

12
00:01:07,760 --> 00:01:10,220
it will be a pleasant enough conversation.

13
00:01:11,160 --> 00:01:14,740
And the conversation that we'll be hearing will

14
00:01:14,740 --> 00:01:17,160
be going through a lot of different aspects

15
00:01:17,160 --> 00:01:19,920
and you'll be kind of with me on

16
00:01:19,920 --> 00:01:23,860
the learning journey of what it means to

17
00:01:23,860 --> 00:01:28,320
do peer to peer and local first Git

18
00:01:28,320 --> 00:01:31,500
collaborations and forages.

19
00:01:32,120 --> 00:01:35,700
So if you are as curious as I

20
00:01:35,700 --> 00:01:40,800
am and was then tag along and let's

21
00:01:40,800 --> 00:01:42,060
dive in.

22
00:01:47,680 --> 00:01:50,440
Thank you so much for joining today for

23
00:01:50,440 --> 00:01:55,280
this episode of SolarCast and with us here

24
00:01:55,280 --> 00:01:57,800
today for those of you who cannot see

25
00:01:57,800 --> 00:02:02,820
us is Lawrence and Fintan from the Radical

26
00:02:02,820 --> 00:02:03,460
project.

27
00:02:04,660 --> 00:02:10,380
Radical.xyz. So to get to know y

28
00:02:10,380 --> 00:02:12,520
'all a little bit would it be okay

29
00:02:12,520 --> 00:02:14,860
that you tell us a little bit about

30
00:02:14,860 --> 00:02:17,640
how you entered Radical and what your backgrounds

31
00:02:17,640 --> 00:02:18,040
are?

32
00:02:18,420 --> 00:02:23,840
Yeah so mine was like a long winding

33
00:02:23,840 --> 00:02:30,720
journey of getting to work on like functional

34
00:02:30,720 --> 00:02:36,840
programming during college times, working remote for a

35
00:02:36,840 --> 00:02:38,560
company that actually used Haskell.

36
00:02:39,200 --> 00:02:41,300
So yeah I became enamored with Haskell in

37
00:02:41,300 --> 00:02:46,760
particular during my university days and that eventually

38
00:02:46,760 --> 00:02:48,560
led me to OSCoin.

39
00:02:50,380 --> 00:02:54,180
And that happens to be the kind of

40
00:02:54,180 --> 00:02:56,820
like roots of Radical so to speak.

41
00:02:58,440 --> 00:03:01,960
So we kept in touch and I was

42
00:03:01,960 --> 00:03:03,440
interested in the project.

43
00:03:04,180 --> 00:03:06,900
It was kind of the idea of OSCoin

44
00:03:06,900 --> 00:03:11,040
was to try and bring sustainability to open

45
00:03:11,040 --> 00:03:15,100
source projects through a kind of like weighted

46
00:03:15,100 --> 00:03:23,060
graph system, cryptocurrency and basically if you're dependent

47
00:03:23,060 --> 00:03:27,820
upon a lot then your project would theoretically

48
00:03:27,820 --> 00:03:29,800
get rewarded a lot.

49
00:03:30,500 --> 00:03:34,420
So there's this classic xkcd comic with the

50
00:03:34,420 --> 00:03:36,560
stack of blocks and we have the tiny

51
00:03:36,560 --> 00:03:39,220
little block holding up everything in the corner.

52
00:03:40,620 --> 00:03:43,120
So in theory that block would be getting

53
00:03:43,120 --> 00:03:44,840
a lot of funding to make sure that

54
00:03:44,840 --> 00:03:46,820
the whole stack doesn't collapse.

55
00:03:47,760 --> 00:03:51,520
They realized that not only is funding a

56
00:03:51,520 --> 00:03:56,340
problem but also the like collaboration on code

57
00:03:56,340 --> 00:03:59,300
artifacts and repositories seem to be a problem

58
00:03:59,300 --> 00:04:05,920
as well because it's rooted in centralized companies

59
00:04:05,920 --> 00:04:08,800
and centralized countries let's say.

60
00:04:09,200 --> 00:04:13,500
GitHub being based in America under Microsoft.

61
00:04:15,720 --> 00:04:19,279
So early indications of what we're seeing now

62
00:04:19,279 --> 00:04:24,760
in this like shift towards more sovereign solutions.

63
00:04:25,120 --> 00:04:27,180
So like trying to break away from the

64
00:04:27,180 --> 00:04:27,520
US.

65
00:04:30,540 --> 00:04:33,900
Yeah and it was right about then that

66
00:04:33,900 --> 00:04:34,440
I joined.

67
00:04:34,600 --> 00:04:36,360
That project was kind of like the first

68
00:04:36,360 --> 00:04:41,800
iteration and after that it was a Rust

69
00:04:41,800 --> 00:04:48,300
project and it was the second iteration of

70
00:04:48,300 --> 00:04:49,780
what we call Radical.

71
00:04:49,780 --> 00:04:53,400
And then the name was Radical Link and

72
00:04:53,400 --> 00:04:56,720
instead of a kind of Lisp machine it

73
00:04:56,720 --> 00:04:57,900
was kind of back to basics.

74
00:04:58,600 --> 00:05:01,120
We've got Git, why don't we build on

75
00:05:01,120 --> 00:05:01,620
top of it.

76
00:05:03,080 --> 00:05:06,460
So that's around when I joined about six

77
00:05:06,460 --> 00:05:07,600
and a half years ago.

78
00:05:09,380 --> 00:05:11,540
I've been working on things since then.

79
00:05:12,260 --> 00:05:16,480
I can get into the why a bit

80
00:05:16,480 --> 00:05:18,400
more but maybe I'll hand it over to

81
00:05:18,400 --> 00:05:21,340
Lorenz to kind of give his perspective of

82
00:05:21,340 --> 00:05:23,680
why he got into this.

83
00:05:24,380 --> 00:05:25,260
Thank you Fintan.

84
00:05:26,680 --> 00:05:28,660
Hello to all our listeners.

85
00:05:29,100 --> 00:05:32,740
I am Lorenz and I joined the project

86
00:05:32,740 --> 00:05:34,040
quite a bit later.

87
00:05:34,320 --> 00:05:36,800
So I was not around in this OS

88
00:05:36,800 --> 00:05:39,480
coin phase and the let's say the earlier

89
00:05:39,480 --> 00:05:43,520
explorations and iterations of the project.

90
00:05:43,760 --> 00:05:47,380
I joined quite a bit later just as

91
00:05:47,380 --> 00:05:49,540
a open source contributor.

92
00:05:51,320 --> 00:05:55,080
So I first started contributing just out of

93
00:05:55,080 --> 00:05:58,100
interest because I liked the idea.

94
00:05:58,400 --> 00:06:03,380
I was actually as GitHub got acquired by

95
00:06:03,380 --> 00:06:07,640
Microsoft a few years back I started wondering

96
00:06:07,640 --> 00:06:12,980
okay like where is this going and I

97
00:06:12,980 --> 00:06:17,680
figured why aren't there more projects that work

98
00:06:17,680 --> 00:06:21,140
on the decentralization aspect and making the decentralized

99
00:06:21,140 --> 00:06:25,800
components of Git which are really strong more

100
00:06:25,800 --> 00:06:27,360
usable and more user-friendly.

101
00:06:28,440 --> 00:06:32,300
Because the reason is that the underlying situation

102
00:06:32,300 --> 00:06:35,740
is that Git actually is very decentralized but

103
00:06:35,740 --> 00:06:39,520
the dynamics in the real world have unfolded

104
00:06:39,520 --> 00:06:41,220
in a way that we see lots of

105
00:06:41,220 --> 00:06:44,120
concentration so we see lots of people gravitating

106
00:06:44,120 --> 00:06:47,840
towards GitHub big part of the open source

107
00:06:47,840 --> 00:06:51,500
ecosystem and a few other forges but GitHub

108
00:06:51,500 --> 00:06:52,800
is the biggest by far.

109
00:06:54,360 --> 00:06:56,760
So at that time I didn't even really

110
00:06:56,760 --> 00:06:57,880
know about Radical.

111
00:06:59,080 --> 00:07:04,200
Blockchains were more prominent but I had a

112
00:07:04,200 --> 00:07:09,420
few questions and reservations there so I didn't

113
00:07:09,420 --> 00:07:14,260
really engage much in these projects but then

114
00:07:14,260 --> 00:07:18,040
at some point I learned that Radical actually

115
00:07:18,040 --> 00:07:22,100
switched the implementation to Rust and switched to

116
00:07:22,100 --> 00:07:24,880
one that is not dependent on the blockchain

117
00:07:24,880 --> 00:07:28,220
but is more open to like opt-in

118
00:07:28,220 --> 00:07:30,380
in the future or build on top but

119
00:07:30,380 --> 00:07:32,900
certainly not in the core of it as

120
00:07:32,900 --> 00:07:33,960
it was previously.

121
00:07:34,280 --> 00:07:37,620
In fact the situation that Fintan mentioned before

122
00:07:37,620 --> 00:07:41,100
about the graph to distribute the resources and

123
00:07:41,100 --> 00:07:43,940
funds among open source communities this is a

124
00:07:43,940 --> 00:07:46,080
project that spun out into so this still

125
00:07:46,080 --> 00:07:49,160
exists it's called DRIPS and we say it's

126
00:07:49,160 --> 00:07:52,600
our sister project but that kind of was

127
00:07:52,600 --> 00:07:54,820
realized that it might be better to split

128
00:07:54,820 --> 00:07:56,820
these two aspects and I do agree.

129
00:07:57,800 --> 00:08:01,160
So after that period I decided okay now

130
00:08:01,160 --> 00:08:04,340
is the time that I start contributing to

131
00:08:04,340 --> 00:08:06,060
one of these projects and then I started

132
00:08:06,060 --> 00:08:07,340
contributing to Radical.

133
00:08:07,820 --> 00:08:11,160
As usual you know you find those things

134
00:08:11,160 --> 00:08:14,380
that you think could be improved you start

135
00:08:14,380 --> 00:08:17,980
with smaller ones then you somehow understand the

136
00:08:17,980 --> 00:08:20,700
code base you find a few bigger ones

137
00:08:20,700 --> 00:08:24,840
and that's how I grew into a more

138
00:08:24,840 --> 00:08:29,520
senior contributor to the project and then at

139
00:08:29,520 --> 00:08:32,679
some point I was asked whether I would

140
00:08:32,679 --> 00:08:36,299
like to maintain the project together with Fintan

141
00:08:36,299 --> 00:08:40,840
and Adrian and yeah that's what I'm doing

142
00:08:40,840 --> 00:08:41,240
now.

143
00:08:41,960 --> 00:08:45,320
You mentioned something there as usual and then

144
00:08:45,320 --> 00:08:48,020
you describe this process of like finding these

145
00:08:48,020 --> 00:08:49,940
different projects that you want to contribute to.

146
00:08:50,160 --> 00:08:53,020
When you say as usual who are you

147
00:08:53,020 --> 00:08:55,440
talking about here like as usual?

148
00:08:55,680 --> 00:08:58,400
Yeah it's probably colored by my own view.

149
00:08:59,220 --> 00:09:02,080
I would say as usual for really an

150
00:09:02,080 --> 00:09:05,200
open source enthusiast you know the kind of

151
00:09:05,200 --> 00:09:07,780
people that use open source software and if

152
00:09:07,780 --> 00:09:10,540
they see an issue or something that could

153
00:09:10,540 --> 00:09:13,340
be improved they really go clone the code

154
00:09:13,340 --> 00:09:16,600
figure it out do the fix and so

155
00:09:16,600 --> 00:09:20,380
on and yeah I have done that in

156
00:09:20,380 --> 00:09:22,920
like a handful projects those that I use

157
00:09:22,920 --> 00:09:25,220
personally and I like to do that when

158
00:09:25,220 --> 00:09:27,940
possible but of course it's not always possible

159
00:09:27,940 --> 00:09:30,480
to start with when the software is not

160
00:09:30,480 --> 00:09:30,780
free.

161
00:09:31,180 --> 00:09:34,600
So I've been having a lot of conversations

162
00:09:34,600 --> 00:09:38,580
with some friends recently who are new in

163
00:09:38,580 --> 00:09:40,140
the open source space and they want to

164
00:09:40,140 --> 00:09:43,640
start exploring and I think one of the

165
00:09:43,640 --> 00:09:45,380
challenges is kind of what you touched upon

166
00:09:45,380 --> 00:09:47,780
here is like finding what project to contribute

167
00:09:47,780 --> 00:09:51,980
to and so we touched on it or

168
00:09:51,980 --> 00:09:56,220
so why did you find that Radical was

169
00:09:56,220 --> 00:09:58,660
the project worthwhile to contribute?

170
00:09:58,860 --> 00:10:02,700
I think that Radical is pretty far out

171
00:10:02,700 --> 00:10:06,000
there in terms of ambition and also in

172
00:10:06,000 --> 00:10:12,380
terms of challenge in bringing Git back closer

173
00:10:12,380 --> 00:10:14,620
a bit to its roots or at least

174
00:10:14,620 --> 00:10:18,520
how we see it bringing this decentralization aspect

175
00:10:18,520 --> 00:10:18,920
back.

176
00:10:19,140 --> 00:10:22,580
So there are quite a few open source

177
00:10:22,580 --> 00:10:25,460
projects out there in terms of different forges

178
00:10:25,460 --> 00:10:29,840
for example many many will know Codeburg and

179
00:10:29,840 --> 00:10:34,900
that they use ForgeJoe others might know SourceHUD

180
00:10:37,500 --> 00:10:42,060
but as far as I know Codeburg is

181
00:10:42,060 --> 00:10:45,200
an association so they are structured as an

182
00:10:45,200 --> 00:10:48,740
association registered in Germany they invite new members

183
00:10:48,740 --> 00:10:51,980
to join and the core offering is that

184
00:10:51,980 --> 00:10:55,760
they host infrastructure for you to collaborate on

185
00:10:55,760 --> 00:10:58,620
open source code open source software free software.

186
00:10:59,300 --> 00:11:01,160
And they're kind of like GitHub but open

187
00:11:01,160 --> 00:11:01,520
source?

188
00:11:02,360 --> 00:11:06,160
I mean I wouldn't go that far I

189
00:11:06,160 --> 00:11:10,460
wouldn't say they are like GitHub because GitHub

190
00:11:10,460 --> 00:11:13,740
is yeah is a bit of a different

191
00:11:13,740 --> 00:11:17,880
topic I guess but Fintan yeah please take

192
00:11:17,880 --> 00:11:18,280
it away.

193
00:11:18,680 --> 00:11:21,360
Maybe it's good to just clarify what like

194
00:11:21,360 --> 00:11:27,360
a GitForge means in general so most people

195
00:11:27,360 --> 00:11:30,540
my favorite comment is like Git it's already

196
00:11:30,540 --> 00:11:35,060
decentralized when we talk about Radical and we

197
00:11:35,060 --> 00:11:37,620
fully recognize that of course it is it's

198
00:11:37,620 --> 00:11:44,120
a decentralized tool and how developers started using

199
00:11:44,120 --> 00:11:47,160
it is through a decentralized workflow called email

200
00:11:47,160 --> 00:11:50,680
so the Git core team and the Linux

201
00:11:50,680 --> 00:11:56,440
team use email lists for collaborating through Git

202
00:11:57,160 --> 00:12:01,920
and so email can be one Forge and

203
00:12:01,920 --> 00:12:06,380
that the like step after that was SourceHUD

204
00:12:06,380 --> 00:12:09,820
which is an email based Forge where you

205
00:12:09,820 --> 00:12:12,860
get a website where things can be hosted

206
00:12:12,860 --> 00:12:15,060
and you can see the emails coming in

207
00:12:15,060 --> 00:12:15,740
and discussions.

208
00:12:17,700 --> 00:12:22,840
GitHub is another GitForge which is also a

209
00:12:22,840 --> 00:12:27,640
platform and that's what people are most familiar

210
00:12:27,640 --> 00:12:29,080
with as a Forge.

211
00:12:29,980 --> 00:12:34,600
Other Forges now exist such as Codeburg and

212
00:12:34,600 --> 00:12:38,820
also Tangled on the Approto protocol if people

213
00:12:38,820 --> 00:12:41,220
are familiar with Approto and Newsguy.

214
00:12:43,440 --> 00:12:48,520
GitLab another Forge yeah so okay so I'm

215
00:12:48,520 --> 00:12:50,140
coming from the perspective of like peer-to

216
00:12:50,140 --> 00:12:52,100
-peer space and there's tons of different people

217
00:12:52,100 --> 00:12:53,900
coming from a lot of different spaces can

218
00:12:53,900 --> 00:12:55,660
we go back like a little bit to

219
00:12:55,660 --> 00:12:57,840
the basics I think anyone working with code

220
00:12:57,840 --> 00:13:02,940
has encountered like Git has encountered repositories and

221
00:13:02,940 --> 00:13:05,700
have heard about Forges but what actually is

222
00:13:05,700 --> 00:13:06,300
a Forge?

223
00:13:06,660 --> 00:13:09,780
Yeah yeah exactly so it's I guess it's

224
00:13:09,780 --> 00:13:14,820
a home for collaboration so Git gives you

225
00:13:14,820 --> 00:13:20,340
the commits and files so blobs, treats, commits

226
00:13:20,340 --> 00:13:25,220
that allows you to version control your code

227
00:13:25,220 --> 00:13:29,660
over time but as humans we have lots

228
00:13:29,660 --> 00:13:33,120
of other ways that we collaborate and that's

229
00:13:33,120 --> 00:13:36,940
where we see things like issues or task

230
00:13:36,940 --> 00:13:44,500
trackers or discussions on changes identifying as someone

231
00:13:44,500 --> 00:13:50,540
who collaborates on these Git repositories that's I

232
00:13:50,540 --> 00:13:55,120
think that's where Forges bring or like yeah

233
00:13:55,120 --> 00:13:57,280
yeah they paint the picture a little bit

234
00:13:57,280 --> 00:13:59,200
more on top of Git.

235
00:14:00,680 --> 00:14:03,460
And in comparison to like something like CRDTs

236
00:14:03,460 --> 00:14:07,720
like we have this space that's become really

237
00:14:07,720 --> 00:14:11,280
really popular lately with Local First and all

238
00:14:11,280 --> 00:14:13,700
of that and CRDTs are a common means

239
00:14:13,700 --> 00:14:17,480
of facilitating collaboration like what's the differentiation there

240
00:14:17,480 --> 00:14:19,160
between Forges and CRDTs?

241
00:14:20,480 --> 00:14:22,120
I'll let Lorenz take it.

242
00:14:23,340 --> 00:14:28,440
So I think that CRDTs are a technology

243
00:14:28,440 --> 00:14:33,040
and a definition of how a data structure

244
00:14:33,040 --> 00:14:35,520
should work and what features a data structure

245
00:14:35,520 --> 00:14:40,820
should have and you can build something like

246
00:14:40,820 --> 00:14:43,580
a Forge which is a little more abstract

247
00:14:43,580 --> 00:14:46,320
concept like a feature set of things that

248
00:14:46,320 --> 00:14:49,020
people want to do so you approach you

249
00:14:49,020 --> 00:14:50,820
can approach it from two sides you can

250
00:14:50,820 --> 00:14:52,320
say okay what does the user want to

251
00:14:52,320 --> 00:14:53,980
do okay they want to do code review

252
00:14:53,980 --> 00:14:56,400
they want to discuss the changes and then

253
00:14:56,400 --> 00:14:58,960
the CRDT is a bit on is a

254
00:14:58,960 --> 00:15:02,440
bit of technology that can enable this and

255
00:15:02,440 --> 00:15:05,900
then yes what Radical actually does is it

256
00:15:05,900 --> 00:15:09,840
implements a Forge based on top of CRDTs

257
00:15:09,840 --> 00:15:12,740
so many of the things in Radical that

258
00:15:12,740 --> 00:15:15,800
we talk about like patches and issues are

259
00:15:15,800 --> 00:15:19,500
implemented as CRDTs so the underlying structure still

260
00:15:19,500 --> 00:15:23,040
is a CRDT but it is not critical

261
00:15:23,040 --> 00:15:25,840
for the user to know that when they

262
00:15:25,840 --> 00:15:27,660
open a patch there will be an operation

263
00:15:27,660 --> 00:15:30,360
on the CRDT that's abstracted away.

264
00:15:31,840 --> 00:15:36,200
Yeah to analogize it would be like asking

265
00:15:36,200 --> 00:15:40,340
what's the difference between a page rank and

266
00:15:40,340 --> 00:15:43,800
a web search or like a search engine

267
00:15:43,800 --> 00:15:47,480
so page rank is just an algorithm and

268
00:15:47,480 --> 00:15:50,180
a search engine can like bring other features

269
00:15:50,180 --> 00:15:50,960
to the table.

270
00:15:52,280 --> 00:15:55,620
Yeah so we were on the topic of

271
00:15:55,620 --> 00:16:01,140
like why and so the why enters into

272
00:16:01,140 --> 00:16:03,600
the space now and then we kind of

273
00:16:03,600 --> 00:16:06,640
like moved into what actually is Radical.

274
00:16:08,740 --> 00:16:11,640
I have an idea of bringing us back

275
00:16:11,640 --> 00:16:13,340
a bit here to where we were before

276
00:16:13,340 --> 00:16:17,140
talking about the different Forges and other solutions

277
00:16:17,140 --> 00:16:20,440
in this space and we talked about a

278
00:16:20,440 --> 00:16:23,180
bunch of those and you can you can

279
00:16:23,180 --> 00:16:25,080
place them on a line and you can

280
00:16:25,080 --> 00:16:28,880
think about okay how centralized are they and

281
00:16:28,880 --> 00:16:32,580
I think we have like peak centralization with

282
00:16:32,580 --> 00:16:36,500
GitHub and then you can place the others

283
00:16:36,500 --> 00:16:39,500
right and then we have this concept of

284
00:16:39,500 --> 00:16:44,900
federation where as there are a few different

285
00:16:44,900 --> 00:16:47,260
ways of how to achieve federation but usually

286
00:16:47,260 --> 00:16:50,420
you have multiple servers and then the user

287
00:16:50,420 --> 00:16:52,560
logs into one of these servers and then

288
00:16:52,560 --> 00:16:55,820
there's data being federated between the servers so

289
00:16:55,820 --> 00:17:01,120
all of these solutions which includes Tangled on

290
00:17:01,120 --> 00:17:04,760
AT Proto and which includes the work towards

291
00:17:04,760 --> 00:17:08,260
federation in Forge Joe I would put them

292
00:17:08,260 --> 00:17:09,079
in the middle.

293
00:17:11,160 --> 00:17:13,800
Email also yes you're very right to point

294
00:17:13,800 --> 00:17:16,099
that out email is also of that kind

295
00:17:16,099 --> 00:17:19,420
you communicate your email server and then the

296
00:17:19,420 --> 00:17:24,040
emails are replicated and then we have another

297
00:17:24,040 --> 00:17:28,640
category where Radical falls into which is basically

298
00:17:28,640 --> 00:17:31,300
where there are no servers there are just

299
00:17:31,300 --> 00:17:33,660
nodes in the network and they sync in

300
00:17:33,660 --> 00:17:37,960
a peer-to-peer manner yeah and there

301
00:17:37,960 --> 00:17:41,520
aren't really any other competitors in a sense

302
00:17:41,520 --> 00:17:45,620
or any other projects that are currently ambitious

303
00:17:45,620 --> 00:17:48,780
and as active as we are to develop

304
00:17:48,780 --> 00:17:52,140
a really peer-to-peer Git layer.

305
00:17:53,860 --> 00:17:56,420
And I have so many questions in this

306
00:17:56,420 --> 00:17:59,160
regard I'm so curious and I've been hearing

307
00:17:59,160 --> 00:18:01,000
ever since I heard about Radical which was

308
00:18:01,000 --> 00:18:04,840
about two years ago now I've been wanting

309
00:18:04,840 --> 00:18:08,000
to figure out a little bit more to

310
00:18:08,000 --> 00:18:10,600
start from the perspective of why is it

311
00:18:10,600 --> 00:18:12,320
important to do it peer-to-peer in

312
00:18:12,320 --> 00:18:15,880
this setting like what makes the big difference

313
00:18:15,880 --> 00:18:18,160
here and then how do you enable those

314
00:18:18,160 --> 00:18:19,100
peer-to-peer connections?

315
00:18:19,500 --> 00:18:23,300
So I think it's important in general to

316
00:18:23,300 --> 00:18:27,380
have a technology that works in this local

317
00:18:27,380 --> 00:18:30,020
first and peer-to-peer manner because it

318
00:18:30,020 --> 00:18:34,200
puts all the power into the user or

319
00:18:34,200 --> 00:18:36,340
at least very very close to the user

320
00:18:36,340 --> 00:18:39,560
they control their own hardware there is no

321
00:18:39,560 --> 00:18:42,880
central authority that tells them when to log

322
00:18:42,880 --> 00:18:45,580
in or whether their account is blocked or

323
00:18:45,580 --> 00:18:49,420
not and it is a technology that enables

324
00:18:49,420 --> 00:18:54,120
this completely decentralized setting where you know I

325
00:18:54,120 --> 00:18:59,300
join Funkfeuer which is an association of people

326
00:18:59,300 --> 00:19:03,280
that put Wi-Fi antennas and on their

327
00:19:03,280 --> 00:19:06,320
roofs and then they might make direct peer

328
00:19:06,320 --> 00:19:10,240
-to-peer connections if you need internet access

329
00:19:10,240 --> 00:19:13,220
to let's say a data center in order

330
00:19:13,220 --> 00:19:16,800
to use your forge then well you're tied

331
00:19:16,800 --> 00:19:19,780
to this access but with Radical it will

332
00:19:19,780 --> 00:19:24,700
just work in such a completely partitioned part

333
00:19:24,700 --> 00:19:27,700
of the of the internet just as well

334
00:19:27,700 --> 00:19:31,620
for example if Fintan and me work in

335
00:19:31,620 --> 00:19:33,860
a room and are logged into the same

336
00:19:33,860 --> 00:19:38,280
Wi-Fi then we can just directly exchange

337
00:19:38,280 --> 00:19:40,740
information over Radical and we don't need to

338
00:19:40,740 --> 00:19:43,820
go out to a data center and so

339
00:19:43,820 --> 00:19:46,440
on so we are immediately much more resilient

340
00:19:46,440 --> 00:19:49,860
and much more sovereign than with these other

341
00:19:49,860 --> 00:19:50,480
technologies.

342
00:19:50,920 --> 00:19:54,500
It enables this routing agnostic perspective where you

343
00:19:54,500 --> 00:19:57,200
can route over different transport layers it sounds

344
00:19:57,200 --> 00:19:59,920
like could you use mesh, Wi-Fi, Bluetooth,

345
00:20:00,860 --> 00:20:02,500
sneaker net whatever kind of here?

346
00:20:02,740 --> 00:20:04,960
Yeah I have to admit that we are

347
00:20:04,960 --> 00:20:09,400
currently using TCP transport so we are a

348
00:20:09,400 --> 00:20:12,540
bit limited in that regard but we could

349
00:20:12,540 --> 00:20:16,240
extend so that's a limitation of the current

350
00:20:16,240 --> 00:20:19,560
implementation but not out of the protocol design

351
00:20:19,560 --> 00:20:22,720
so the data structures that arise from the

352
00:20:22,720 --> 00:20:26,340
sync process they work even if you you

353
00:20:26,340 --> 00:20:30,840
know transfer via sneaker net or whatever but

354
00:20:30,840 --> 00:20:34,020
the current implementation expects to talk IP and

355
00:20:34,020 --> 00:20:34,400
TCP.

356
00:20:35,700 --> 00:20:38,220
I had a previous conversation with IRO and

357
00:20:38,220 --> 00:20:40,180
we talked a lot about map traversal or

358
00:20:40,180 --> 00:20:43,560
hole punching to establish these peer-to-peer

359
00:20:43,560 --> 00:20:44,540
connections.

360
00:20:45,300 --> 00:20:49,980
How do you go about that?

361
00:20:49,980 --> 00:20:54,980
We know about IRO, we are actually in

362
00:20:54,980 --> 00:20:58,200
loose contact with them and we are really

363
00:20:58,200 --> 00:21:01,780
watching the awesome work they are doing and

364
00:21:01,780 --> 00:21:07,700
we are thinking of at least allowing connections

365
00:21:07,700 --> 00:21:12,020
via IRO to in a like a testing

366
00:21:12,020 --> 00:21:12,440
phase.

367
00:21:13,460 --> 00:21:17,620
It lines up really well on like the

368
00:21:17,620 --> 00:21:21,360
the cryptography of it so in radical nodes

369
00:21:21,360 --> 00:21:25,420
are identified by an edwards 25519 key and

370
00:21:25,420 --> 00:21:28,260
the same is true for IRO so we

371
00:21:28,900 --> 00:21:32,540
might get the direct correspondence between IRO endpoints

372
00:21:32,540 --> 00:21:36,840
and and a radical node ids so it

373
00:21:36,840 --> 00:21:38,780
all looks it all looks really nice and

374
00:21:38,780 --> 00:21:41,120
they would give us the hole punching capability

375
00:21:41,120 --> 00:21:43,020
which we don't have currently.

376
00:21:44,540 --> 00:21:50,420
But it's an ongoing process and we're definitely

377
00:21:50,420 --> 00:21:52,260
eager to experiment more.

378
00:21:52,940 --> 00:21:55,620
And this is actually we're getting into an

379
00:21:55,620 --> 00:21:57,680
area that has been a big part of

380
00:21:57,680 --> 00:22:01,120
my research in the past which is this

381
00:22:01,120 --> 00:22:03,720
what's starting to emerge is kind of an

382
00:22:03,720 --> 00:22:08,960
ecology of protocols from previous years like 10

383
00:22:08,960 --> 00:22:11,540
years ago a lot of projects were trying

384
00:22:11,540 --> 00:22:14,140
to build the entire solution on their own

385
00:22:14,140 --> 00:22:17,600
which meant rebuilding the same wheels over and

386
00:22:17,600 --> 00:22:21,700
over but now these kind of protocols are

387
00:22:21,700 --> 00:22:25,180
entering more of a modular form of design

388
00:22:25,180 --> 00:22:27,860
so it sounds like you're solving a quite

389
00:22:27,860 --> 00:22:32,460
a specific part of the puzzle piece of

390
00:22:32,460 --> 00:22:35,200
peer-to-peer networking and specifically for git.

391
00:22:36,520 --> 00:22:39,980
What is like where do you see yourself

392
00:22:39,980 --> 00:22:42,400
and what is your solution more concretely?

393
00:22:42,920 --> 00:22:46,480
Yeah that's a great question and I do

394
00:22:46,480 --> 00:22:49,760
hearken back to when I started a phrase

395
00:22:49,760 --> 00:22:52,240
that was thrown around was like protocols not

396
00:22:52,240 --> 00:22:52,840
platforms.

397
00:22:55,480 --> 00:23:00,000
So yeah I guess where we're trying to

398
00:23:00,000 --> 00:23:04,860
fit in is building the protocol on top

399
00:23:04,860 --> 00:23:11,820
of git for collaboration and as we spoke

400
00:23:11,820 --> 00:23:14,920
before we're talking about we're talking about it

401
00:23:14,920 --> 00:23:18,500
in a self-sovereign way we also fit

402
00:23:18,500 --> 00:23:24,720
into this local first even offline first scenario

403
00:23:24,720 --> 00:23:27,960
where you can hop on a plane still

404
00:23:27,960 --> 00:23:31,020
work on your collaboration not just your code

405
00:23:31,020 --> 00:23:35,100
so I can like reply to issues reply

406
00:23:35,100 --> 00:23:38,140
to patch comments and then come back online

407
00:23:38,140 --> 00:23:43,720
later and sync up with the network so

408
00:23:43,720 --> 00:23:48,060
yes putting that protocol first and hopefully making

409
00:23:48,060 --> 00:23:51,280
it repeatable so that people can come and

410
00:23:51,280 --> 00:23:55,560
boost the ecosystem with other implementations in the

411
00:23:55,560 --> 00:24:05,260
future I think so

412
00:24:05,260 --> 00:24:08,900
I'm also thinking like you mentioned in the

413
00:24:08,900 --> 00:24:10,800
beginning like a question that a lot of

414
00:24:10,800 --> 00:24:13,160
people have asked you is like okay so

415
00:24:13,160 --> 00:24:15,440
why are you doing this git is already

416
00:24:15,440 --> 00:24:19,660
decentralized like what do you say when people

417
00:24:19,660 --> 00:24:26,160
ask that like where do you because okay

418
00:24:26,160 --> 00:24:28,740
I think it boils down to decentralization be

419
00:24:28,740 --> 00:24:32,080
a very fuzzy term because there's so many

420
00:24:32,080 --> 00:24:35,380
forms of decentralization and federation and peer-to

421
00:24:35,380 --> 00:24:37,740
-peer are often dumped in as it clumps

422
00:24:37,740 --> 00:24:42,680
some under decentralization is it there in the

423
00:24:42,680 --> 00:24:49,100
distinction that by enabling what or by doing

424
00:24:49,100 --> 00:24:51,840
what you're doing with git you're kind of

425
00:24:51,840 --> 00:24:54,740
bringing it to a new level of decentralization

426
00:24:54,740 --> 00:24:59,340
my thoughts here are that we are we

427
00:24:59,340 --> 00:25:02,320
have realized and I think many people will

428
00:25:02,320 --> 00:25:07,020
agree that software engineering and managing a software

429
00:25:07,020 --> 00:25:12,500
project being open source or maybe even not

430
00:25:12,500 --> 00:25:17,960
is not just about git commits and and

431
00:25:17,960 --> 00:25:20,120
tags and so on there's a lot that

432
00:25:20,120 --> 00:25:24,480
works on top like code review and discussions

433
00:25:24,480 --> 00:25:27,100
about the code and tasks and so on

434
00:25:27,100 --> 00:25:32,840
and these are just fundamentally not part of

435
00:25:32,840 --> 00:25:35,360
git so here we compete in a sense

436
00:25:35,360 --> 00:25:38,620
with these other forges so git is decentralized

437
00:25:38,620 --> 00:25:42,620
in the aspect that you can you can

438
00:25:42,620 --> 00:25:45,180
put the repository on any computer and if

439
00:25:45,180 --> 00:25:48,180
you set those computers up well enough then

440
00:25:48,180 --> 00:25:51,000
you can have this network of git repositories

441
00:25:51,000 --> 00:25:55,140
and that is decentralized but you're decentralized only

442
00:25:55,140 --> 00:25:58,860
at the level of git features which aren't

443
00:25:58,860 --> 00:26:01,140
really enough to do all the things you

444
00:26:01,140 --> 00:26:04,180
want to do as alluded to before so

445
00:26:04,180 --> 00:26:07,660
this is one aspect you you need more

446
00:26:07,660 --> 00:26:10,140
than just git and you also want it

447
00:26:10,140 --> 00:26:12,840
to be decentralized that at least we do

448
00:26:12,840 --> 00:26:16,840
and then one other thing that comes to

449
00:26:16,840 --> 00:26:19,940
mind is that for using git in a

450
00:26:19,940 --> 00:26:24,360
decentralized way you have to make careful configuration

451
00:26:24,360 --> 00:26:27,220
like you have to share these urls of

452
00:26:27,220 --> 00:26:30,240
all the murals of your repository with everyone

453
00:26:30,240 --> 00:26:33,560
so if five people want to want to

454
00:26:33,560 --> 00:26:35,840
collaborate on a git repository in a truly

455
00:26:35,840 --> 00:26:38,940
decentralized way then each of these five persons

456
00:26:38,940 --> 00:26:42,820
has to note down the git url of

457
00:26:42,820 --> 00:26:45,520
all the four others and we make an

458
00:26:45,520 --> 00:26:50,820
improvement here because we have a globally consistent

459
00:26:50,820 --> 00:26:55,760
way to address git repositories and that's something

460
00:26:55,760 --> 00:26:57,920
that git itself doesn't have there is no

461
00:26:57,920 --> 00:27:01,860
standard way to say this repository which is

462
00:27:01,860 --> 00:27:06,360
agnostic over various locations of the repository that's

463
00:27:06,360 --> 00:27:08,180
something that we add and note that this

464
00:27:08,180 --> 00:27:10,620
is not centralized so there's not a global

465
00:27:10,620 --> 00:27:15,480
registry where you register the repository but this

466
00:27:15,480 --> 00:27:19,800
is done in a decentralized way are you

467
00:27:19,800 --> 00:27:24,380
using dhts like distributed hash tables no we're

468
00:27:24,380 --> 00:27:28,720
not using dhts currently we do node discovery

469
00:27:28,720 --> 00:27:33,560
via a gossip network so at first you

470
00:27:33,560 --> 00:27:36,260
join the network usually via what we call

471
00:27:36,260 --> 00:27:39,240
a process of bootstrapping so you first have

472
00:27:39,240 --> 00:27:42,120
to know some node in the network and

473
00:27:42,120 --> 00:27:45,480
then from then on the nodes will give

474
00:27:45,480 --> 00:27:47,600
out addresses of other nodes that they have

475
00:27:47,600 --> 00:27:49,780
found on the network and then very quickly

476
00:27:49,780 --> 00:27:51,840
you build an address book of other nodes

477
00:27:54,080 --> 00:27:57,560
awesome so i'm wondering now like you talked

478
00:27:57,560 --> 00:28:01,580
a bit about like the importance of enabling

479
00:28:01,580 --> 00:28:05,680
the collaboration aspects in connection to git and

480
00:28:05,680 --> 00:28:10,460
we also mentioned platforms and stuff like that

481
00:28:10,460 --> 00:28:16,240
where what is like dream scenario where do

482
00:28:16,240 --> 00:28:18,480
y'all want to go like what is

483
00:28:18,480 --> 00:28:21,420
the roadmap what is a future that you

484
00:28:21,420 --> 00:28:25,300
envision when radical is like a project that's

485
00:28:25,300 --> 00:28:27,580
complete fully because i guess it's also still

486
00:28:27,580 --> 00:28:32,380
in development yeah um what does that look

487
00:28:32,380 --> 00:28:34,520
like for you that's a it's an interesting

488
00:28:34,520 --> 00:28:38,960
question because there's a question of when is

489
00:28:38,960 --> 00:28:43,340
it a software project ever done and i

490
00:28:43,340 --> 00:28:45,660
actually it reminds me of a post by

491
00:28:45,660 --> 00:28:49,040
moxie um one of the founders of signal

492
00:28:51,440 --> 00:28:55,100
and in it they write about kind of

493
00:28:55,100 --> 00:28:58,660
like envy or jealousy of musicians where it's

494
00:28:58,660 --> 00:29:00,500
like you release a piece of music and

495
00:29:00,500 --> 00:29:02,140
then it's kind of just done and you're

496
00:29:02,140 --> 00:29:05,480
you're done i mean you can always like

497
00:29:05,480 --> 00:29:12,760
remaster edit remix whatever push software just like

498
00:29:12,760 --> 00:29:15,380
it feels infinite it can go on forever

499
00:29:15,380 --> 00:29:24,760
but yeah but then yeah is it mostly

500
00:29:24,760 --> 00:29:28,600
like scope creep or is it like is

501
00:29:28,600 --> 00:29:31,440
it because there's maintenance what is the main

502
00:29:31,440 --> 00:29:34,680
thing that makes it infinite do you think

503
00:29:34,680 --> 00:29:38,440
maintenance does make it feel infinite the most

504
00:29:38,440 --> 00:29:40,880
but of course i think what makes it

505
00:29:40,880 --> 00:29:43,140
feel infinite is just like the power of

506
00:29:43,140 --> 00:29:48,680
ideas and um yeah maybe scope creep is

507
00:29:48,680 --> 00:29:50,940
kind of like a way of describing that

508
00:29:50,940 --> 00:29:55,680
but i guess it's all about like constant

509
00:29:55,680 --> 00:29:58,480
improvements like git was
