Hvilken åpen kildekode ligger i produktet ditt, og spiller det noen rolle?

Av Weapp · Oppdatert

Nesten all bestilt kode inneholder komponenter med åpen kildekode. Permissive lisenser som MIT er uproblematiske å bruke kommersielt, mens sterke copyleft-lisenser som GPL i noen tilfeller kan tvinge deg til å åpne din egen kode. Krev en lisensoversikt fra leverandøren og reguler spørsmålet i avtalen slik at det ikke dukker opp overraskelser når en investor går gjennom koden.

Nesten ingen bestilt kode skrives fra bunnen av. Den bygges oppå tusenvis av ferdige komponenter med åpen kildekode, og det er både klokt og nødvendig. Å finne opp alt selv ville vært sløsing. Men hver komponent kommer med en lisens, og de vilkårene følger med inn i produktet ditt. Som regel er det uproblematisk. Noen ganger kan én eneste feilvalgt komponent skape et spørsmål som først dukker opp når en investor går gjennom koden. Denne guiden forklarer hva som gjelder, og hvordan du holder oversikten.

Permissive lisenser mot copyleft i klartekst

Det finnes mange lisenser for åpen kildekode, men i praksis faller de i to leirer som er verdt å forstå. Forskjellen handler om hva lisensen krever tilbake av deg.

Permissive lisenser, der de vanligste er MIT, Apache og BSD, lar deg i prinsippet gjøre hva du vil med koden, inkludert å bygge den inn i et lukket, kommersielt produkt som du selger. Kravet er stort sett bare at du beholder opphavsrettsmerknaden. De skaper sjelden problemer og utgjør ryggraden i de fleste produkter.

Copyleft-lisenser stiller et motkrav: Bruker du koden, skal endringer, og i de sterke variantene hele verk som bygger på den, gjøres tilgjengelige på de samme åpne vilkårene. Den mest kjente er GPL. Tanken er at det som er bygd åpent, skal forbli åpent. Det er en helt legitim modell, men den passer dårlig hvis forretningsideen din bygger på å holde din egen kode lukket. En vanlig misforståelse er at «åpen kildekode betyr gratis og fritt». Gratis å bruke, ofte, men ikke alltid fri for vilkår.

LisenstypeHva det innebærer for produktet ditt
Permissiv (MIT, Apache, BSD)Fritt å bruke i lukket kommersielt produkt, behold opphavsrettsmerknaden
Svak copyleft (LGPL, MPL)Endringer i selve komponenten skal deles, den øvrige koden din berøres som regel ikke
Sterk copyleft (GPL, AGPL)Kan kreve at verk som bygger på og spres med koden, også åpnes

Krev en lisensoversikt fra leverandøren

Problemet med lisenser er at de er usynlige i det ferdige systemet. Koden fungerer likt uansett hvilke vilkår komponentene har, så en uegnet lisens merkes ikke i drift, bare ved en gjennomgang. Løsningen er å gjøre det usynlige synlig.

Krev derfor en lisensoversikt fra leverandøren: en fortegnelse over alle komponentene med åpen kildekode som inngår, med lisensen til hver av dem. Et moderne prosjekt kan inneholde hundrevis av avhengigheter, ofte avhengigheter som selv har avhengigheter, så listen lages med verktøy snarere enn for hånd. Det viktige er at den finnes, at den holdes oppdatert når nye komponenter kommer til, og at noen faktisk ser på den. Da ser man med en gang, mens det fortsatt er enkelt å bytte ut komponenten, om det ligger en sterk copyleft-lisens der den ikke burde ligge. En seriøs leverandør har orden på dette og synes ikke spørsmålet er rart. Tvert imot er uviljen mot å lage en slik oversikt i seg selv et varselsignal.

Lisensspørsmålet i avtalen og ved gjennomgang

Lisenshåndtering skal ikke avhenge av god vilje, men stå i avtalen. Et par formuleringer gjør stor forskjell. La avtalen si at leverandøren er ansvarlig for at levert kode ikke inneholder komponenter med lisenser som strider mot hvordan dere har tenkt å bruke produktet, og at en oppdatert lisensoversikt skal inngå i leveransen. Da blir det leverandørens sak å holde det ryddig, ikke en overraskelse for dere i ettertid.

Spørsmålet får ekstra tyngde ved en investering eller et oppkjøp. Da blir kodens lisenser rutinemessig gjennomgått som en del av due diligence, og en sterk copyleft-komponent i kjernen av produktet kan bli en reell forretningsrisiko, noe som senker verdsettelsen eller setter transaksjonen på pause til det er utredet. En ryddig og dokumentert lisenssituasjon er derfor ikke bare teknisk hygiene, men et fortrinn som gjør selskapet lettere å investere i. Litt innsats for å holde orden tidlig er billig. Å rydde opp i et lisenskaos midt i en pågående transaksjon er dyrt og stressende.

Et konkret scenario

Et selskap hadde i et par år fått bygd produktet sitt uten at noen holdt oversikt over lisensene. Før en investeringsrunde gjorde investorens rådgivere en lisensgjennomgang og fant en komponent under sterk copyleft dypt inne i en sentral funksjon. Spørsmålet ble straks om kjernen i produktet risikerte å måtte åpnes.

Utredningen tok tid og skapte usikkerhet i en sårbar fase. Til slutt viste det seg at komponenten kunne byttes mot et permissivt alternativ uten større arbeid, og transaksjonen kunne gå videre. Men lærdommen var tydelig: Hadde det funnes en lisensoversikt som ble holdt oppdatert fra starten, ville komponenten aldri ha blitt bygd inn, eller den ville i det minste ha blitt byttet ut lenge før den ble et tema ved forhandlingsbordet.

Hold orden fra starten

Åpen kildekode er en ressurs, ikke en risiko, så lenge du vet hva du bruker. De aller fleste komponenter er uproblematiske, og poenget er ikke å bli redd for åpen kildekode, men å ha oversikt over den. En lisensoversikt, et par linjer i avtalen og noen som faktisk leser listen, gjør mye for å unngå overraskelsene som ellers dukker opp i verst tenkelige øyeblikk.

Vi i Weapp holder orden på lisensene i det vi bygger og hjelper gjerne kunder med å gå gjennom hva som ligger i et eksisterende produkt, som en del av tjenestene våre. Er dere usikre på hva koden deres hviler på? Ta kontakt, så ser vi på lisenssituasjonen sammen før den blir noen andres sak.

Ofte stilte spørsmål

Hva er åpen kildekode-lisenser, og hvorfor angår de meg som kunde?

Nesten all moderne programvare bygges på åpne komponenter, og hver slik komponent har en lisens som styrer hvordan den får brukes. Som kunde arver du de vilkårene i produktet ditt. De fleste lisenser er helt uproblematiske, men noen stiller krav som kan påvirke om du får holde din egen kode lukket. Derfor er det verdt å vite hva som ligger i det du betaler for.

Hva er forskjellen på permissive lisenser og copyleft?

Permissive lisenser, som MIT og Apache, lar deg bruke koden nesten fritt, også i et lukket kommersielt produkt, så lenge du beholder opphavsrettsmerknaden. Copyleft-lisenser, som GPL, krever til gjengjeld at endringer, og noen ganger hele verk som bygger på koden, gjøres tilgjengelige på de samme vilkårene. Permissive lisenser gir frihet, copyleft krever åpenhet tilbake.

Kan GPL tvinge meg til å åpne min egen kode?

I noen tilfeller, ja. Sterk copyleft som GPL er utformet slik at programvare som bygger videre på den og distribueres sammen med den, må kanskje frigis på de samme åpne vilkårene. Nøyaktig når det slår inn, avhenger av hvordan koden brukes og spres, og det er et juridisk innfløkt spørsmål. Nettopp derfor vil du vite om det finnes GPL-kode i produktet før den bygges inn, ikke etterpå.

Hva er en lisensoversikt, og hvorfor skal jeg kreve en?

En fortegnelse over alle komponentene med åpen kildekode i systemet og lisensene deres. Den viser svart på hvitt hva produktet hviler på og om noen lisens stiller krav som krever ettertanke. Å kreve en fra leverandøren, og at den holdes oppdatert, er den enkleste måten å unngå ubehagelige overraskelser på, særlig fordi moderne prosjekter kan inneholde hundrevis av avhengigheter.

Hvordan påvirker åpen kildekode-lisenser en investors gjennomgang?

Ved en investering eller et oppkjøp blir kodens lisenser ofte gjennomgått som en del av due diligence. Finner man copyleft-komponenter som kan tvinge frem åpning av kjerneproduktet, kan det senke verdsettelsen eller stoppe transaksjonen til det er utredet. En ryddig lisenssituasjon, dokumentert i en oppdatert oversikt, er derfor ikke bare et teknisk spørsmål, men et forretningsmessig fortrinn.