Permalänk
Medlem

GPL, MIT och liknande licenser

Jag har knackat ihop lite Python som automatiserar saker via SSH. Jag funderar på att slänga upp det på github, dels för att andra kanske vill ta del av det och fortsätta utveckla/forka och dels för att det är ett smidigt ställe att ha kod på.

Men ska man göra det så ska man göra det rätt. Jag har aldrig grävt djupt i licenser. Min kod bygger ju på ett antal moduler som är licensierade på diverse olika sätt. Dom flesta med GPL eller MIT-licens (som verkar vara kompatibla med varandra), men jag har inte kollat igenom alla.

Hur vet man vilken licens man lagligen kan sätta på sitt alster, utan att vara stjärnadvokat? Moduler som bygger på moduler som bygger på libbar etc... alla med olika licenser. Nån som har koll?

Visa signatur

ecce
#NATisNotASecurityFeature

Permalänk
Medlem

Några bra resurser som förklarar de olika typer av licenser för oss vanliga dödliga

https://tldrlegal.com/
https://choosealicense.com/licenses/

Permalänk
Medlem

Jag har inte koll men jag vet att MIT och GPL är helt olika. GPL är väldigt restriktiv medans MIT inte är det. Så det är nog lugnt att gå från MIT till GPL för din egna kod men tvärtom går inte.

Permalänk
Medlem
Skrivet av ecce:

Hur vet man vilken licens man lagligen kan sätta på sitt alster, utan att vara stjärnadvokat? Moduler som bygger på moduler som bygger på libbar etc... alla med olika licenser. Nån som har koll?

Om det är helt egen kod så kan du välja helt själv. Du har upphovsrätten, så du bestämmer.

Om du har länkat mot bibliotek (och det gör man ju nästan alltid) så kan det finnas vissa begränsningar. Det finns inga ursäkter, man måste veta vad man håller på med om man framställer kopior av någon annans kod. Om du bara lägger ut din egenskrivna kod på GitHub (och inte framställer binärkopior av bibliotek du länkar till) så är resten av det här inlägget faktiskt rätt oväsentligt.

Länkar du till exempel mot GPL-licensierade bibliotek så måste du i praktiken släppa din kod som GPL eftersom binärer av din kod då räknas som "derivate work". LGPL-licensierade bibliotek (som är betydligt vanligare) sätter ingen begränsning på hur du kan licensiera din egen kod som länkar mot LGPL-koden. Om du ska framställa binärkopior av LGPL-biblioteket behöver du dock följa den licensens krav (vilket är relativt lätt).

0-till-3-clause BSD-lika licenser är vanliga idag. FSF tycker inte att man ska använda begrepper MIT-licensen eftersom MIT genom åren har använt många olika licenser. Men den vanligast förekommande MIT-licensen är väldigt lik BSD-licensvarianterna. Alla dessa licenser är så korta att det inte finns någon ursäkt att inte ha koll på dem. Att bara länka mot bibliotek under de licenserna är oproblematiskt, precis som med LGPL, men det finns några minimala krav att följa om man framställer kopior av källkoden eller kopior av binärer, i vissa av varianterna.

Apache- och Mozilla-licensierad mjukvara är vanligt. De licenserna har vissa krav som gör att man inte ska länka GPL-kod mot dem ("för hårda" krav som GPL inte tillåter att man ställer).

Så, vilken licens ska du välja för din egen kod? Fundera på om du gillar "copyleft", dvs om du vill tvinga de som tar din kod, modifierar den och kompilerar den och sprider binärkopiorna till tredje part att ge modifierad källkod till tredje part (så att tredje parten i sin tur har kvar friheten att modifiera koden). Om du gillar copyleft, och alltså vill förhindra att någon "stänger" din källkod så väljer du GPLv2 eller hellre GPLv3.

Om du vill att vem som helst ska få göra vad som helst, inklusive att strippa bort kommentarer om vem som har skapat mjukvaran så kan du välja 0-clause-BSD eller säga att du överlåter mjukvaran till "Public Domain". GitHub kanske inte erbjuder precis alla licenser jag har nämnt, men förhoppningsvis förstår du poängen.

Skrivet av pine-orange:

Jag har inte koll men jag vet att MIT och GPL är helt olika. GPL är väldigt restriktiv medans MIT inte är det. Så det är nog lugnt att gå från MIT till GPL för din egna kod men tvärtom går inte.

Det är inga problem att licensiera om (byta licens på) mjukvara som man själv har hela upphovsrätten till, eller att erbjuda mjukvaran under två olika licenser samtidigt. GPL plus ett kommerciellt alternativ är vanligt.

Att länka in ett GPL-licensierat bibliotek i egenskriven MIT-licensierad kod är inget jag rekommenderar.

Permalänk
Inaktiv

så länge du länkar dynamiskt, dvs. så att slutanvändaren kan ersätta GPL licensierade DLLer i dina distributioner, så kan du länka till GPL kod.

Rekommenderar att du håller dig borta från GPL dock. MIT, zlib osv är mycket bättre. GPL är lite som programmeringsvärldens radikala kommunism.

Permalänk
Medlem

Alright. Då vet man lite mer. Jag vill släppa min kod helt fri, jag bryr mig inte alls om vad andra gör med den, dom ska ha full frihet. Jag behöver ingen credit alls, men jag vill ha absolut noll ansvar. Ska se vilken licens som passar. Koden läggs upp "raw", inga binärer eller liknande, så andra kan ta bort moduler och länkade saker som dom vill.

Jag har använt unlicense tidigare när jag skapat saker helt själv från scratch.

Visa signatur

ecce
#NATisNotASecurityFeature

Permalänk
Medlem
Skrivet av ecce:

Alright. Då vet man lite mer. Jag vill släppa min kod helt fri, jag bryr mig inte alls om vad andra gör med den, dom ska ha full frihet. Jag behöver ingen credit alls, men jag vill ha absolut noll ansvar. Ska se vilken licens som passar. Koden läggs upp "raw", inga binärer eller liknande, så andra kan ta bort moduler och länkade saker som dom vill.

Jag har använt unlicense tidigare när jag skapat saker helt själv från scratch.

Om du bara lägger upp din kod som källkod, utan några binärer, och inte lägger upp några av de moduler eller bibliotek du använder (vare sig binärer, källkod, eller include-filer), ja då kan du glatt strunta i vad de olika modulerna och biblioteken har för licenser. Din källkod innehåller ingentig från dem, så den behöver inte följa deras licenser.
(Skulle du lägga upp binärer så kan de innehålla kod från include-filer eller liknande, och då blir allting genast mer komplicerat.)

Permalänk
Medlem
Skrivet av KAD:

Det är inga problem att licensiera om (byta licens på) mjukvara som man själv har hela upphovsrätten till, eller att erbjuda mjukvaran under två olika licenser samtidigt. GPL plus ett kommerciellt alternativ är vanligt.

Han vill inte licensiera om det han har skrivit, så det har jag förstås inte skrivit något om.

Citat:

Att länka in ett GPL-licensierat bibliotek i egenskriven MIT-licensierad kod är inget jag rekommenderar.

Jag menar att om han använder kod som är MIT licensierad så går det bra att licensiera sin egna kod som GPL.

Permalänk
Medlem
Skrivet av Erik_T:

Om du bara lägger upp din kod som källkod, utan några binärer, och inte lägger upp några av de moduler eller bibliotek du använder (vare sig binärer, källkod, eller include-filer), ja då kan du glatt strunta i vad de olika modulerna och biblioteken har för licenser. Din källkod innehåller ingentig från dem, så den behöver inte följa deras licenser.
(Skulle du lägga upp binärer så kan de innehålla kod från include-filer eller liknande, och då blir allting genast mer komplicerat.)

Hrm...ok. Om en modul/lib är byggt på GPL och jag inkluderar den i min kod, men inte ändrar/bygger direkt på koden i modulen utan bara använder den, kan jag då ändå sätta vilken licens jag vill? Inkl copyright-fokuserade licenser? Tanken med GPL etc är väl att förhindra sånt.

Visa signatur

ecce
#NATisNotASecurityFeature

Permalänk
Medlem
Skrivet av ecce:

Hrm...ok. Om en modul/lib är byggt på GPL och jag inkluderar den i min kod, men inte ändrar/bygger direkt på koden i modulen utan bara använder den, kan jag då ändå sätta vilken licens jag vill? Inkl copyright-fokuserade licenser? Tanken med GPL etc är väl att förhindra sånt.

Om du inkluderar något av koden från en modul/lib i din egen kod, då måste du naturligtvis ta hänsyn till modulens licens om du skall distribuera din kod.
Men det är ju sällan ens egen källkod innehåller något från en modul/lib utan eventuell inkludering brukar ske först i samband med kompilering/länkning.