Åpen kildekode (open source)
En viktig del av åpen og reproduserbar forskning er åpen kildekode. Det muliggjør testing og validering av blant annet analyser og modeller, og legger til rette for gjenbruk og videre utvikling av koden eller programvaren. God praksis for datahåndtering er i stor grad overførbar til kildekode, men det er noen hensyn og aspekter som er spesifikke for kildekode og programvare.
Kildekode og programvare som utvikles i forskningsprosjekt og annen akademisk virksomhet bør inkluderes som en del av publiserte forskningsresultater. Det er mye samme praksis som ved håndtering og publisering av data. Dette inkluderer versjonering, dokumentasjon og metadata som sørger for at forskningsresultatene blir mest mulig FAIR, åpne og reproduserbare. I tillegg kan fagfellevurdering av kode, både underveis i prosjekter, samt ved publisering, være et viktig ledd for kvalitetssikring. Se gjerne kommentarartikkelen A FAIRer future av R. Bast (Nature Physics, 2019), om publisering, gjenbruk og fagfellevurdering av kildekode.
Begrepsbruk og terminologi knyttet til åpen kildekode og programvare har en lang historikk. Uttrykket «Free software» (fri programvare) ble tatt i bruk på 80-tallet av the Free Software Foundation. Her brukes uttrykket «free» i betydningen fri, og ikke gratis. Fri programvare skal garantere «fire essensielle friheter»: frihet til å bruke, studere, dele og forbedre programvaren. Senere ble uttrykket «Open Source» (åpen kildekode) tatt i bruk av The Open Source Initiative, som har definert et sett av ti prinsipper som definerer åpen kildekode. Det er mange likheter og mye overlapp mellom fri programvare og åpen kildekode. Hovedforskjellen er i utgangspunktet mye knyttet til filosofisk og etisk begrunnelse, mens praksis ofte kan være lik, og de mest brukte åpne lisensene er godkjent av begge organisasjoner. Les gjerne mer om historikk, forskjeller og likheter: The Difference Between Free and Open-Source Software eller Why Open Source misses the point of Free Software.
Begrepene FOSS (Free Open Source Software) og FLOSS (Free, Libre Open Source Software) har blitt tatt i bruk for å være nøytrale betegnelser som inkluderer begge initiativene.
Publisering av kildekode
Flere nyttige verktøy og tjenester for å samarbeide om utarbeidelse av kode og versjonshåndtering brukes også for å gjøre kildekode og programvare åpent tilgjengelig. Noen eksempler på slike som er mye brukt inkluderer GitHub, GitLab.com og Bitbucket. I tillegg til å gjøre kode/programvare tilgjengelig gjennom slike tjenester, vil publisering i et egnet arkiv gjøre at den blir siterbar og mulig å gjenbruke, samt sikre langtidsbevaring. Et eksempel på et praktisk og nyttig løsning for dette, er integrasjon slik at materiale på GitHub kan arkiveres i Zenodo.
Mange av arkivene for forskningsdata kan også brukes for å arkivere og publisere kode og programvare. I tillegg er det en mulighet å publisere i egne tidsskrift for programvare, et eksempel er Journal of open research software. MIT libraries har utfyllende informasjon og råd om hvor og hvordan kode og programvare kan publiseres.
Lisensiering av kildekode
Åpne lisenser for kildekode og programvare skiller seg fra lisenser som gjerne anbefales for vitenskapelige publikasjoner eller data, og det er et stort sett av ulike åpne eller frie lisenser å velge mellom. Det anbefales å bruke en av de dedikerte lisensene for programvare, da disse er utarbeidet spesifikt med tanke på kode og hvordan denne kan endres og viderebrukes. En del lisenser tar også hensyn til mulige patentrettigheter i tillegg til opphavsretten. Se også Creative Commons sin FAQ om hvorfor CC-lisenser ikke bør brukes på programvare.
Siden det er et stort antall ulike åpne lisenser, presenteres her kun noen få av de vanligste og mest aktuelle programvarelisensene for publisering av kode utviklet i forskningsprosjekt. Et av de viktigste aspektene å ta hensyn til, er hvor «streng» en lisens er med tanke på betingelser for gjenbruk, og da særlig «copyleft». Copyleft er betingelser knyttet til at videre kopier og bearbeidelser gis tilsvarende muligheter og rettigheter som i den opprinnelige lisensen (tilsvarende Share Alike/Del på samme vilkår i noen av Creative Commons-lisensene).
MIT License
MIT License er en helt kort og konsis lisens som er blant de aller mest «tillatende» (ikke en copyleft-lisens), og har kun krav om at opphaveren krediteres og at lisensteksten inkluderes. Det regnes som en «akademisk» lisens, og er mye brukt i forskningsmiljøer. Lisensen kalles også «Expat License» og er nesten identisk med X11-lisensen (disse to beskrives av noen som varianter av MIT-lisensen).
Apache License 2.0
Apache License 2.0 er også en «tillatende» (permissive) lisens, men sammenlignet med MIT-lisensen kreves det i tillegg at endringer skal indikeres. Dette er en mer omfattende og «juridisk» lisens, som også dekker eventuelle patentrettigheter.
Mozilla Public License 2.0
Mozilla Public License er en «svak» copyleft-lisens. Den har som betingelse at kildekoden og eventuelle endringer publiseres under en tilsvarende lisens, men hvis andre filer inngår som del av arbeidet er ikke disse nødt til å ha samme lisens.
European Union Public License (EUPL) 1.2
European Union Public License (EUPL) 1.2 er en relativt ny lisens utviklet av EU. Den er copyleft, men har en tydelig definert liste over hvilke lisenser som er kompatible, og tillater sammenslåing med arbeider under disse andre lisensene. Dette kan være en fordel sammenlignet med andre mye brukte copyleft-lisenser, eksempelvis GNU GPL (GNU General Public License 3.0).
Nyttige ressurser
Med det store antallet ulike typer lisenser kan det være utfordrende å få oversikt over hva som er relevante forskjeller, hvordan man kan velge lisens og hva man har mulighet til å gjøre med andres kode. Flere gode ressurser sammenligner ulike lisenser, og gir innføring i noen av de viktigste aspektene som skiller mellom dem.
- Choosealicense.com gir råd om valg av lisenser for åpen kildekode basert på din situasjon. De har også en ryddig oversikt for å sammenligne de viktigste betingelsene og tillatelsene for noen av de mest brukte lisensene, samt en omfattende referansetabell med enda flere lisenser.
- Joinup Licensing Assistant er et omfattende verktøy utviklet av EU, hvor man kan velge fra et stort sett av lisenser for å sammenligne en rekke ulike aspekter.
- EUDAT license selector er et lite verktøy som gir hjelp til å velge lisens, både for data og kildekode. Denne er særlig nyttig for å se hvilke lisenser som er kompatible hvis man gjenbruker andres kode (men har et litt begrenset utvalg, blant annet mangler EUPL).
- CodeRefinery deler mange nyttige ressurser fra kursene de holder, inkludert en forelesning om «Social coding and open software».
Tekst: Open Science Toolbox/Sikt