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.