Open source för mjukvaruutvecklare

   16 dec 2021

På 3bits bygger en stor del av den utveckling vi gör på open source. Några av de open source-projekt vi aktivt nyttjar är nopCommerce, React och .NET.

Open source för mjukvaruutvecklare

Hur fungerar open source-licenser?

För att svara på denna fråga behöver vi till en början förstå vad upphovsrätt eller copyright, som vi ofta säger, betyder samt hur det fungerar. Det är ett långt och invecklat kapitel inom juridiken, men kraftigt förenklat kan man säga att den person som skapar ett verk äger rätten att bestämma hur verket får användas. Termen "ett verk" kan betyda så skilda saker som en bok, en film, en låt, kartor, bildkonst, eller, mer relevant för oss inom datorvärlden, datorprogram eller mjukvara. Lagstiftningen kring upphovsrätt är i stort sett enig över hela världen, men avsteg kan förekomma i vissa länder.

För mjukvaruutvecklare betyder det att all källkod som skrivs automatiskt blir upphovsrättsskyddad. Normalfallet är att den fysiska personen som skapat verket också får upphovsrätten till detta. Är man anställd övergår upphovsrätten automatiskt till arbetsgivaren för datorprogram som skapas under arbetstid. Detta går dock att avtala bort, och det går även att genom avtal överlåta upphovsrätten till andra fysiska eller juridiska personer.

Det vi brukar kalla programvarulicenser, eller ofta bara licenser, fungerar som ett typ av avtal som upphovsrättsinnehavaren använder sig av för att tala om på vilket sätt andra får använda sig av det upphovsrättsskyddade verket. Företag som tillverkar och säljer programvara som produkt använder sig regelbundet av så kallade proprietära licenser, vilka ofta starkt begränsar vad köparen/användaren av dessa licenser kan göra med mjukvaran. Det är till exempel mycket ovanligt att man får sprida verket vidare eller undersöka det för noga genom så kallad "reverse engineering".

Open source-licenser står i kontrast till dessa proprietära licenser på så vis att de tillåter att användare får använda programmet på sina egna villkor. Man får använda datorprogrammet som man vill, man får undersöka hur det fungerar samt att sprida det vidare utan upphovsrättsinnehavarens explicita tillåtelse. Att undersöka hur datorprogrammet fungerar underlättas i open source-fallet genom att man också får tillgång till själva källkoden till datorprogrammet, och inte bara får binärfiler som för människor oftast är ytterst svårlästa.

Historielektion

I början på 1980-talet när utövandet av proprietära licenser slog sig in i dåtidens universitetsmiljöer i framförallt USA, reagerade en del så kallade hackers starkt och ville inte att all programvara skulle bli inlåst och oåtkomlig för all framtid. De ville att alla skulle kunna läsa, förstå för att kunna lära sig mer om programmering, ändra koden för att anpassa den till sina egna behov, samt hjälpa andra med deras behov. Detta var ursprunget till GNU-projektet, som sedan dess åtskilliga projekt och licenser utvecklats från. Denna idé kallades ursprungligen inte för open source, utan för "free software". Det som idén kring free software och GNU-projektet ville uppnå var att alla skulle få använda mjukvara obegränsat. 

På den vägen skapades till slut idén om copyleft i form av licensen GPL (GNU Public License) som säger: "Här är lite mjukvara. Du kan kopiera den när du vill; du kan ändra på den på vilket sätt du vill; du kan undersöka den och göra vad du vill med idéerna den innefattar; men om du sprider den vidare, antingen oförändrad eller som del av något annat du byggt, sprid också vidare rättigheterna du fick i den här mjukvaran som du började med." Eller med andra ord: "dela och dela lika; inte bara av denna mjukvara, utan även det du bygger med hjälp av den." 

Detta orsakade självklart oro i företagsvärlden, där man gärna vill kunna sälja mjukvara på samma sätt som fysiska produkter. I slutet av 1990-talet gick ett antal mjukvaruentusiaster ihop och tillverkade en version av free software som också kunde utnyttjas i företagsvärlden. Denna version kallades för open source, och är nästan men inte riktigt, samma sak som free software. Klausulen om att ge andra samma rättigheter du själv fick när du började, saknas nämligen ofta. Detta gynnar alltså alla utom användarna av mjukvaran, då de fortfarande kan bli inlåsta i proprietära licenser och inte får göra vad de vill med mjukvaran de använder. 

Vanliga licensformer

Att välja en open source-licens är inte alltid lätt. Många brukar säga att de bara vill att så många som möjligt ska kunna använda mjukvaran i fråga, och därför välja BSD eller MIT som open source-licens. Tyvärr kan man då missa en del viktiga ställningstaganden. Därför bör man helst ha ett mål med hur man vill att andra ska kunna använda mjukvaran samt tänka igenom andra typer av immateriellrättsfrågor, exempelvis patent och varumärkesskydd. I teorin hanterar BSD- och MIT-licenserna patentfrågan, men bara implicit. Vill man vara explicit med att även tillåta användandet av eventuella patent i mjukvaran bör man välja t ex Apache 2.0-licensen. 

Vilka licenser man kan välja mellan kan ibland begränsas av faktorer som till exempel vilka licenser andra mjukvarubibliotek som används använder sig av. Det finns webbplatser som kan hjälpa till vid kontroll av kompatibilitet mellan licenser, men det är bra att själv läsa på om vanliga open source-licenser för att få ett hum om vilka som finns och vilka som tillåter vad. Här följer en lista på bra webbplatser där man kan läsa mer om open source-licenser. 

https://choosealicense.com/ - Hjälper dig att välja "rätt" open source-licens utifrån dina egna val. 

https://tldrlegal.com/ - Kortfattad och lättbegriplig information om vanliga open source-licenser. 

https://opensource.org/licenses - OSI "certifierar" och godkänner licenser som vill kalla sig open source. 

https://www.gnu.org/licenses/license-list.en.html - Kommentarer från GNU angående licenser och dess kompatibilitet med framförallt GPL. 

Ralf Lindberg