Orgbrain

Gir ut verktøy for samarbeid i nettleser - inkludert offline-synkronisering

– Mange har prøvd før oss, men vi er først med å porte Git til nettleseren, sier Dag Asheim og Peter Salomonsen.

Et lite gjennombrudd, mener fra venstre Dag Asheim og Peter Salomonsen i Orgbrain om muligheten til å kjøre Git offline i nettleser. Bruksområdene kan ifølge dem være mange.
Et lite gjennombrudd, mener fra venstre Dag Asheim og Peter Salomonsen i Orgbrain om muligheten til å kjøre Git offline i nettleser. Bruksområdene kan ifølge dem være mange. (Foto: Marius Jørgenrud)

– Mange har prøvd før oss, men vi er først med å porte Git til nettleseren, sier Dag Asheim og Peter Salomonsen.

Hei, dette er en Ekstra-sak som noen har delt med deg.
Lyst til å lese mer? Få fri tilgang for kun 235,- i måneden.
Bli Ekstra-abonnent »

Kort om Git – det «idiotsikre» prosjektsystemet

Versjonskontrollsystem og prosjektverktøy skapt i 2005 av Linux-oppfinner Linus Torvalds.

Kort fortalt lar Git brukerne gjøre endringer og lage nye grener i en trestruktur av filer. Bidragene sjekkes inn og systemet sørger for at endringene ikke skaper konflikt med hverandre.

Systemet er i bruk daglig av langt på vei de fleste programvareutviklere i verden.

Git er imidlertid egnet for langt mer enn bare samarbeid om kildekode eller programmering. Egentlig alt tekstbasert innhold der flere jobber på et prosjekt, for eksempel en bok med flere forfattere, eller arbeid med rapporter.

Git har også et eget stammespråk med en rekke engelske kommandoer, blant annet push, merge, commit og master branch.

Torvalds er kjent for å være meget frittalende, noe produktnavnet bærer preg av. En av flere forklaringer han har oppgitt er at navnet er britisk slang for idiot (you stupid git). Kanskje mente Linux-skaperen, eller håpet han, at verktøyet kan bidra til færre blemmer i felles prosjekter.

Git er et utbredt distribuert system for versjonshåndtering, som opprinnelig ble laget av Linus Torvalds for å lette utviklermiljøets arbeid med Linux-kjernen.

Et par norske entusiaster har nå gjort et omfattende arbeid med å kompilere det C-baserte systemet for kjøring direkte i nettleseren, uten en server.

Dette er en nyhet og en anvendelig «byggestein» de mener kan få stor utbredelse, også globalt.

Blant annet kan dette muliggjøre sanntids samarbeid om tekstfiler rett i nettleseren, og funksjonalitet kjent fra Google Docs, for alle og i helt nye sammenhenger.

Blant de første tilbakemeldingene de har fått kom også CMS og bloggverktøy raskt opp som eksempler på nyttige områder for slik teknologi.

– Ingen har gjort dette tidligere, men mange har prøvd

Git er utgitt i åpen kildekode med en fri programvarelisens, men selv om det finnes en rekke ulike implementeringer er det vanlig å forholde seg til en Git-server.

Å kjøre Git direkte i nettleseren kan ved første øyekast virke som et kuriøst påfunn. Og hva skal det være godt for?

– Ingen har gjort dette tidligere, men mange har etterlyst det. Nå har jeg kompilert Git til WebAssembly. Bruksområdene er blant annet lagring lokalt og synkroniseringsmekanisme for offline webapplikasjoner, sier Peter Salomonsen i tech-startupen Orgbrain.

Mange i verden vil ha glede av «libgit2 i nettleseren», mener Dag Asheim og Peter Salomonsen, som velger å dele nyheten først her i digi.no. Foto: Marius Jørgenrud

En morsom utfordring er det også, mener kollega og daglig leder Dag Asheim, som også har bidratt om enn på et mer overordnet nivå.

– Antall kodelinjer som er endret er ikke nødvendigvis så stort, men det gjelder å finne akkurat de riktige kodelinjene å endre på. Det har ikke vært enkelt. Jeg føler det er en teknisk milepæl og Peter er hovedarkitekten. Så har vi begge diskutert litt arkitektur og hvordan gå fram, forteller Asheim.

Seriegründeren er best kjent for å ha startet Linpro på midten av 1990-tallet. IT-selskapet ble senere solgt og fusjonert med svenske Redpill, men nå er det syv år siden han trakk seg ut.

Etterpå har han vært styregrossist og investor, før lysten til å starte noe nytt tok overhånd. Orgbrain er et datterselskap av en større satsing kalt Fintech Neo Group, som vi kommer tilbake til i en egen artikkel.

Offline webløsning

Dag og Peter setter i gang en liten demonstrasjon for digi.no. En mobiltelefon blir satt i flymodus for å vise at løsningen støtter bruk uten mobildata og wifi.

Serviceworker-teknologi, også det en nyere webstandard, handler typisk om bakgrunnprosesser og gir tilgang til webteknologi selv om du ikke er på nett, inkludert også push-varsling i nettleser.

– Her bruker vi det til å gi deg nettsiden, selv om du ikke er på nett. Endringene vi foretar mens vi er offline blir senere synkronisert ved hjelp av Git.

Salomonsen viser og forklarer at tekst skrevet inn på en nettside på denne måten kan mellomlagres i et JavaScript-dokumentformat. Da lagres teksten i et filsystem på enheten din. Dette er et vanlig Git-filsystem og nettsiden fungerer ifølge ham som en helt ordinær Git-klient.

Når enheten senere kobles til internett så sørger Git-systemets algoritmer for å unngå at ulike endringer kolliderer.

Prosjektet er nærmere forklart på Github, der kildekoden også er delt. Her en liten videosnutt de har laget.

– Dette kan gjenskape funksjonalitet vi kjenner fra eksempelvis Google Docs?

– Helt riktig. Men det Google gjør har bare de tilgang på. Dette er basert på teknologi som er tilgjengelig for alle utviklere. Etter hvert vil folk forvente slik teknologi i stadig større grad. Akkurat nå føler vi at vi er tidlig ute med dette, sier Dag Asheim.

Egentlig startet arbeidet med en forespørsel fra en kunde som jobber med bistandsprosjekter. De hadde behov for et rapporteringsverktøy som fungerte også uten internettforbindelse.

– Vi har laget dette for å bruke det selv. Det er fortsatt litt under utvikling, men vi har gjort det tyngste løftet allerede, sier Asheim.

Friprog-entusiasten ønsker også å skape et community rundt programvaren.

«Har gjort noen hack»

Salomonsen anslår at han har brukt 3-4 måneder på å tilpasse Git for kjøring i nettleser, med det han litt ydmykt beskriver som noen hack. 

Sentralt står tilpasning av et kodebibliotek skrevet i programmeringsspråket C kalt LibGit 2, som blant annet Microsoft er en storforbruker av.

– Vi har ikke skrevet et synkroniseringsverktøy fra scratch, men bygger på robust teknologi, som er utprøvd over mange år, og har tatt dette over på web.

Peter Salomonsen er hjernen bak bragden. Han har nedlagt et stort arbeid med å få Git til å virke i nettleseren. Foto:  Marius Jørgenrud

Resultatet er ikke et produkt, men noe de kaller en byggestein i fri programvare, som både inngår i konkrete løsninger fra Orgbrain, men som de også tror kan få en større utbredelse hos andre.

– Egentlig er det ikke så stor forskjell fra originalversjonen av Git. Arbeidet har stort sett vært å tilpasse HTTP-overføring over nett. C-biblioteket har et eget opplegg for dataoverføring, men i nettleseren må du bruke nettleserens vanlige metode, forklarer Peter.

Én ting er å ta et slikt bibliotek og kompilere det for WebAssembly. Det krever også tilpasninger og må helst gjøres stabilt. Dette er noe folk har snakket om siden 2012, først nå er det gjort, påpeker Salomonsen.

– Du må rett og slett være ganske dedikert for å få til dette. Hadde du gitt dette i oppgave til studenter ved en høyskole er det ikke mange som ville fått det til, sier Dag Asheim om kollegaens innsats.

Nyttig i strøk uten stabilt nett

Filsystemet er også tilpasset. LibGit bruker noe som blir kalt memorymapping mot filsystemet, men det er ifølge ham ikke helt støttet i WebAssembly, så her måtte det også gjøres justeringer.

Salomonsen har også skrevet et eget tilleggs API (programmeringsgrensesnitt) i JavaScript hvor du kan foreta standard Git-kommandoer som blant annet add, commit, push og pull.

– Ved å ta i bruk Git i nettleseren kan vi altså lage nettløsninger der flere kan arbeide sammen, selv om nettet er ustabilt eller borte i perioder. Det var jo akkurat det vår bistandskunde hadde behov for, men vi tror dette kan være nyttig også for mange andre, for eksempel styremedlemmer med dårlig nett på hytta, sammenfatter Dag Asheim.

Kommentarer (0)

Kommentarer (0)
Til toppen