Protocol Berg Workshop: Erik Kundt, Sebastian Martinez - Peer to peer collaboration with Radicle
ETHBerlin·Wed, Oct 9, 2024, 12:00 AM
Speakers
In this hands-on workshop, we’ll learn how to use the Radicle stack to collaborate on a code project. We’ll run our own nodes, connect to peers, and grow a virtual garden together. Erik (he/they) works as a freelance artist and developer with a focus on audio / visual coding and decentralized technologies. He has worked in the area of professional music production for Native Instruments, and later on the Solidity programming language for the Ethereum Foundation. Besides these occupations, he has directed several dance, performance and documentary theater projects in their own technical fields, such as video production and mapping, VR / AR and AI. At the moment he is mainly contributing to the Radicle stack and building tools for generative artists. Sebastian Martinez, a mechanical engineer turned to the web, is currently contributing to the future of code collaboration at Radicle. Drawing on his unique experience implementing proof-of-existence solutions in the nuclear industry. From his roots in Switzerland and a personal discovery in Argentina, Sebastian's journey has shaped him into a passionate tech professional and dedicated father of two, poised to make a significant impact in the technology sphere. https://protocol.berlin
Transcript
okay it's uh quarter to 11 I think we can slowly start get the start indication there um welcome everyone to our Workshop the second Workshop today and this Workshop this Workshop is on um peer and peer code collaboration with radical um we will be doing a initial introduction on what is radical and uh the radical stack and protocol and then we will be doing some Hands-On where you can like get your machines out or just follow along on the slides um we will be doing also the entire like um terminal flow here in a split screen so you can tag along so yeah this um Workshop is being presented by Eric and myself Sebastian we are a core team members from the radical team and we will start with uh a first oh it's that one a first slide which is like the main question for the people that didn't hear about radical what is radical so Ral in a in a sentence is the it's a sovereign p p n workor for code coloration and Publishing built on git now what means like peer-to-peer for us per top is um that every user on this network is um Sovereign and has the full control over their experience when using the protocol um the protocol and the entire stack now the the second nature of peer-to-peer as a consequence is is to be local first which um is for example that users don't need each other to participate in in this protocol to interact with each other and also local first means that um as long as one user is still using the protocol and is running their note there's a system where other US News users can then um join now talking about the stack the radical stack um in I will start can you see it down there um the I start with the file systems which are the base of the of radicle which as I said before is built on top of Kit so the we have the radicle storage with which is in essence a bare git repo where we store every um pie here and every um reference on for each repo then on top of that still file systems we have working copies which are git repos also um if anyone wants to like ask a good git questions we can maybe later uh during the Hands-On um respond to them the repositories are working copies that are cloned or that are um derived from the storage which are used to work on and do your code changes or your your work also special for radical is that we store all the issues and all the patches uh inside of these skit repos so you don't rely on for example GitHub storing them on their server but you have full control over every um object that uh is shown by your repo so now moving away a little bit from the file systems um we have a note it's uh it's not a blockchain it's not a crypto token um it's a note that runs interacting with the storage and um has like two interfaces one is the gossip protocol which we can go into in the next slide a little more and a git demon which uh we need because we buil on git we want to interact through G and then like the top uh layer is uh the different um process we can run which is the CI to interact with the storage and the node the A2 boric which is uh kind of the same thing but more graphical text based and a web client so you get an experience by being able to navigate through a a web inter interface to see your node issues patches code everything you want to like see and one more thing that isn't there is the httpd API we have which uh interacts which is kind of in between yeah in between the web client and the the node or even it's the storage like between the storage and the web client we we have an HTTP API which also can be used by Third Integrations we have already some IDE extensions and uh it's open everyone can uh add to it we also have an open API specification which can be used so with regards to the protocol um I don't want to go into the details again on storage and working copies but um you can like um imagine yourself each rectangular here is uh a machine or a public node um which where you see they interact via the git protocol which is the replication layer so if I myself like Po a new change or do a change to a repo um and the gosip protocol uh announces there that these changes the the through the git protocol we can then um Fetch and and pull these these changes um yeah okay now uh take over Eric for a for the getting started on the Hands-On part of the workshop um yeah hey so thanks for the introduction um so yeah we try to make the onboarding experience like as easy as possible but there are like still a few things that we need to do um like in terms of like getting started um to use radical um so yeah we will just quickly check on whoever wants to participate and like actually try try it out um I see sorry see a lot of laptops already so there are a few requirements we need to check then we going through the installation process create an identity for your note um then actually run your own note um and um I hope we get this far um so we have like a very small fun project that we set up ah a small um like a fun project that we set up um so yeah let's see maybe we can create our first radical patches today that would be quite nice um so maybe on your computer um you might want to check uh your Git Version and your SSH version because um we are requiring um Git Version 2.34 um that's where SSH signing support came in with um and um yeah probably open MS 9.1 um so and we put like I don't know can any everybody see the commands there maybe I can also zoom in a little bit okay now that doesn't work so can anybody see this okay good um so yeah I mean I think I'm just going to run through the the process and then uh we're going to just like walk around and try and see if anybody needs some help there uh with getting started so um what you can already do is you can join our zulip um server that's r called. zulip chat.com and there is I don't know who's familiar with zulip there so there's a support stream and we created a protocol bur topic where we already posted a link to um to the project [Music] um okay so that's like very hard to do handsfree ah yeah okay um but you can also help with this later so um and I don't know like um so this is like we provided a installation script um so this would be the first command that you would need to run um on your machine uh to install radical okay let's see if this works okay nice so I will also do this here on um my screen so I'm like in the in the fresh um like Docker container I just want to have uh don't want to have any of these dependencies that I talked about so we need to install s um open SSH um we need to install git here um we need to install curl and tar that's needed for the installation script [Music] um so that should now install everything that I need here okay so y sorry um so Sebastian is already starting to walk around and see if anyone uh needs some help okay so now um like I have everything installed here and I can just copy over the command so and now what this does is downloading our release [Music] binaries okay still the wi TR so are there any questions so far that might be interesting for the audience already yeah so the question was um maybe like uh okay so maybe we can do this um maybe we can postpone this question maybe do want to ask it um uh in the end because we have also like a Q&A session okay thanks um okay yeah that was quite unfortunate so like the the issue here was that I didn't set my um shell variable here um correctly before installing it um so here it's Ash so now if I'm can run this again okay I will download again but now like a lot faster probably somehow cached so okay now it says okay nice radical was successfully installed um and I need to um like add my like reload uh my environment here and now I can already do um a rat help so and we can see like a list of commands um that are available through radical um so the next thing that we need to do okay so any questions so far I don't know is this too fast too slow um okay I he here a lot of people typing all right so um the next thing uh what I mentioned earlier is we need to create an identity so this is like the identity like our key that is uh tied to um the the note and this um identifies us um in the network so I would just R um run R out so now I can pick an alias so that's like um you would see what I mean with Alias afterwards um and I need to pick a passphrase do this again and now I'm maybe make this bigger because it contains a lot of useful information so um first it says okay it created um our key pair and then this is like the very important part so this is the radical d That's a decentralized identifier that we need uh that we use in the network to identify our nodes um um it already says yeah it identifies your device so um you can run R self I will do this in a second um to check your like own environment to check your see your key see like where your storage is like on the file system um and now if we would want to um like create a new project we could just R uh run r in it um but we have another uh we have a project already um that we set up for the for the workshop and I will just clone this now um so maybe I will show you this why is this not working that's funny anyhow so um as soester mentioned there is a um there's a web interface so it's like on app.
rical doxyz um and let me quickly check I have them okay yeah here that's a project URL this is um how you can reach um the project that we created for the workshop so the thing is um we have I mean like it's a peerto peer Network and um it's based like it's contains nodes and notes are like like you can run your own you would run your own note on your own local computer but we also provide like what we call seat notes so seat notes is kind of the idea of having um like a federal system maybe um where people like organizations and also per like people can just decide to run their note make it public um and then have people like and then kind of host projects there and we're having a community seat and you can reach this seat uh with this URL um so and what you see here is like um yeah so that's a kind of thing that you would want would expect when looking at like a code collaboration um software so like the web interface we have the code we have code browsing here uh we have issues patches um and there's a clone button so and I can just copy this command that's your R clone and then the identifier of the project and I can just do this ah okay nice it says okay I forgot to restart my note that's very important part um let's quickly go back to the slides so um all right okay um so we would need to start the note um and you can just use like R node start um D- foreground or you can run it in the background um but I decided like we decided for the workshop to run it in the foreground because you get like a nice um you get like some locks that you can that you can see so it's R node start-- [Music] foreground so and I'm starting my note um so I can just clone this again ah okay sorry now this was the wrong I just do it like that the wrong terminal in the so I'm starting my note and then I would just clone the project um it's ah sorry uh it's protocol Burke okay sorry um maybe I lost you here just let quick no no no yeah okay no I think it was the other way around so let's just go back so if you type in like the URL you would see like a list of projects that are hosted on the seat note and the protocol Burke project um is kind of pinned so that's like the project that we have um easily accessible here did um Everybody find this project no now I can just show a URL again it's app. rical xyz's sln c. radical. Garden this one yeah yeah so that's the that's a project identifier um this identifies a project in the network and also like inside your storage so we have good references like we have name spaces inside of the storage where we um where we store the actual git references and objects um and these are like identified like the project lives in its own namespace basically uh immutable or mutable yeah no it's mutable by the oh no you mean like oh no this is kind of um like on Project creation like when you create a new radical project this is kind of set um okay um so was everyone able to run their note are you running your like who's yeah maybe just like a quick uh sorry say say it again I yeah sure uh you mean URL ah yeah sorry okay ah yeah okay so like your note um doesn't know about um the seat node um so um so radical people just quickly help me out here so um so we just like clone the connect to the seat like okay mhm you mean like with the like the note needs to connect to the CM mhm okay so did this hm sorry say it again miss approach okay okay cool okay so [Music] um okay so um oh yeah okay I see okay it's the the option changed so this is the command are you is everyone in zulip already so because there we have um our radical helpers in the back who just posted um the command that's needed to connect your Noe to the seat node so that your Noe is able um to pull the changes from uh pull their project connection reset oh am so okay so I started I had to restart my note of course um and now um like I can connect to to the seat so okay nice so my note is now connected to the seat did everyone um got this um this command [Music] um no I mean um that's also something do we have like um do we keep a list of like do we have the seat note somehow available to the CLI the so the qu the question was if the seat if the if because this person didn't need to connect to the seat okay yeah so there there is a default listing um yeah but maybe we need to look at this uh why it's not like sometimes like working and sometimes not um yeah so but my my um my note is now connected to the seat and I can just um now clone this project hopefully so nice okay so it says a lot of things here so it connected like um we're not like the note is connected to the seat um and we've hatched the project with this identifier um it created a protocol bur folder so this is like where your working copy lives and and um so it already says some things that are like important about the nature of like the Peter architecture um because it already has um some peers here um that are um kind of like added to your tracking so the thing is like in the P top World um you want to like track other people like pushing changes um like maintainers probably um and like in radical it's called like we have this concept of delegates I don't want to go into detail here because we're kind of running already not out of time but like time is running fast um so but the thing is we are kind of like um like for this project um Sebastian and me like our two devices um are like delegates so maintainers to this project uh and when you pull when you clone this project you already have like the tracking relationship so which means that like um when we are um kind of pushing changes through the network like and on the seat um then this means that you're interested in this changes and when your note synchronizes um it will also check um for new um git references like by these peers um so how is it um [Music] who do we need like some support um so is anyone needing some support it's like are your notes running like how many notes do we have running here like one two three okay 5 six s okay nice [Music] um I mean ideally we would get it like running like get the note running for all the people here in the audience okay so but what are like where the ISS she okay I will just maybe I will just like take a few minutes and then also walk around and see if we can we can help uh Finton who's Finton who's also working on radical uh he's so nice and will help out okay so there's another question feel Crea spe uh okay so um we had some issues with people who are not like saw the um the error message that the connection was reset um when they tried to connect their notes to the seat um so but it may help to just restart your note um so you can just run uh R note [Music] stop all right um so I think we just decided that there will be like a little change in plans because uh time just passed by quite quickly um so I think we just so the the goal was we try like we we tried to achieve that like people in the audience can create their own patches but maybe like this 40 minutes was just a little bit too tight um so I think we will just take the time to do like a Q&A uh instead of like creating our own um patches but like I would just Walker like walk you through um what's possible um with the project now here that I have it cloned yeah yeah yeah yeah I can do this um so there was such a suggest suggestion um that uh we just like do this here like create a patch um here um like um on this computer so that at least you see how the workflow would be um so now um I have this I have this project um yeah so is this big enough um so um okay so this project has no issues um there's also a command called Rod patch so this shows um open patches um I can just also do a r patch D- all so this shows me all the patches um that are um that are there so and they have different state so there's like this one um patch here which is open and we have a lot of merged patches um so um and the workflow for like creating a patch would be like and now I'm on master so I would probably just check out a new feature Branch um and I call it um Workshop um and I would just create a file um thanks. MD so um and now okay I have this I'm on the feature branch and I have this un unchain um untra file can just I would just add it um so um and I'm putting I commit message um was wrong so and I can now see like one commit here like on the workshop Branch um there's a commit called thank you um so and I would uh what I would now do is like a get um can show [Music] you so that's like something that's like a little bit um needs a little bit more typing right now um but I think we might want to change this in the future so um as Sebastian said so we have the work on copies and we have um everything like is in in the storage and like from from your working copy perspective your radical storage is um is just a remote so what we're doing now um I'm pushing um to the reference called patches inside the red uh remote so which is the storage so and this now gives me um gives me a editor uh where I can just put a patch message [Music] so and now it says Okay um so a patch was opened um so we have like some git helpers that we like G hooks um and every time that you push something here to the repository then um like uh to the storage then a patch is opened um and I can now do a rout pad and then I see um my my patch here um and I can also like go into details of this patch oh okay that's funny so it contains um another commit here uh that was like something that I me mention mentioned earlier so we have this delegates uh system that need some more work um and I just like don't have the latest changes from um the Canon canonical Branch um so because um like if you're like having a lot of notes connecting and a lot of people working on one project you want to decide on a maintainer probably which is like the delegates uh and only delegates have uh right access to the conical path uh to the conical Branch um and I just had the latest didn't have the latest changes here uh which is why this commit still shows up um because um the while creating the patch um there is a compar comparison um between the master and um and my my feature branch in terms of commits uh okay sorry no we don't only have two minutes left um yeah okay um uh yeah okay so next time we'll probably do um longer Workshop but um the thing is um yeah I'm quite happy that you um were here and like uh we will also be around like the whole day um so you can just approach us um and maybe we can figure out um if you had any issues um [Music] so yeah please please just join zulip because we are like all there and um there's like um yeah a lot of help a lot of support there um so maybe we have like still time for one last question like one minute left um yeah yeah so the question was if there is any GitHub integration already so the thing is we also just recently moved our own development process from GitHub like a few months ago um and what we did so we're kind of like dock fooding ourselves the whole time and like fixing issues while we're doing this um and what we have is like some small scripts that you can use you can just call the API from GitHub um and then it creates like your issues um like in radical so that's like something um yeah um that's Does this answer the question now we're yeah okay so um would you be up for just sitting outside like a few minutes because we just like it's like now sharp and I think we need to stop here so we won't delay um the the next Workshop um yeah thanks again um so please just approach us um yeah just approach us like outside or um hop into the zulip server um there are not of nice people there wanting willing to help thank you
Automatic transcript — names and jargon may be misspelled.