Om någon är lika förvirrad över programvarulicenser som jag var, så är det här hur jag ser dem nu. Programvarulicenser styr vad personer kan göra med din kod. MIT-licens låter människor göra vad som helst. Säg att du skapar ett JSON-parsningsbibliotek med MIT-licens. En startup kan ta din kod, modifiera den och sälja den som en del av deras betalda API-tjänst utan att ge dig något tillbaka. De behöver bara behålla ditt upphovsrättsmeddelande i kodkommentarerna. React använder MIT, så Facebook kunde ha gjort det proprietärt, men de valde att hålla det öppet. Detta är licensen "gör vad du vill". GPL tvingar fram delning. Föreställ dig att du skapar ett webbramverk under GPL. Om någon modifierar ditt ramverk för att lägga till nya funktioner måste de också släppa dessa ändringar som GPL. De kan inte sälja en proprietär version. WordPress använder GPL, så alla WordPress-teman och plugins måste också vara GPL. Om du bygger ett kommersiellt CMS ovanpå WordPress blir hela ditt CMS GPL. Detta håller allt öppen källkod. Apache 2.0 hanterar patent bättre. Du skriver ett maskininlärningsbibliotek och någon bidrar med en algoritm. Senare försöker de stämma användare för patentintrång på den algoritmen. Med Apache-licens förlorar de automatiskt sina rättigheter att använda ditt bibliotek. Det är ett skydd mot patenttroll. Kubernetes använder Apache 2.0 eftersom molnföretag oroar sig för patentproblem. BSD är i grunden MIT med olika ord. Du skapar ett nätverksbibliotek under BSD. Samma regler som på MIT, folk får göra vad de vill. FreeBSD använder detta, vilket är anledningen till att Apple kan ta BSD-kod och lägga den i macOS utan att släppa macOS-källkoden. De flesta utvecklare använder bara MIT nu för att det är tydligare. LGPL är GPL för bibliotek. Du bygger ett PDF-genereringsbibliotek under LGPL. Företag kan använda ditt bibliotek i sin proprietära programvara utan att göra hela sin app till LGPL. Men om de ändrar själva bibliotekskoden måste dessa ändringar vara LGPL. VLC mediaspelare använder LGPL så att andra appar kan inkludera videouppspelning utan att bli GPL. Proprietär innebär att du kontrollerar allt. Du skapar en databasmotor och behåller den privat. Företag betalar dig licensavgifter för att använda den. De kan inte se källkoden, inte ändra den, inte distribuera om den. Oracle Database fungerar på det här sättet. Du tjänar pengar på licensiering men begränsar vem som kan använda den. Dubbel licensiering ger alternativ. Du släpper en databas under både GPL och kommersiella licenser. Projekt med öppen källkod använder GPL-versionen gratis. Företag som inte vill ha GPL-begränsningar betalar för den kommersiella licensen. MySQL gör detta. Startups använder gratis MySQL, stora företag köper ofta kommersiella licenser. Public domain ger upp alla rättigheter. Du skapar en hash-funktion och placerar den i public domain. Vem som helst kan göra vad som helst med det, inga begränsningar, ingen tillskrivning krävs. SQLite gör detta. Statliga myndigheter älskar det eftersom det inte finns någon juridisk risk. Bygger du ett bibliotek som du vill att alla ska använda? Välj MIT. Vill du se till att förbättringarna kommer tillbaka till communityn? Använd GPL. Är du orolig för patent inom företagsprogramvara? Gå med Apache. Bygger du ett företag kring din kod? Håll dig proprietär. Vill du ha maximal frihet för användarna? Prova att vara allmän egendom. Nyckeln är att matcha dina mål med licensbegränsningar. Kopiera inte bara vad andra projekt gör utan att förstå varför de valde den licensen.
22,39K