GitHub-kod i en kommersiell produkt: licenser och vad du ska kontrollera
MarkdownTillåtande licenser som MIT, Apache och BSD, copyleft-licenser som GPL/AGPL, avsaknaden av en LICENSE-fil och kontroll av ursprunget till kod som lagts till av AI.
Läs hela artikeln
Du bygger en produkt och hittar en färdig lösning på GitHub: ett bibliotek, en mall, ett helt projekt som gör precis det du behöver. Claude föreslår att du lägger in den i ditt projekt. Och sedan stannar du upp: koden verkar vara offentligt tillgänglig, men får du faktiskt använda den, än mindre sälja en produkt som innehåller den? Kan upphovspersonen komma efter dig senare?
Jag går igenom det här i tur och ordning: varför öppen kod på GitHub inte i sig innebär tillstånd, vilka licenser som låter dig använda kod och sälja en produkt, vilka copyleft-villkor som kan kräva motsvarande källkod för ett omfattat verk och hur du kontrollerar en licens på en minut innan du använder koden. Inget ”det beror på situationen”.
Praktisk information om hur du arbetar med Ailoot finns i dokumentationen.
Uppmärksamhet
Det här materialet är en referens; jag är inte jurist. Nedan beskriver jag villkoren för populära licenser och regler, med länkar till primärkällor, men kontrollera din specifika situation mot licenstexten och, om produkten är stor och kommersiell, med en jurist. Du fattar själv beslutet.
Stämmer det att du får använda kod gratis om den finns på GitHub?
Det viktigaste
Nej. Att kod går att läsa innebär inte att du får använda den i ditt eget arbete. Som standard skyddas all kod av upphovsrätten, och du får inte använda den om inte upphovspersonen har gett separat tillstånd. Att publicera på GitHub ger i sig bara andra möjlighet att visa arkivet och skapa en kopia inom GitHub. Rätten att lägga in koden i din produkt kommer från licensen som upphovspersonen har kopplat till arkivet. GitHub ger dig inte den rätten.
Den stora fällan här är ordet ”öppen”. Du kan se källkoden, så det verkar som att du får använda den eftersom den inte var dold. Den logiken är fel. ”Öppen för läsning” och ”licensierad för användning” är två olika saker.
Som standard skyddas varje kreativt verk, även kod, av upphovsrätten från det ögonblick det skapas. Tills upphovspersonen uttryckligen ger tillstånd får du inte använda det. Så beskriver GitHub det på sin egen referenssida om licenser.
När du skapar ett kreativt verk (och kod är också ett kreativt verk) skyddas det som standard av exklusiv upphovsrätt. Om du inte bifogar en licens som säger något annat får ingen annan kopiera, distribuera eller ändra ditt verk utan att riskera ett krav eller en rättsprocess.
Det andra lagret är GitHub självt. Folk tror att eftersom de godkände GitHubs regler när de publicerade kod, får de också använda andras kod därifrån. Reglerna säger precis tvärtom. Genom att göra ett arkiv offentligt ger upphovspersonen andra endast rätt att visa och forka det, det vill säga skapa en kopia inom GitHub. Det ger inte tillstånd att använda koden i ditt eget arbete.
Genom att göra ett arkiv offentligt ger du andra användare en icke-exklusiv, global licens att använda, visa och återge (genom att forka) ditt material via tjänsten, inom GitHubs funktioner. Du kan ge ytterligare rättigheter genom att bifoga en licens.
Nyckelorden finns i den sista meningen: ”inom GitHubs funktioner” och ”ytterligare rättigheter kommer från en licens”. En fork stannar inom GitHub. Så snart du vill använda koden i din egen produkt, än mindre sälja den, behöver du en separat licens från upphovspersonen. Ingen licens, ingen rätt – även om koden ligger där helt synlig.
Vad avgör om du får använda någon annans kod?
Det viktigaste
Det är licensfilen i arkivet, som vanligtvis heter LICENSE eller LICENSE.md. Det är upphovspersonens tillstånd, som anger vad du får och inte får göra med koden. Licensen besvarar tre frågor: får du använda koden i en kommersiell produkt, får du ändra den och får du hålla din egen källkod stängd? Olika licenser ger olika svar, så det första du ska kontrollera är den här filen; först därefter ska du öppna själva koden.
Allt avgörs av en enda fil. Ett välskött arkiv innehåller en licensfil – vanligtvis LICENSE, ibland LICENSE.md eller en hänvisning direkt i README. Det här är upphovspersonens tillstånd, som anger villkoren för hur du får använda koden. GitHub visar vanligtvis licensnamnet i arkivsidans sidofält, innan du ens öppnar själva filen.
För att slippa gå vilse i juridiskt språk är det praktiskt att läsa licensen utifrån tre frågor om din situation:
- Får du använda den här koden i en kommersiell produkt som människor betalar för?
- Får du ändra koden efter dina behov?
- Måste du senare öppna källkoden till din produkt, eller får du hålla den stängd?
Nästan alla skillnader mellan licenser handlar om olika svar på den tredje frågan. På de två första svarar populära öppna licenser oftast ”ja”: använd den, ändra den, sälj den. Men det är frågan om licensen kräver att du öppnar din egen kod som folk snubblar på. Nu går vi igenom huvudtyperna med hjälp av de här tre frågorna.
Vilka licenser låter dig använda kod och sälja en produkt?
Det viktigaste
De smidigaste för en kommersiell produkt är tillåtande licenser: MIT, Apache 2.0 och BSD. De tillåter nästan allt: att använda koden, ändra den, sälja produkten och hålla din egen källkod stängd. Det finns en skyldighet: behåll licenstexten och upphovsangivelsen. Apache 2.0 skyddar också mot patentkrav och kräver att du markerar ändrade filer. Om någon annans kod har en av de här licenserna kan du tryggt använda den i en kommersiell produkt.
Vi börjar med goda nyheter. För den som bygger en produkt att sälja är den bästa lösningen en grupp licenser som kallas tillåtande licenser. Det finns flera, men tre är vanligast: MIT, Apache 2.0 och BSD. Alla tre svarar ”ja” på de två första frågorna och låter dig hålla din egen källkod stängd.
Den vanligaste och enklaste är MIT. Texten får plats i ett enda stycke.
Tillstånd ges härmed kostnadsfritt till alla som får en kopia av denna programvara att använda den utan begränsningar, inklusive rätten att använda, kopiera, ändra, slå samman, publicera, distribuera, underlicensiera och sälja kopior, under förutsättning att ovanstående upphovsrättsmeddelande och detta tillståndsmeddelande inkluderas i alla kopior.
Enklare uttryckt låter MIT dig göra nästan vad som helst med koden, även sälja produkten och hålla din egen källkod stängd. Den enda skyldigheten är att inkludera licenstexten och upphovsangivelsen. Babel, .NET och Rails har till exempel släppts under MIT, så du har nästan säkert redan använt kod med den här licensen.
Apache 2.0 fungerar på liknande sätt, men lägger till två viktiga punkter. För det första ett uttryckligt skydd mot patentkrav: kodens upphovspersoner lovar att inte stämma dig för patent på den här koden. För det andra några ytterligare formella krav för användning.
Du får återge och distribuera kopior av verket eller bearbetade verk i vilket medium som helst, med eller utan ändringar, under förutsättning att du ger mottagarna en kopia av den här licensen, markerar ändrade filer, behåller upphovsrätts- och patentmeddelanden och inkluderar en läsbar kopia av NOTICE-filen, om det finns en sådan.
BSD (i versionerna med 2 och 3 klausuler) liknar i huvudsak MIT: använd den, ändra den, sälj den och behåll upphovsrättsmeddelandet. Jag har lagt alla tre i en tabell så att du snabbt kan se skillnaden.
| Licens | Sälj produkten | Håll källkoden stängd | Vad du måste göra | Patentskydd |
|---|---|---|---|---|
| MIT | ja | ja | behåll upphovsrättsmeddelandet och licenstexten | ingen klausul |
| Apache 2.0 | ja | ja | upphovsrättsmeddelande, NOTICE-fil, markera ändringar | ja |
| BSD (2 och 3 klausuler) | ja | ja | behåll upphovsrättsmeddelandet | nej |
Så här kan du tolka det för egen del: om du ser MIT, Apache 2.0 eller BSD på någon annans kod kan du vara lugn: du får använda den i en kommersiell produkt, ändra den och hålla din egen källkod stängd. Du behöver bara se till att inte ta bort licensfilen och upphovsangivelsen från den del du har hämtat.
Hur gäller GPL:s och AGPL:s källkodsskyldigheter?
Det viktigaste
GPL och AGPL tillåter kommersiell användning. GPL:s källkodsskyldigheter uppstår vid överföring av ett verk som omfattas; vanlig serveranvändning utan överförd kopia utlöser inte detta. AGPLv3 lägger till krav på källkodserbjudande till användare som fjärrinteragerar med en ändrad version. Avgör vilket kombinerat verk som omfattas: separata oberoende komponenter ingår inte automatiskt allihop.
Copyleft håller ett omfattat verk och dess bearbetningar under samma licens när relevanta villkor gäller. GPLv3-distribution av käll- eller objektkodskopior av omfattat eller kombinerat härlett verk kräver efterlevnad av licens och skyldigheter för motsvarande källkod. Det gäller inte automatiskt varje oberoende program i samma produkt eller på samma server.
Ta webbtjänstexemplet. Att drifta ett GPL-bibliotek på egen server utan att ge användare kopior kräver inte i sig publicering av hela tjänsten. Distribution av en omfattad kombinerad applikation till kunder kan utlösa GPL-skyldigheter; kontrollera integration och licens innan du avgör vilken källkod som ska följa med. En webbläsarklient som levereras till användare är en separat distributionsfråga.
AGPLv3 lägger till ett nätverksvillkor: om du ändrar programmet och användare interagerar med versionen på distans måste den tydligt erbjuda dem motsvarande källkod. Det är mer precist än att säga att drift av någon AGPL-komponent öppnar varje oberoende del av en tjänst.
Granska omfattat verk, hur komponenter kombineras, om kopior distribueras och om AGPL-nätverksinteraktion gäller för en proprietär produkt. Välj kompatibel tillåtande ersättare eller skaffa separat tillstånd om relevanta skyldigheter inte kan uppfyllas. Kommersiell användning är tillåten; frågan är efterlevnad av faktisk licens och integration.
Vad ska du göra om arkivet inte har någon licensfil alls?
Det viktigaste
Ingen licensfil innebär att du inte får använda koden. Det betyder inte ”den är gratis”: tvärtom omfattas koden av upphovspersonens fulla upphovsrätt utan en licens, och du har ingen rätt att använda, kopiera eller ändra den. Tillståndet att visa och forka inom GitHub hjälper inte här – det ger dig inte rätt att lägga koden i din produkt. Om du verkligen behöver koden är den enda rena vägen att skriva till upphovspersonen och be om tillstånd eller vänta tills hen lägger till en licens.
Ett vanligt misstag är att anta att om det inte finns någon licens finns det inga begränsningar och du får använda koden fritt. Det är tvärtom. Ingen licens är inte ett tillstånd; som standard betyder det att det inte finns något tillstånd. Kod utan licens omfattas av upphovspersonens fulla upphovsrätt, och du får inte röra den.
Regeln vi började med gäller igen: som standard skyddas kod av upphovsrätten, och utan uttryckligt tillstånd får du inte kopiera, ändra eller distribuera den. Möjligheten att visa och forka den inom GitHub tar dig inte förbi den barriären – den ger dig inte rätt att använda koden i din egen produkt.
Vad du kan göra i praktiken om koden saknar licens men du verkligen behöver den:
- Skriv till upphovspersonen. Fråga direkt i arkivets diskussionsavsnitt eller via e-post om du får använda koden och på vilka villkor. Ibland har upphovspersonen helt enkelt glömt att lägga till en licens och gör det om du frågar.
- Leta efter en ersättning. För nästan alla uppgifter finns det ett andra, tredje och tionde liknande arkiv – bland dem hittar du ett med en riktig MIT- eller Apache-licens.
- Använd den inte. Om du inte har tillstånd och det inte finns någon ersättning är koden inte din, och du får inte lägga in den i en produkt du tänker sälja. Frestelsen att tänka ”vem kommer att få reda på det?” slutar illa just när produkten börjar tjäna pengar och dra till sig uppmärksamhet.
Vad händer om Claude själv lade till någon annans kod i projektet?
Det viktigaste
Det här är ett separat fall, och det är viktigt att inte blanda ihop det med att kopiera ett arkiv direkt. När du själv hämtar kod från ett specifikt arkiv måste du följa dess licens. När Claude eller en annan AI genererar kod som svar på din förfrågan producerar den vanligtvis egen text, sammansatt för uppgiften, snarare än en kopia av någon annans fil, och då gäller frågan rättigheterna till den genererade koden. Men om AI:n tydligt återgav en igenkännbar del av någon annans licensierade kod gäller fortfarande licensvillkoren. Det är värt att kontrollera källan i båda fallen.
Det finns ett andra lager här, och det är lätt att blanda ihop med det första. En sak är att du går till ett arkiv och kopierar en fil därifrån: då är allt ovan om licensen en direkt skyldighet för dig. En annan sak är när Claude skriver kod åt dig som svar på en förfrågan.
I vanliga fall producerar AI:n egen text, sammansatt för din uppgift, snarare än en kopia av någon annans fil. Då skiftar frågan till ett annat område: vem äger den genererade koden och får du sälja den? Det är ett stort ämne i sig, och jag har behandlat det i en artikel om vem som äger kod skriven av AI.
Men det finns ett undantag att tänka på. Ibland producerar AI:n en igenkännbar del av någon annans kod nästan ord för ord – en hel funktion från ett välkänt bibliotek. I så fall gäller bibliotekets licens fortfarande, oavsett vem som rent fysiskt tryckte på tangenterna. Därför bör stora färdiga kodblock som Claude har plockat in i sin helhet kontrolleras precis som om du hade kopierat dem själv.
Så kontrollerar du en licens innan du använder kod: steg att följa
Det viktigaste
Gör så här: öppna arkivsidan och kontrollera licensnamnet i sidofältet, öppna själva LICENSE-filen, identifiera typen – tillåtande (MIT, Apache, BSD) eller copyleft (GPL, AGPL) – jämför den med din situation och bestäm om du ska använda koden eller leta efter en ersättning. Om det inte finns någon licens ska du inte använda koden. Hela kontrollen tar ett par minuter och ska göras innan koden kommer in i ditt projekt, inte efteråt.
Vi samlar allt i en kort checklista för att kontrollera kod från tredje part innan du tar in den i ditt projekt. Gå igenom den uppifrån och ner.
Hitta licensnamnet på arkivsidan
Öppna arkivet på GitHub. Licensnamnet syns vanligtvis i högerspalten eller nedanför fillistan – till exempel ”MIT License”, ”Apache-2.0” eller ”GPL-3.0”. Om fältet är tomt och det inte finns någon licensfil är det redan en varningssignal; återkom till det i det sista steget.
Öppna själva licensfilen
Leta efter LICENSE, LICENSE.md eller COPYING i fillistan och öppna den. Kontrollera att namnet stämmer med det som visas i sidofältet och att licensen gäller koden du använder, inte bara en separat del av arkivet.
Identifiera typen: tillåtande eller copyleft
MIT, Apache 2.0 och BSD är tillåtande; du får använda koden i en stängd kommersiell produkt. GPL och AGPL är copyleft; kontrollera omfattat verk, distribution och eventuellt AGPL-nätverksvillkor innan källkodsskyldigheter avgörs. Namnet ensamt fastställer inte vilka oberoende komponenter som omfattas.
Jämför med din situation
Besvara tre frågor: säljer du produkten, ändrar du koden och vill du hålla källkoden stängd? MIT, Apache och BSD fungerar för en stängd produkt som säljs. För GPL och AGPL avgör du vilket omfattat eller kombinerat verk som behöver motsvarande källkod och när skyldigheten utlöses; bedöm om villkoren kan uppfyllas.
Ingen licens betyder att du inte ska använda koden
Om det inte finns någon licensfil och README inte säger något om tillstånd får du inte använda koden. Skriv till upphovspersonen och be om tillstånd eller hitta en likvärdig kod med en riktig licens. ”Den är offentligt tillgänglig” är inte ett tillstånd.
Den här kontrollen verkar besvärlig ända tills första gången din produkt växer, börjar tjäna pengar och någon frågar om koden från tredje part som ingår i den. Två minuter i början kostar mindre än att hantera en tvist senare. Jag tar separat upp vad du kan göra med produkten efteråt så att den inte stannar upp efter lanseringen: Jag byggde en produkt med AI; vad händer nu.
Vanliga frågor
Får man sälja en produkt som innehåller någon annans kod från GitHub?
Ja, om koden har en tillåtande licens – MIT, Apache 2.0 eller BSD. De låter dig använda kod i en kommersiell produkt, sälja den och hålla din egen källkod stängd. Du måste bara behålla licenstexten och upphovsangivelsen. GPL och AGPL tillåter också kommersiell användning men källkodsskyldigheter beror på omfattat verk och distribution eller tillämplig AGPL-nätverksutlösare. Om det saknas licensfil får du inte använda koden alls.
Vad innebär det om ett GitHub-arkiv saknar licens?
Det innebär att du inte får använda koden. Ingen licens betyder som standard inget tillstånd; det betyder inte ”gratis”. Koden omfattas fortfarande av upphovspersonens fulla upphovsrätt. Möjligheten att visa och forka arkivet inom GitHub ger dig inte rätt att använda koden i din produkt. Om du behöver koden kan du skriva till upphovspersonen och be om tillstånd eller hitta en motsvarande kod med en öppen licens.
Hur skiljer sig MIT från GPL för min produkt?
MIT låter dig använda och ändra koden, sälja produkten och hålla din egen källkod stängd – den enda skyldigheten är att behålla licenstexten. GPL tillåter också kommersiell användning, men överföring av ett omfattat kombinerat eller härlett verk kräver efterlevnad av motsvarande källkods- och sammalicensskyldigheter. Enbart drift utan kopieöverföring är annorlunda och separata oberoende komponenter omfattas inte automatiskt.
Måste jag göra något om jag använder kod under MIT-licensen?
Ja, en liten sak: behåll MIT-licenstexten och upphovsangivelsen från koden du använde i ditt projekt. Vanligtvis är det samma LICENSE-fil som hör till originalet. MIT kräver inget annat – du får ändra koden, sälja produkten och hålla din källkod stängd.
Vad händer om Claude själv lade till någon annans kod i stället för mig?
Du bör ändå kontrollera källan. AI:n producerar vanligtvis egen text för din uppgift, och då skiftar frågan till rättigheterna till genererad kod – det är ett separat ämne. Men om AI:n återgav en igenkännbar del av någon annans kod från ett välkänt bibliotek nästan ord för ord gäller bibliotekets licens fortfarande. Kontrollera stora färdiga kodblock som har plockats in i sin helhet precis som om du hade kopierat och klistrat in dem själv.
Källor
- choosealicense.com - GitHubs referensprojekt för att välja licens
- choosealicense.com - vad det innebär att sakna licens
- GitHubs användarvillkor, avsnitt D (licensupplåtelse till andra användare)
- MIT-licensen (opensource.org)
- Apache License 2.0 (apache.org)
- GNU General Public License v3.0 (gnu.org)
- GNU Affero General Public License v3.0 (gnu.org)
Fler detaljer
Frågor om den här guiden: GitHub-kod i en kommersiell produkt: licenser och vad du ska kontrollera
Tvingar ett GPL-bibliotek på servern mig att publicera hela webbtjänsten?
Drift ensam utan överföring av kopior är inte GPL:s distributionsutlösare. Om en omfattad kombinerad eller härledd applikation distribueras kan källkodsskyldigheter gälla det verket; oberoende komponenter omfattas inte automatiskt.
Vilket extra villkor lägger AGPLv3 till för en webbtjänst?
Ett ändrat AGPL-program som stöder fjärrinteraktion över nätverk måste erbjuda motsvarande källkod till de användarna. Kontrollera omfattat program och integration i stället för att anta att ingen källkod behövs eller att varje oberoende tjänst måste öppnas.