Hello and welcome to today's episode of SolarCast
and with us today we have two developers
and the core maintainers from Radical.
Unfortunately in this episode today my main recording
microphone broke down so what you'll be hearing
is my backup microphone and luckily that was
still going but the audio quality is maybe
not up to par for the usual episode.
Just a forewarning but I think it's still
good enough.
I did my best to edit it so
it will be a pleasant enough conversation.
And the conversation that we'll be hearing will
be going through a lot of different aspects
and you'll be kind of with me on
the learning journey of what it means to
do peer to peer and local first Git
collaborations and forages.
So if you are as curious as I
am and was then tag along and let's
dive in.
Thank you so much for joining today for
this episode of SolarCast and with us here
today for those of you who cannot see
us is Lawrence and Fintan from the Radical
project.
Radical.xyz. So to get to know y
'all a little bit would it be okay
that you tell us a little bit about
how you entered Radical and what your backgrounds
are?
Yeah so mine was like a long winding
journey of getting to work on like functional
programming during college times, working remote for a
company that actually used Haskell.
So yeah I became enamored with Haskell in
particular during my university days and that eventually
led me to OSCoin.
And that happens to be the kind of
like roots of Radical so to speak.
So we kept in touch and I was
interested in the project.
It was kind of the idea of OSCoin
was to try and bring sustainability to open
source projects through a kind of like weighted
graph system, cryptocurrency and basically if you're dependent
upon a lot then your project would theoretically
get rewarded a lot.
So there's this classic xkcd comic with the
stack of blocks and we have the tiny
little block holding up everything in the corner.
So in theory that block would be getting
a lot of funding to make sure that
the whole stack doesn't collapse.
They realized that not only is funding a
problem but also the like collaboration on code
artifacts and repositories seem to be a problem
as well because it's rooted in centralized companies
and centralized countries let's say.
GitHub being based in America under Microsoft.
So early indications of what we're seeing now
in this like shift towards more sovereign solutions.
So like trying to break away from the
US.
Yeah and it was right about then that
I joined.
That project was kind of like the first
iteration and after that it was a Rust
project and it was the second iteration of
what we call Radical.
And then the name was Radical Link and
instead of a kind of Lisp machine it
was kind of back to basics.
We've got Git, why don't we build on
top of it.
So that's around when I joined about six
and a half years ago.
I've been working on things since then.
I can get into the why a bit
more but maybe I'll hand it over to
Lorenz to kind of give his perspective of
why he got into this.
Thank you Fintan.
Hello to all our listeners.
I am Lorenz and I joined the project
quite a bit later.
So I was not around in this OS
coin phase and the let's say the earlier
explorations and iterations of the project.
I joined quite a bit later just as
a open source contributor.
So I first started contributing just out of
interest because I liked the idea.
I was actually as GitHub got acquired by
Microsoft a few years back I started wondering
okay like where is this going and I
figured why aren't there more projects that work
on the decentralization aspect and making the decentralized
components of Git which are really strong more
usable and more user-friendly.
Because the reason is that the underlying situation
is that Git actually is very decentralized but
the dynamics in the real world have unfolded
in a way that we see lots of
concentration so we see lots of people gravitating
towards GitHub big part of the open source
ecosystem and a few other forges but GitHub
is the biggest by far.
So at that time I didn't even really
know about Radical.
Blockchains were more prominent but I had a
few questions and reservations there so I didn't
really engage much in these projects but then
at some point I learned that Radical actually
switched the implementation to Rust and switched to
one that is not dependent on the blockchain
but is more open to like opt-in
in the future or build on top but
certainly not in the core of it as
it was previously.
In fact the situation that Fintan mentioned before
about the graph to distribute the resources and
funds among open source communities this is a
project that spun out into so this still
exists it's called DRIPS and we say it's
our sister project but that kind of was
realized that it might be better to split
these two aspects and I do agree.
So after that period I decided okay now
is the time that I start contributing to
one of these projects and then I started
contributing to Radical.
As usual you know you find those things
that you think could be improved you start
with smaller ones then you somehow understand the
code base you find a few bigger ones
and that's how I grew into a more
senior contributor to the project and then at
some point I was asked whether I would
like to maintain the project together with Fintan
and Adrian and yeah that's what I'm doing
now.
You mentioned something there as usual and then
you describe this process of like finding these
different projects that you want to contribute to.
When you say as usual who are you
talking about here like as usual?
Yeah it's probably colored by my own view.
I would say as usual for really an
open source enthusiast you know the kind of
people that use open source software and if
they see an issue or something that could
be improved they really go clone the code
figure it out do the fix and so
on and yeah I have done that in
like a handful projects those that I use
personally and I like to do that when
possible but of course it's not always possible
to start with when the software is not
free.
So I've been having a lot of conversations
with some friends recently who are new in
the open source space and they want to
start exploring and I think one of the
challenges is kind of what you touched upon
here is like finding what project to contribute
to and so we touched on it or
so why did you find that Radical was
the project worthwhile to contribute?
I think that Radical is pretty far out
there in terms of ambition and also in
terms of challenge in bringing Git back closer
a bit to its roots or at least
how we see it bringing this decentralization aspect
back.
So there are quite a few open source
projects out there in terms of different forges
for example many many will know Codeburg and
that they use ForgeJoe others might know SourceHUD
but as far as I know Codeburg is
an association so they are structured as an
association registered in Germany they invite new members
to join and the core offering is that
they host infrastructure for you to collaborate on
open source code open source software free software.
And they're kind of like GitHub but open
source?
I mean I wouldn't go that far I
wouldn't say they are like GitHub because GitHub
is yeah is a bit of a different
topic I guess but Fintan yeah please take
it away.
Maybe it's good to just clarify what like
a GitForge means in general so most people
my favorite comment is like Git it's already
decentralized when we talk about Radical and we
fully recognize that of course it is it's
a decentralized tool and how developers started using
it is through a decentralized workflow called email
so the Git core team and the Linux
team use email lists for collaborating through Git
and so email can be one Forge and
that the like step after that was SourceHUD
which is an email based Forge where you
get a website where things can be hosted
and you can see the emails coming in
and discussions.
GitHub is another GitForge which is also a
platform and that's what people are most familiar
with as a Forge.
Other Forges now exist such as Codeburg and
also Tangled on the Approto protocol if people
are familiar with Approto and Newsguy.
GitLab another Forge yeah so okay so I'm
coming from the perspective of like peer-to
-peer space and there's tons of different people
coming from a lot of different spaces can
we go back like a little bit to
the basics I think anyone working with code
has encountered like Git has encountered repositories and
have heard about Forges but what actually is
a Forge?
Yeah yeah exactly so it's I guess it's
a home for collaboration so Git gives you
the commits and files so blobs, treats, commits
that allows you to version control your code
over time but as humans we have lots
of other ways that we collaborate and that's
where we see things like issues or task
trackers or discussions on changes identifying as someone
who collaborates on these Git repositories that's I
think that's where Forges bring or like yeah
yeah they paint the picture a little bit
more on top of Git.
And in comparison to like something like CRDTs
like we have this space that's become really
really popular lately with Local First and all
of that and CRDTs are a common means
of facilitating collaboration like what's the differentiation there
between Forges and CRDTs?
I'll let Lorenz take it.
So I think that CRDTs are a technology
and a definition of how a data structure
should work and what features a data structure
should have and you can build something like
a Forge which is a little more abstract
concept like a feature set of things that
people want to do so you approach you
can approach it from two sides you can
say okay what does the user want to
do okay they want to do code review
they want to discuss the changes and then
the CRDT is a bit on is a
bit of technology that can enable this and
then yes what Radical actually does is it
implements a Forge based on top of CRDTs
so many of the things in Radical that
we talk about like patches and issues are
implemented as CRDTs so the underlying structure still
is a CRDT but it is not critical
for the user to know that when they
open a patch there will be an operation
on the CRDT that's abstracted away.
Yeah to analogize it would be like asking
what's the difference between a page rank and
a web search or like a search engine
so page rank is just an algorithm and
a search engine can like bring other features
to the table.
Yeah so we were on the topic of
like why and so the why enters into
the space now and then we kind of
like moved into what actually is Radical.
I have an idea of bringing us back
a bit here to where we were before
talking about the different Forges and other solutions
in this space and we talked about a
bunch of those and you can you can
place them on a line and you can
think about okay how centralized are they and
I think we have like peak centralization with
GitHub and then you can place the others
right and then we have this concept of
federation where as there are a few different
ways of how to achieve federation but usually
you have multiple servers and then the user
logs into one of these servers and then
there's data being federated between the servers so
all of these solutions which includes Tangled on
AT Proto and which includes the work towards
federation in Forge Joe I would put them
in the middle.
Email also yes you're very right to point
that out email is also of that kind
you communicate your email server and then the
emails are replicated and then we have another
category where Radical falls into which is basically
where there are no servers there are just
nodes in the network and they sync in
a peer-to-peer manner yeah and there
aren't really any other competitors in a sense
or any other projects that are currently ambitious
and as active as we are to develop
a really peer-to-peer Git layer.
And I have so many questions in this
regard I'm so curious and I've been hearing
ever since I heard about Radical which was
about two years ago now I've been wanting
to figure out a little bit more to
start from the perspective of why is it
important to do it peer-to-peer in
this setting like what makes the big difference
here and then how do you enable those
peer-to-peer connections?
So I think it's important in general to
have a technology that works in this local
first and peer-to-peer manner because it
puts all the power into the user or
at least very very close to the user
they control their own hardware there is no
central authority that tells them when to log
in or whether their account is blocked or
not and it is a technology that enables
this completely decentralized setting where you know I
join Funkfeuer which is an association of people
that put Wi-Fi antennas and on their
roofs and then they might make direct peer
-to-peer connections if you need internet access
to let's say a data center in order
to use your forge then well you're tied
to this access but with Radical it will
just work in such a completely partitioned part
of the of the internet just as well
for example if Fintan and me work in
a room and are logged into the same
Wi-Fi then we can just directly exchange
information over Radical and we don't need to
go out to a data center and so
on so we are immediately much more resilient
and much more sovereign than with these other
technologies.
It enables this routing agnostic perspective where you
can route over different transport layers it sounds
like could you use mesh, Wi-Fi, Bluetooth,
sneaker net whatever kind of here?
Yeah I have to admit that we are
currently using TCP transport so we are a
bit limited in that regard but we could
extend so that's a limitation of the current
implementation but not out of the protocol design
so the data structures that arise from the
sync process they work even if you you
know transfer via sneaker net or whatever but
the current implementation expects to talk IP and
TCP.
I had a previous conversation with IRO and
we talked a lot about map traversal or
hole punching to establish these peer-to-peer
connections.
How do you go about that?
We know about IRO, we are actually in
loose contact with them and we are really
watching the awesome work they are doing and
we are thinking of at least allowing connections
via IRO to in a like a testing
phase.
It lines up really well on like the
the cryptography of it so in radical nodes
are identified by an edwards 25519 key and
the same is true for IRO so we
might get the direct correspondence between IRO endpoints
and and a radical node ids so it
all looks it all looks really nice and
they would give us the hole punching capability
which we don't have currently.
But it's an ongoing process and we're definitely
eager to experiment more.
And this is actually we're getting into an
area that has been a big part of
my research in the past which is this
what's starting to emerge is kind of an
ecology of protocols from previous years like 10
years ago a lot of projects were trying
to build the entire solution on their own
which meant rebuilding the same wheels over and
over but now these kind of protocols are
entering more of a modular form of design
so it sounds like you're solving a quite
a specific part of the puzzle piece of
peer-to-peer networking and specifically for git.
What is like where do you see yourself
and what is your solution more concretely?
Yeah that's a great question and I do
hearken back to when I started a phrase
that was thrown around was like protocols not
platforms.
So yeah I guess where we're trying to
fit in is building the protocol on top
of git for collaboration and as we spoke
before we're talking about we're talking about it
in a self-sovereign way we also fit
into this local first even offline first scenario
where you can hop on a plane still
work on your collaboration not just your code
so I can like reply to issues reply
to patch comments and then come back online
later and sync up with the network so
yes putting that protocol first and hopefully making
it repeatable so that people can come and
boost the ecosystem with other implementations in the
future I think so
I'm also thinking like you mentioned in the
beginning like a question that a lot of
people have asked you is like okay so
why are you doing this git is already
decentralized like what do you say when people
ask that like where do you because okay
I think it boils down to decentralization be
a very fuzzy term because there's so many
forms of decentralization and federation and peer-to
-peer are often dumped in as it clumps
some under decentralization is it there in the
distinction that by enabling what or by doing
what you're doing with git you're kind of
bringing it to a new level of decentralization
my thoughts here are that we are we
have realized and I think many people will
agree that software engineering and managing a software
project being open source or maybe even not
is not just about git commits and and
tags and so on there's a lot that
works on top like code review and discussions
about the code and tasks and so on
and these are just fundamentally not part of
git so here we compete in a sense
with these other forges so git is decentralized
in the aspect that you can you can
put the repository on any computer and if
you set those computers up well enough then
you can have this network of git repositories
and that is decentralized but you're decentralized only
at the level of git features which aren't
really enough to do all the things you
want to do as alluded to before so
this is one aspect you you need more
than just git and you also want it
to be decentralized that at least we do
and then one other thing that comes to
mind is that for using git in a
decentralized way you have to make careful configuration
like you have to share these urls of
all the murals of your repository with everyone
so if five people want to want to
collaborate on a git repository in a truly
decentralized way then each of these five persons
has to note down the git url of
all the four others and we make an
improvement here because we have a globally consistent
way to address git repositories and that's something
that git itself doesn't have there is no
standard way to say this repository which is
agnostic over various locations of the repository that's
something that we add and note that this
is not centralized so there's not a global
registry where you register the repository but this
is done in a decentralized way are you
using dhts like distributed hash tables no we're
not using dhts currently we do node discovery
via a gossip network so at first you
join the network usually via what we call
a process of bootstrapping so you first have
to know some node in the network and
then from then on the nodes will give
out addresses of other nodes that they have
found on the network and then very quickly
you build an address book of other nodes
awesome so i'm wondering now like you talked
a bit about like the importance of enabling
the collaboration aspects in connection to git and
we also mentioned platforms and stuff like that
where what is like dream scenario where do
y'all want to go like what is
the roadmap what is a future that you
envision when radical is like a project that's
complete fully because i guess it's also still
in development yeah um what does that look
like for you that's a it's an interesting
question because there's a question of when is
it a software project ever done and i
actually it reminds me of a post by
moxie um one of the founders of signal
and in it they write about kind of
like envy or jealousy of musicians where it's
like you release a piece of music and
then it's kind of just done and you're
you're done i mean you can always like
remaster edit remix whatever push software just like
it feels infinite it can go on forever
but yeah but then yeah is it mostly
like scope creep or is it like is
it because there's maintenance what is the main
thing that makes it infinite do you think
maintenance does make it feel infinite the most
but of course i think what makes it
feel infinite is just like the power of
ideas and um yeah maybe scope creep is
kind of like a way of describing that
but i guess it's all about like constant
improvements like git was