En av de virkelig store fordelene Git hadde å by på da det kom, sånn bortsett fra at det var gratis, var distribuert versjonskontroll.

Standarden på denne tiden var sentralisert versjonskontroll som SVN, hvor koden levde på en sentral server og hvor filer måtte låses for å forhindre at to utviklere gjorde inkompatible endringer på en fil samtidig.

Med Git kunne alle utviklere ha sin helt egen isolerte kopi av koden som de kunne herje med som de ville, mot litt ekstraarbeid for å løse endringskonflikter når koden til syvende og sist skulle synkroniseres et sted.

Og hvordan skulle endringer sendes mellom disse distribuerte kopiene? Tro det eller ei, men Git er faktisk designet rundt å sende kodeendringer via e-post. E-post er en distribuert meldingstjeneste som absolutt alle har fra før av, og som er fleksibel nok til å ikke bare kunne overføre kodendringer i form av tekst, men også til å diskutere de endringene før de aksepteres.

Git over e-post er mer enn en kuriositet. Sourcehut er en tjeneste som tilrettelegger for denne modellen, og det er fortsatt slik Linux-kjernen utvikles idag.

Da er det kanskje litt ironisk at de aller, aller fleste bruker Git opp mot en sentralisert tjeneste som GitHub. Det er forsåvidt ikke så rart. Utvikling består av mer enn bare kode-deling, som det å holde styr på oppgaver som skal gjøres og muligheten til å se gjennom endringer før de blir en del av kodebasen. Selv om e-post kan brukes til dette, så er det langt ifra den beste eller mest smertefrie løsningen.

Men hadde det vært så dumt om du kunne sitte på flyet uten internett og likevel svart på spørsmål, kommentert på andres endringsforslag, opprette nye endringer og så synke alt når du lander?

La oss snakke om Radicle.

Radicle?

Radicle er en abstraksjon på toppen av Git som synkroniserer endringer i et peer-to-peer nettverk. Peer-to-peer betyr at det er et nettverk av likeverdige noder som utveksler informasjon. Dette skiller seg fra en klient-tjener modell hvor tjeneren gjerne er “fasit”, og deler informasjon med et nettverk av klienter.

Når det gjelder Git så bruker du dette stort sett som før. Unntaket ligger i hvordan du setter opp et prosjekt. I tillegg tilbyr Radicle tjenester som ikke finnes i Git fra før av, slik som endringsforespørsler (også kjent som Pull Requests i Github) og oppgaver (Issues), og disse må du interagere med gjennom et eget program

Hvordan funker det i praksis?

Radicle er ganske nytt (versjon 1.0 ble gitt ut nå i september) og har foreløpig bare støtte for operativsystemene Mac og Linux. Etter installasjon lager du en ny bruker, som i praksis betyr at det opprettes et nøkkel-par med en privat og en offentlig nøkkel.

Når Radicle kommuniserer med andre noder på nettverket vil den da bruke din private nøkkel for å signere dataen du gir fra deg, som andre noder kan verifisere med din offentlige nøkkel. Din offentlige nøkkel er med andre ord din bruker-id.

Opprette bruker i Radicle

Ser du at det står did:key:z6MksKr9semhNSfdytEtNZV3CRJttLCsDaFoAxboywH1vxz4 i bildet over? Det er bruker-id’en min. Heldigvis har jeg valgt robheghan som et alias, og det er det andre brukere ser når jeg kommenterer på oppgaver eller sender inn kode-endringer.

Det er også viktig å huske på at din datamaskin er en node, eller en peer, på Radicle nettverket. Alle Git prosjektene du oppretter, kloner til din maskin eller på en eller annen måte bidrar til vil du nå være med på å dele med andre.

Husker du BitTorrent? Samme prinsipp. Forskjellen er at du deler kode og ikke Britney Spears sanger.

Når du har opprettet en bruker kan du også publisere et Git prosjekt på nettverket. Det gjør du veldig enkelt med rad init. Slik så det ut når jeg publiserte Gren kompilatoren:

Publiser et Git-prosjekt på Radicle

Du kan også besøke prosjektet i nettleseren for å lese koden, se på oppgaver og titte på kodeendringer.

Etter dette kan du egentlig jobbe med Git slik du er vant til. Forskjellen er at koden din nå lever på et distribuert peer-to-peer nettverk.

Hva med oppgaver og kode-endringer?

For å opprette en oppgave kan du enkelt kjøre rad issue open. Da vil din foretrukne tekst-editor åpne seg (helix, i mitt tilfelle) slik at du kan skrive ned oppgaven. Når lukker tekst-editoren vil oppgaven lagres som en del av Git prosjektet og, hvis du er koblet til nett, sendes ut på nettverket. For å se eksisterende oppgaver for prosjektet kan du også kjøre rad issue.

Opprette oppgaver fra kommandolinjen

Oppgavene kan selvfølgelig også leses i nettleseren.

Når det gjelder endringsforslag til koden så kan dette opprettes direkte i Git.

Opprette endringsforespørsel fra kommandolinjen

Grunnen til at dette fungerer er fordi Radicle legger til en såkalt remote-helper i ditt lokale Git prosjekt, som gjør at visse kommandoer har en dypere forståelse for Radicle enn de ellers ville ha hatt.

Det er også mulig å få frem en liste over all nylig aktivitet i oppgaver og kodeendringer med rad inbox. På den måten er det lett å holde seg oppdatert på alt som skjer i prosjektet.

Kommer dette til å erstatte GitHub?

Det er mye å like med Radicle. Prosjektet er godt dokumentert og det er overraskende lite en må lære seg i tillegg til Git. Stort sett kan du jobbe med Git som du er vant til, og de ekstra kommandoene er intuitive og godt presentert.

For noen vil det nok også være en fordel at det finnes et alternativ til sentraliserte tjenester drevet av Big Tech.

Men Radicle har også noen ulemper.

Private prosjekter er mulig, men krever at du setter opp ditt eget private nettverk eller at du publiserer prosjektet på et relativt lukket nettverk du har tilgang til og stoler på.

Endringer må gjøres gjennom en datamaskin som har Radicle installert. Du kan for eksempel ikke akseptere endringsforespørsler eller opprette oppgaver i nettleseren.

Brukeren din er også låst til en fysisk maskin. Så hvis du vil jobbe med et prosjekt fra to maskiner så kreves to brukere. Og hvis du mister nøkkelparet som utgjør brukeren din så får du håpe at du enten har en ekstra bruker, eller at prosjektet ditt deles med en annen bruker som kan slippe din nye bruker inn igjen.

Det finnes heller ikke noe tilsvarende Github Actions, men det jobbes visstnok med.

Til slutt bør det jo nevnes at Radicle er veldig nytt, og det er vanskelig å spå hvordan det utvikler seg videre.

Men det er absolutt lovende.