Öppen källkod

Öppen källkod, öppen programvara eller öppenkod (engelskan: open source), avser oftast datorprogram vars källkod inte är proprietär utan är tillgänglig att använda, läsa, modifiera och vidaredistribuera för den som vill. Detta gör att programutvecklare kan återanvända programkod som andra har utvecklat i egna projekt utan att betala licensavgifter till kodens ägare, och kan anpassa koden till sina användares behov utan att hindras av immaterialrättsliga restriktioner. Som motprestation erbjuder utvecklarna vanligen sina modifikationer tillbaka till den ursprunglige upphovspersonen eller till den som för tillfället underhåller programvarans officiella version, som kan välja att göra dem till en del av den officiella versionen. De mest framgångsrika öppen källkodsprojekten är vanligen uppbyggda kring en internet-community av ett stort antal bidragsgivare, som samverkar för att programvara och dokumentation ska utvecklas snabbt samt testar och inspekterar koden för att säkerställa att den fungerar som tänkt.

Relaterade begrepp

Öppen källkod ska inte sammanblandas med gratisprogram (freeware) och shareware. 

Öppen källkod är väsentligen identiskt med det äldre begreppet fri programvara och det nyare begreppet libre software, begrepp som emellertid är starkare förknippade med Richard Stallman och en ideologiskt inriktad rörelse som verkar för stark copyleft, se nedan. 

Vidare begrepp som även kan tillämpas på annat än källkod är crowdsourcing, öppen innovation och öppet innehåll, exempelvis öppna digitala lärresurser. Det engelska begreppet open source kan även avse öppen hårdvara (open source hardware), exempelvis elektroniska kretsar eller mekaniska konstruktioner, såsom bilprojektet OScar (open source car), vilka inte hindras av patent, upphovsrätt och designskydd. I denna artikel åsyftas emellertid endast programvara.

Öppen källkod ska inte sammanblandas med proprietära öppna system, exempelvis kommersiella öppna operativsystem såsom Open VMS och Unix, och öppen arkitektur såsom IBM PC. Öppna system i denna äldre betydelse bygger på öppna standarder, det vill säga publikt tillgängliga specifikationer för gränssnitt. Dessa möjliggör utveckling av kompatibla plattformar och tredjepartsprodukter, eventuellt mot licensavgift för Frand-patent, samt portering av operativsystem till andra plattformar, men ger inte rätt att självständigt utveckla den egentliga produkten.

Etymologi och alternativa definitioner
Begreppet öppen källkod spreds först av Open Source Initiative, som grundades 1998 av Eric S. Raymond och Bruce Perens. Definitionen på öppen källkod konstruerades efter den senares Debian Free Software Guidelines. 

Begreppet "öppen källkod" kan beteckna:
 En licens för program, vilka skyddas av upphovsrätten, som (genom att tillåta till exempel modifiering och vidarespridning av programmet) faller under OSI:s definition på öppen källkod, se nedan;
 Ett program som är distribuerat med en sådan licens;
 En programvaruutvecklingsprocess som är förknippat med sådan programvara;
 Kulturella företeelser som är förknippat med sådan programvara.

En programvarulicens för öppen källkod skall enligt Debian Free Software Guidelines och därmed OSI:s kriterier:
 tillåta obegränsad vidaredistribution  
 tillåta distribution av källkod och motsvarande kompilerade kod (men får göra undantag för patchar)
 tillåta modifieringar och härledda versioner, och att dessa distribueras under samma licensvillkor 
 inte diskriminera person, grupp eller användningsområde, exempelvis förhindra kommersiell användning
 vara tillämplig för alla till vilka programmet distribueras, och inte specifik för något system
 inte kräva att all annan programvara som sprids på samma medium måste vara öppen källkod, eller lägga andra begränsningar på annan programvara som distribueras med den licensierade programvaran.

Debian ger GPL, BSD och "" som exempel på öppna licenser.

Affärsmodell och incitament 

Öppen källkod kan finansieras genom reklam eller avgifter för distribution av den kompilerade koden, även om det senare var vanligare förr när CDROM och DVD var ofta använda distributionsmedium. Utvecklingen kan också finansieras (direkt eller indirekt) av personer, organisationer och företag som behöver koden för sin verksamhet.

Vissa projekt för öppen källkod ger stora inkomster åt något bakomliggande företag, till exempel genom försäljning av dokumentation, support, konsultuppdrag eller relaterade icke-öppna program, eller som del av skräddarsydda lösningar för specifika kunder.

De flesta projekt med öppen källkod administreras av enskilda eller organisationer utan ekonomiskt vinstsyfte, med många oavlönade bidragsgivare. Öppen källkod kan till betydande del även finansieras av myndigheter och institutioner som vill kunna samarbeta om utvecklingen med andra med liknande behov av programvara i sin verksamhet och som vill ha stort inflytande över utformningen av den programvara man använder. Utvecklingen finansieras även av företag som vill reducera utvecklingskostnader genom att återanvända annan öppen källkod i sina produkter. Inte sällan har projekt med öppen källkod startats som demonstrator eller proof-of-concept av doktorander och forskare som vill få spridning för sina forskningspublikationer, eller som vill kunna utveckla forskningsverktyg i samverkan med studenter och andra forskare utan att hindras av licensavgifter och restriktioner.

Upphovspersonen har rätt att använda sin egen kod under flera olika upphovsrättsliga villkor. Det förekommer därför att företag finansierar sin utveckling enligt affärsmodellen freemium genom att använda den öppna källkoden också i en proprietär programversion. Den senare versionen kan ha fler funktioner som vissa användare är beredda att betala för och den blir marknadsförd genom att den öppna och kostnadsfria version får stor spridning. Om den öppna versionen använder copyleft-licens (se nedan) måste företaget säkerställa att den proprietära versionen inte inkluderar kod från andra bidragsgivare som endast släppts under copyleft-licenser. Om den öppna versionen istället använder public domain-licens kan företaget använda andra bidragsgivares öppna källkod även i den proprietära versionen.

Licensformer

Vid öppen källkod attribueras ofta varje källkodsfil med (c) (copyright) följt av upphovspersonernas namn och datum, och förses med uppgift om under vilka immaterialrättsliga villkor koden får spridas och användas. Det finns ett stort antal programvarulicenser för öppen källkod, med varierande villkor.  

Licenser av typen copyleft syftar till att säkerställa att bidragsgivare delar med sig av sin vidareutveckling av koden. Den som säljer eller sprider koden till andra (men inte den som kör sin egen kod) måste därför distribuera den öppna källkoden med den kompilerade programvaran, åtminstone om koden har ändrats. 

Licenser för svag copyleft tillåter att koden kombineras med proprietär programvara genom länkning och anrop mellan programkompontenter, medan stark copyleft förhindrar detta (utom då programkomponenten med copyleft anropas på sätt som inte påverkas av upphovsrätten). Stark copyleft brukar inte användas för operativsystemets systembibliotek och andra centrala programbibliotek såsom drivrutiner och vissa grafikbibliotek. Detta därför att stark copyleft skulle hindra användarna från att köra proprietära tillämpningsprogram på operativsystemet ifråga, och skulle begränsa programbibliotekets spridning. Stark copyleft används vid vissa applikationsprogram för att hindra bidragsgivare från att ta sig runt kravet på att dela med sig av sina modifieringar genom att paketera sin kod som en avgränsad proprietär programkomponent som länkas samman med den öppna källkoden. 

Den mest spridda copyleft-licensen torde vara GNU GPL (med stark copyleft). FSF har också publicerat GNU LGPL (med svag copyleft), och den ändå mer restriktiva GNU AGPL (som hindrar bidragsgivare från att ta sig runt kravet på att dela med sig av källkoden genom att inte distribuera den kompilerade koden men köra den som Software as a service på en ASP-server i ett datornätverk).

Tillåtande licenser (permissive licenses), exempelvis public domain, lyder inte under copyleft-villkor. Det innebär att den som modifierar, säljer eller annars sprider programvaran inte är skyldig att göra källkoden tillgänglig. Flertalet tillåtande licenser förutsätter att upphovspersonen attribueras och att licensvillkoren nämns. Kända exempel är ursprunglig och modifierad BSD-licens och Apache License.

De problem som gäller när man försöker kombinera programkomponenter med potentiellt inkompatibla licensformer kallas licensspridning. En tillåtande licens kan (med vissa undantag) omvandlas till en mer restriktiv licens, exempelvis från public domain till copyleft, men inte i omvänd riktning (utom av upphovspersonerna själva, då de kan parallellpublicera sina egna kodrader under flera licensformer). Programkod under de flesta tillåtande licenser kan kombineras med varandra, med proprietär programkod eller programkod med copyleft. I de senare fallen är det i praktiken den proprietära licensen respektive copyleft-licensen som gäller för det kompilerade programmet (medan de ursprungliga licenserna gäller för enskilda källkodsfiler).

Distribution 
Det är fullt möjligt för en utomstående att kopiera och sälja program med öppen källkod. Eftersom vem som helst som fått tag på programmet kan erbjuda det vidare gratis tenderar program med öppen källkod att finnas tillgängliga på Internet för gratis nedladdning. Det betyder inte att sådana program inte kan säljas, i själva verket ingår i licensen ofta krav på att den som fått programmet skall få ge det vidare mot betalning. I priset ingår ofta distributionsmedium, installation eller möjlighet till support.

För utvecklarna är det ofta en fördel att programmet används av så många som möjligt. Dels innebär det att flera personer kan bidra till utvecklingen, dels att programmet blir mer känt och därmed attraktivare. Köpstarka kunder kommer i många fall att ändå vända sig till de ursprungliga utvecklarna, dels för att säkert få den officiella versionen, dels för att de som utvecklat programmet kan erbjuda konsulttjänster, då de känner programmet väl.

Community
Karaktäristiskt för öppen källkodsprojekt är att programmen utvecklas, testas och underhålls av oberoende personer, organisationer och företag som koordinerar sitt samarbete via ett community på internet.
 
Arbetssättet skiljer sig från utveckling av klassisk proprietär källkod där det vanligen är ett enda företag som utvecklar och tillhandahåller programmet eller en avgränsad komponent i produkten, och hemlighåller källkoden för andra företag, och där företagets anställda har tydliga ansvarsområden. Dock finns det även inom öppen källkods-projekt vanligen en fast hierarki med en eller ett fåtal personer som har sista ordet om vad som kommer att bli en del av den officiella produkten. Den som beslutar vilka bidrag som får föras in i det slutliga projektet kallas  (med liknande betydelse som kommittent).

Alternativa versioner kan underhållas parallellt med den officiella, inom projektet. Så är självklart fallet med kod som inte ännu uppfattas som mogen, men det finns ingen principiell skillnad mellan kod som avvisats för att de ledande rösterna inte tror på den och kod som endast behöver finslipning. Ibland utvecklas den alternativa versionen (förgreningen) som ett skilt projekt, men man strävar i allmänhet efter att så långt som möjligt hålla koden kompatibel med den officiella versionen.

Den som leder ett programvaruprojekt med öppen källkod kan inte hindra en grupp med avvikande åsikter att kopiera programvaran och själv utveckla sin egen avknoppade version (”fork”). Risken att förlora värdefulla bidragsgivare eller en betydande marknadsandel tvingar projektledarna att vara lyhörda för andras åsikter. Denna lyhördhet uppfattas också annars som en dygd och är en förutsättning för att attrahera utomståendes hjälp.

En fork inträffar vanligen på grund av en schism, och ska inte sammanblandas med en förgrening (”branch”), som är en avsiktlig uppdelning av versionsträdet i syfte att påskynda utvecklingen inom huvudgrenen, och senare kunna återföra kod från den andra grenen.

Utvecklingsverktyg
Deltagarna i ett projekt inom öppen källkod är ofta utspridda på olika geografiska platser. Därför finns det ett behov av verktyg för att underlätta samarbete och kollaborativ utveckling av koden.

Källkoden, och ibland även kompilerade versioner av koden, lagras ofta på en öppen webbaserad källkodsdeponering (eng. repository). Exempel på några sådana är Sourceforge, Google Code, Github och GNU Savannah. Dessa webbplatser tillhandahåller ofta även diskussionsforum, lagringsplats för nedladdningsfiler, "hemsida", hjälp sökes-annonsering och flera av nedanstående utvecklingshjälpmedel.

System för versionshantering som till exempel CVS, Subversion och Git är exempel på verktyg för att centralt hantera projektets källkodsfiler samt de förändringar och olika versioner som skapas av dessa. 

Verktyg för testning, kompilering och felrapportering hjälper till att bevara stabiliteten för ett mjukvaruprojekt bestående av många utvecklare men som inte har någon enskilt ansvarig person, kvalitetskontrollant eller teknisk support. Tinderbox är ett system för att hantera kompilering och kompileringsfel för decentraliserad kod. 

Bugzilla och Gnats är så kallade bugtrackers (felrapporteringssystem) där användare kan rapportera buggar. En buggrapport kan även avse förslag på ny funktionalitet. Systemen hjälper utvecklarna att följa upp statusen av buggrapporterna, på liknande vis som ett ärendehanteringssystem.

Kommunikation mellan utvecklare sker förutom via mailinglistor ofta även via IRC och snabbmeddelanden. Projektets dokumentation redigeras ofta kollaborativt på en wiki.

Exempel på projekt 
Några exempel på stora projekt med öppen källkod är de olika BSD-operativsystemen (som Apples IOS är delvis baserad på), Linux-kärnan (som Googles Android är baserad på), webbservern Apache, databasen MariaDB, programspråket Perl, kontorssviten Libreoffice och webbläsaren Mozilla/Firefox.

Öppen källkod kontra fri programvara och freeware 

Öppen källkod och fri programvara är två olika namn för mer eller mindre samma sak. Dessa två begrepp ska inte sammanblandas med freeware (gratisprogramvara). De förra behöver inte vara gratis, medan freeware i allmänhet är proprietär, det vill säga utan friheterna de förstnämnda har. Begreppen har alla engelskspråkigt ursprung, och då "free" betyder både fri och gratis förekommer viss begreppsförvirring utanför rörelserna för öppen källkod och fri programvara.

När man talar om öppen källkod gentemot fri programvara avser man skillnaden att öppen källkods-rörelsen inte använder samma politiska termer som den närbesläktade rörelsen för fri programvara. FSF, som skapade begreppet "fri programvara" på 1980-talet, har en uttalad politisk strävan efter vad de betecknar som frihet och programmerares och användares rättigheter, medan OSI, som skapade begreppet "öppen källkod" på slutet av 1990-talet, försöker att bara tala om de praktiska skillnaderna och fördelarna (gentemot "ofri" programvara, också känd som stängd källkod eller proprietär programvara) som den här typen av programvara innebär för till exempel företag och investerare.

OSI:s argument för det är att programmerare ofta redan känner till fördelarna med den här typen av licenser, till skillnad från företagskulturen som blir avskräckt av pratet om "frihet" och "rättigheter". Eric S. Raymond, som (tillsammans med Bruce Perens) var den förste att popularisera begreppet (efter att ha hört det från ) har betecknat "öppen källkod" som "ett sätt att marknadsföra fri programvara"; med det menade han att kvalitén hos sådan programvara och sådana utvecklingsprocesser är bra nog att stå på egna ben utan att behöva åtföljas av filosofiska resonemang.

En vanlig generalisering om de två grupperna är att de som använder termen "fri programvara" i större utsträckning skulle arbeta i ideella organisationer medan de som använder termen "öppen källkod" oftare skulle arbeta i den kommersiella företagsvärlden. Det finns dock många motexempel, till exempel  och Cygnus Solutions.

Många väljer att ta avstånd från konflikten mellan OSI och FSF genom att använda en av de gemensamma förkortningarna FOSS (för Free, Open Source Software) eller FLOSS (för Free Libre Open Source Software).

Samhällsbetydelse
Öppen källkod anses av sina förespråkare ha flera fördelar även för samhället i stort. De menar att öppen källkod:
 leder till ökat spridande av innovationer och ny teknologi.
 motverkar instängningseffekter på marknaden och utnyttjande av monopolställning. 
 är immun mot att köpas upp och läggas ner av affärsstrategiska skäl, då vem som helst har rätt att fortsätta utvecklingsarbetet i egen regi. 
 minskar programutvecklingens kostnader för juridisk kompetens och vinstkrav. 
 ger programmeringskunniga eller institutionella användare i olika länder möjlighet till demokratiskt inflytande över programvarans utformning. 
 ökar programvarans tillförlitlighet, då säkerhetshål och buggar upptäcks och åtgärdas tidigt när många granskar och testar koden.
 säkerställer kompatibilitet och interoperabilitet mellan system, eftersom öppen källkod har öppna specifikationer.

Kritik  
Öppen källkodsprojekt drivs ofta av teknikentusiaster och forskare. Öppen källkod kritiseras därför för att leda till komplicerade användargränssnitt, teknikdriven utveckling och odokumenterad funktionalitet istället för att utgå från icke programmeringskunniga användares behov och företags affärsprocesser. 

Det politiska syftet med införandet av patentlagstiftning och annan immaterialrätt var att attrahera riskvilligt kapital till kostsamma utvecklingsprojekt och därmed ekonomiskt stimulera fram nya innovationer. Investerarnas riskvillighet förutsätter att de garanteras att få avkastning för investeringar i framgångsrik teknik, exempelvis genom avgifter från licenstillverkning och genom att kunna stämma den som plagierar. Hemlighållande av utvecklingsresultat möjliggör konkurrens och tävling, vilket ses som en viktig drivkraft för utveckling av nya tekniska lösningar. Vissa stora mjukvaruföretag argumenterar för att det upphovsrättsliga skyddet av programvara behöver stärkas ytterligare för att stimulera utvecklingen, exempelvis genom förlängd upphovsrätt och genom att införa lagstiftning om mjukvarupatent även i Europa. Företrädare för detta synsätt ser ofta med misstro på öppen källkod, som de menar minskar investerares och företags villighet att utveckla avancerad teknologi, vilket leder till att skattefinansierad tillämpad forskning istället måste bedriva utvecklingsarbetet. 

Trots att öppen källkod bland annat har till syfte att minska kostnaden för juridisk kompetens som krävs vid proprietär programutveckling, så har företag som utvecklar öppen källkod varit inblandade i stora juridiska tvister med företrädare för proprietär programvara.

Kritik mot begreppet 
En av de främsta anledningarna till att begreppet "öppen källkod" myntades var att ordet "fri" var så tvetydigt på engelska, där det ofta bara betyder "gratis". Många hävdar dock att begreppet "öppen källkod" också är väldigt tvetydigt, på grund av de många vanliga missförstånd som det har orsakat. Exempel på sådana missförstånd är:
 Att ett program vars källkod är tillgänglig för läsning alltid skulle vara "öppen källkod", även om dess licens inte tillåter till exempel fri vidarespridning
 Att "öppen källkod" och "fri programvara" skulle vara olika saker. Motiven bakom de båda skiljer dock.
 Att den ena rörelsens förespråkare skulle föredra copyleft-licenser och den andra inte göra det (det är egentligen en debatt som är ortogonal mot den här uppdelningen, och förespråkare för båda lägren finns inom både fri-programvara-kultur och öppen-källkods-kultur)

En annan kritik som riktats mot rörelsen är att den ägnar sig åt lika mycket filosoferande och politiserande som fri-programvara-rörelsen, men på ett annat sätt. Där förespråkare för fri programvara diskuterar rättigheter och frihet diskuterar förespråkare för öppen källkod ofta utifrån ett politiskt och ekonomiskt system (företagskapitalismen) som de då bekräftar och bevarar.

Historiskt perspektiv 
Införandet av begreppet sammanföll med att media fick upp ögonen för den här typen av programvara, och många är eniga om att begreppet "öppen källkod" påskyndade den processen på ett annat sätt än vad begreppet "fri programvara" har gjort. Många individer och företag som varit tveksamma att tala om, och använda, fri programvara kunde nu göra det under namnet öppen källkod.

Idag anser dock många att begreppen är så pass sammanblandade att den praktiska skillnaden bara är relevant för ett fåtal organisationer (deltagarna i licensgodkänningsgrupperna hos FSF, Debian och OSI – de två sistnämnda har dock uttryckt en önskan om ökad kommunikation mellan grupperna) och individer – Richard Stallman (på FSF) och Eric S. Raymond håller båda fast vid vardera begrepp som de själva myntat. 

Skillnaden har luckrats upp, dels genom att företrädare för begreppet fri programvara i högre grad än tidigare har börjat talat om de tekniska och ekonomiska fördelarna för företag och andra organisationer, dels genom att företrädare för begreppet öppen källkod i vissa sammanhang har talat om frihet och rättigheter.

Se även 

Infoanarkism
Fri programvara
Software Freedom Day
OpenSourceSweden
 Öppen hårdvara

Referenser

Externa länkar 
Open Source Initiative - Initiativet för öppen källkod
Free Software Foundation - Organisation för fri programvara
FSF Europe - Organisation för fri programvara i Europa
SourceForge - Webbplats med fokus på utveckling och nedladdning av program med öppen källkod
Open Source Software List (en)
Open Source In Vitro Meat

 
Öppet innehåll