Open source i praksis – Et indblik i en idealistisk hverdag

Open source i praksis - Et indblik i en idealistisk hverdag
Open source i praksis - Et indblik i en idealistisk hverdag

– Hvad er open source?

“Open source er software, hvor kildekoden er frit tilgængelig, så alle kan bruge, ændre og dele den.”.

– Er open source jura?

“Open source er ikke i sig selv jura, men det involverer juridiske aspekter. Open source er baseret på licenser, som er juridiske aftaler, der bestemmer, hvordan software må bruges, ændres og distribueres.”.

Aha.

Ovenstående blev til efter en kort interaktion med kunstig intelligens. Svarene er sådan set fine og rigtige, men selvfølgelig noget summariske og ikke helt udtømmende.

At svarene ikke er fyldestgørende, kan især ses af svar nummer to, som antyder, at open source er mere og andet end jura: Ja, open source er også en licens, og der er faktisk en hel bunke forskellige licenser, der på hver deres måde gradbøjer open source begrebet. 

Det er dog ikke ærindet med dette indlæg at redegøre for forskellene mellem de forskellige open source licenser, men snarere at påpege, hvad open source er, når det ikke kun er jura.

For det første er open source en filosofi, der udspringer af noget samfundsmæssigt idealistisk.

For det andet er open source en praksis, der skal sikre, at idealerne kan blive til virkelighed.

Selvom det er interessant, er det ikke det idealistiske og filosofiske aspekt, der skal udforskes her, for det er intuitivt at forstå og kan opsummeres kort og godt ved Free Software Foundation Europe’s slagord: Public Money, Public Code. 

Filosofien handler altså om noget så aktuelt som deleøkonomi og omfordeling af ressourcer: Købes arbejdskraft af nogen, bør frugten af den kunne komme andre til gode.

Smukt og godt, ingen tvivl her.

Men filosofien er imidlertid kun meningsfuld, hvis den bliver til virkelighed. Det gør den kun gennem klare og strukturerede arbejdsmetoder. 

Det er disse metoder, som skal sikre, at softwaren bliver anvendelig og i praksis lever op til de idealer, open source bygger på.

Derfor er open source også – og måske især? – en praksis.

Open source – En praksis

For ikke så længe siden begik et par af mine kolleger en lille analyse af en række danske open source produkter.

Formålet med analysen var at pege på, hvilke praksisser der øger anvendeligheden af kode, som er belagt med en MPL 2.0-licens. MPL 2.0 er en såkaldt permissiv open source-licens, der kræver, at også ændringer i den oprindelige kode distribueres som open source.

Analysen fandt frem til en række praksisser, som er et helt afgørende supplement til juraen og filosofien, før man kan tale om rigtig open source.

Det skal indledningsvist understreges, at disse praksisser ikke nødvendigvis er specifikt udviklet til at understøtte open source konceptet, men at de alle som en bidrager til at løfte open source kode op imod de højder, hvor idealerne har hjemme. 

De arbejdsgange, der har vist sig særligt effektive i denne henseende, kan med stor fordel understøttes af DevSecOps’ Shift-left-princip, som er helt afgørende for kodekvaliteten og dermed softwarens (gen)anvendelighed. Shift-left henviser til, at man flytter opgaver som afklaring, tests og kvalitetssikring så tidligt som muligt i udviklingsprocessen, fordi det reducerer risikoen for fejl og dyre tilbageløb ved idriftsættelse.

Arbejdsgangene udgør fundamentet for open source i praksis. Det er dem, der skal understøtte struktureringen, gennemsigtigheden og i sidste ende kvaliteten af koden. Arbejdsgangene skal gøre udviklingsprocessen gennemskuelig for tredjepart og sandsynliggøre, at koden er forståelig og genanvendelig. 

Lad os kigge lidt på de arbejdsgange, der er særligt betydende for at kode forvandles til open source kode.

Små, målrettede og veldokumenterede tilføjelser

Små, målrettede og veldokumenterede tilføjelser til koden (by addition, not modification) sikrer, at de systematiske code reviews – der er en anden, central praksis – er mulige for en kollega; hvis du får for meget kode kastet i nakken, kan du ikke overskue det, og code reviewet bliver derefter. 

Når det kan lade sig gøre, sørger de små ændringer også for, at fejl kan identificeres atomisk, rulles tilbage og korrigeres, og det sikrer tredjepart muligheden for at følge med i, hvad der sker i kodebasen. 

Tests

Koden skal være grundigt testet for at sikre, at ændringer ikke skader andre dele af systemet. Tests skal give udviklere tryghed for, at nye ændringer kan implementeres uden uventede bivirkninger og at eventuelle fejl opdages hurtigt. 

Dette hænger nært sammen med princippet om by addition, hvor ændringer tilføjes frem for at ændre eksisterende kode, og shift-left, hvor kvalitetssikring og testning integreres tidligt i udviklingsprocessen. 

Dokumentation

God dokumentation er en uundværlig del af open source, da den gør koden tilgængelig, forståelig og brugbar for både udviklere og slutbrugere. Effektiv dokumentation understøtter således open source filosofien ved at sikre, at koden kan forstås og videreudvikles af bidragsydere:

README-filer skal fungere som den første indgang til projektet og præcist beskrive projektets formål, installationskrav, og hvordan man kommer i gang med udvikling eller brug. 

API-dokumentation skal gøre det muligt for udviklere at integrere med softwaren eller bygge videre på den, uden at skulle foretage reverse engineering af koden, hvilket sparer tid og reducerer risikoen for fejl. 

Dokumentation relateret til fejlrettelser (bug reports via issue-tracking-systemer) og testresultater skal hjælpe med at opretholde kodekvaliteten og -stabiliteten af open source-projektet. At det er ok at blotlægge fejl, giver transparens, og en sådan blameless tilgang skaber en ikke-nulfejlskultur af ansvarlighed, hvori udviklere nemmere kan opdage, dele og rette fejl. Blive klogere, simpelthen.

Ved at fokusere på at skabe struktureret og tilgængelig dokumentation understøttes både den praktiske anvendelse af koden og filosofien bag open source: åbenhed, samarbejde og vedvarende forbedring.

Små, målrettede og veldokumenterede releases

Udover at små, hyppige og veldokumenterede releases reducerer risici for udrulning af fejlbehæftet software og øger muligheden for fejlfinding, bidrager de til at tredjepart kan gennemskue, hvad der er hændt hvornår i koden. Uden denne gennemsigtighed forbliver softwaren reelt lukket. 

Små og hyppige releases giver også muligheden for, at flere bidragsydere kan deltage aktivt i udviklingen, da deres ændringer og rettelser hurtigt kan blive en del af projektet. Det fremmer en dynamisk og fælles tilgang til udvikling, hvor idéer og løsninger kontinuerligt kan deles og forbedres.

Open source er altså…

… langt mere end bare en softwarelicens; det er en filosofi, en praksis og en global bevægelse, der lykkeligvis ser ud til at få mere og mere medvind i disse dage, hvor såvel priserne som den manglende konduite fra Big Tech ser ud til at begynde at give bagslag.

Når – ja, når – open source vinder den udbredelse, idéen fortjener, er det vigtigt at have en fælles forståelse for, at det ikke er nok at drømme stort og overholde de juridiske krav:

Det er helt afgørende at anvende strukturerede metoder, der sikrer kodekvalitet, samarbejde og åbenhed, for det er dem, der sikrer troværdighed og gennemsigtighed og i sidste ende borger for, at den oprindelige open source idealisme kan blive realiseret.

Open source i praksis - Et indblik i en idealistisk hverdag

Læs mere

Kan AI bidrage til udviklingen af OSdatascanner?

Udviklerdage 2024: Kan AI bidrage til udviklingen af OSdatascanner?

AI er et omtalt emne, og potentialet er i nogle sammenhænge stort. Til vores udviklerdage i november var jeg vært ved en workshop, som havde til formål at afdække AI-mulighederne i vores produkt OSdatascanner. Her skulle vi bl.a. undersøge, hvorvidt man i OSdatascanner kan opsætte et aktivt læringsflow med semantisk analyse til at håndtere sygemeldinger.

Læs mere »
Erna - At være UX-praktikant hos Magenta

At være UX-praktikant hos Magenta

Erna Holst Rokne læser Digital Design og har på sit 9. semester været i praktik i Magenta. Herunder fortæller hun om sit praktikforløb. Da jeg skulle vælge praktiksted, vidste jeg med sikkerhed, at jeg ønskede et sted, hvor jeg kunne få mulighed for at arbejde med rigtige projekter og virkelig rykke på tingene.

Læs mere »