Wątek przeniesiony 2023-06-06 12:53 z Inżynieria oprogramowania przez Riddle.

Wybór odpowiedniej licencji do open-source'owej biblioteki oraz gry opartej na niej

0

Witam. Chciałem zapytać Was o pewną kwestie związaną z licencjami. Mam taki pomysł, aby stworzyć grę open sourcową, a także bibliotekę która będzie bazą pod tą grę. Generalnie nie wiem czy nie zrobić tak, aby sama biblioteka była na licencji MIT - takiej, której (z tego co zrozumiałem?) jest umożliwione użycie w innych projektach, które będą closed-source.

Licensed works, modifications, and larger works may be distributed under different terms and without source code.

Jednak widziałem że gry ze strony na wikipedii wylistowującej gry open source (https://en.wikipedia.org/wiki/List_of_open-source_video_games) dominuje głównie GPL, np GPLv3 - taka licencja, która (z tego co zrozumiałem?) uniemożliwia tworzenie oprogramowania closed-source w oparciu o oprogramowanie na tej licencji, a oprogramowanie musi być na tej samej licencji:

Permissions of this strong copyleft license **are conditioned **on making available complete source code of licensed works and modifications, which include larger works using a licensed work, under the same license.

Czy mogę zrobić tak, aby stworzyć osobne dwa projekty.: 1. Własną bibliotekę (muszę ją stworzyć tak czy siak do innych projektów), która umożliwi mi jako autorowi (a nie wykluczone też że innym osobom) tworzenie własnych gier/aplikacji w oparciu o nią, bez znaczenia czy closed czy open source, (zgodnie z licencją MIT), 2. Grę open sourcową (tylko jedną open sourcową, bo inne gry chcę zrobić komercyjnie i closed-source) stworzyć na bazie innej licencji (np GPLv3), która uniemożliwia tworzenie innym osobom w oparciu o kod tej gry tworzenie własnych closed-source projektów, jednakże umożliwiając tworzenie np gier/modyfikacji w oparciu o tą samą licencję (GPLv3) i open source.

https://choosealicense.com/licenses/mit/
https://choosealicense.com/licenses/gpl-3.0/

Czy coś takiego ma sens? Czy nie popełniłem błędów w moim planie?

0

Możesz też zrobić bibliotekę na LGPLv3 a grę zamkniętą, ale libkę musisz dostarczyć jako DLLkę (czyli ma być możliwość jej podmiany). Ogólnie: szukaj pod hasłem "license compatibility", trochę możliwości tam jest, przykładowe omówienie tematu: https://janelia-flyem.github.io/licenses.html
A jak chcesz bardzo dokładnie, to wydaj parę groszy i idź do odpowiedniego prawnika.

4

Możesz tak zrobić.

Ale możesz też tak nie kombinować: udzielić sobie samemu takiej licencji, jakiej chcesz, a całej reszcie świata wydać na GPL-u czy dowolnej innej licencji. Jedyne co, to nie będziesz mógł wykorzystywać niezgodnie z GPL-em poprawek wniesionych przez innych.


EDYCJA:
Wreszcie, GPL nie broni sprzedaży czy rozpowszechniania komercyjnego stworzonych na nim programów — jedyne co, to wymaga dostarczania kodu źródłowego wraz z programem oraz daje prawo użytkownikom do tworzenia kopii i rozpowszechniania ich tak, jak mają ochotę (w szczególności za darmo). Ale to jest sam kod i binarki, nie cała gra — możesz mieć assety na zamkniętej licencji. I wtedy każdy może sobie legalnie skopiować Twoją grę i jej pliki wykonywalne, ale już nie tekstury, grafiki itd.

5

Wiele (bardzo) komercyjnych gier ma kod udostępniony na GPL i innych licencjach, ale praktycznie nigdy nie dotyczy to assetów gry.
Czyli możesz sobie ściągnąć źródła takiego Quake'a i je skompilować, ale w ten sposób masz tylko exeka bez map, tekstur, dźwięków. Żeby je mieć nadal grę należy kupić. Chyba że zrobisz/znajdziesz darmowe assety które nie wymagają obecności oryginalnych.
Takim przykładem jest projekt Freedoom - zestaw alternatywnych map (tekstur, wszystkiego) do starego DOOMa (1 i 2) nie wymagający posiadania oryginalnych płatnych assetów. (co prawda Freedoom wymaga też obsługującego go exeka, na oryginalnym vanilla Doom nie pójdzie).

0
Althorion napisał(a):

Możesz tak zrobić.

Ale możesz też tak nie kombinować: udzielić sobie samemu takiej licencji, jakiej chcesz, a całej reszcie świata wydać na GPL-u czy dowolnej innej licencji. Jedyne co, to nie będziesz mógł wykorzystywać niezgodnie z GPL-em poprawek wniesionych przez innych.


EDYCJA:
Wreszcie, GPL nie broni sprzedaży czy rozpowszechniania komercyjnego stworzonych na nim programów — jedyne co, to wymaga dostarczania kodu źródłowego wraz z programem oraz daje prawo użytkownikom do tworzenia kopii i rozpowszechniania ich tak, jak mają ochotę (w szczególności za darmo). Ale to jest sam kod i binarki, nie cała gra — możesz mieć assety na zamkniętej licencji. I wtedy każdy może sobie legalnie skopiować Twoją grę i jej pliki wykonywalne, ale już nie tekstury, grafiki itd.

@Althorion
Dziękuję za odpowiedź,
W jaki sposób mógłbym udzielić w taki sposób licencji innej sobie a innej innym? Jak to np na githubie mogłoby wyglądać, w jaki sposób taką informację sformułować w plikach licencyjnych? I czy mógłbyś wysłać jakieś linki lub słowa kluczowe pod którymi powinienem szukać jak to zrobić?

Tzn generalnie nie wiem, czy nie wybrać MIT dla biblioteki, a dla gry GPLv3, dlatego że MIT umożliwia wykorzystanie w innych projektach (z tego co zrozumiałem...) closed source - więc przydałby się też innym, nawet w sytuacji jak ktoś doda jakąś zmianę (a chcę żeby ta biblioteka mogłabyć wykorzystana przez innych nawet w celach komercyjnych). A GPLv3 do gry uniemożliwiałby używanie logiki gry do innych produkcji innych osób na innych licencjach niż closed-source. Ale generalnie chciałbym mieć ja sam władzę większą niż inni nad kodem gry (nie nad biblioteką, która ma być też dla innych), czyli bym mógł również użyć tej logiki gry do innych moich własnych closed-source projektów, które nie będą dostępne.(uniemożliwiając tworzenie closed-source projektów w oparciu o implementację gry innym, jednakże nie blokując im tego robienia na open-source licencji GPLv3-owej)

Azarien napisał(a):

Wiele (bardzo) komercyjnych gier ma kod udostępniony na GPL i innych licencjach, ale praktycznie nigdy nie dotyczy to assetów gry.
Czyli możesz sobie ściągnąć źródła takiego Quake'a i je skompilować, ale w ten sposób masz tylko exeka bez map, tekstur, dźwięków. Żeby je mieć nadal grę należy kupić. Chyba że zrobisz/znajdziesz darmowe assety które nie wymagają obecności oryginalnych.
Takim przykładem jest projekt Freedoom - zestaw alternatywnych map (tekstur, wszystkiego) do starego DOOMa (1 i 2) nie wymagający posiadania oryginalnych płatnych assetów. (co prawda Freedoom wymaga też obsługującego go exeka, na oryginalnym vanilla Doom nie pójdzie).

@Azarien
Dziękuję za odpowiedź,
Mój plan zakłada, że assety będą w oparciu o konkretny odpowiednik licencji Creative Commons (najprawdopodobniej Attribution-NonCommercial-ShareAlike (CC BY-NC-SA)), dlatego że chcę aby inne osoby tworzące modyfikacje lub własne gry open sourcowe mogły używać tych assetów do swoich modyfikacji. Tak ma zrobione to 0ad (https://github.com/0ad/0ad/blob/master/LICENSE.txt 22-ga linijka w pliku)

postedit:
https://opensource.stackexchange.com/questions/7188/opensource-license-ownership-and-collaboration
Tutaj wyczytałem w odpowiedzi, że właśnie gdyby biblioteka była na licensji permissive, to mogę użyć tego softu nawet jeżeli zmiany są wprowadzone przez kogoś innego, w przypadku copyleft license, potrzebna jest zgoda.

If XYZ is a permissive license (such as BSD, MIT, ASL), then there is no problem. Creator A can close the source of his project, and the XYZ license allows use of the code contributed by contributor B in a closed source context.
If XYZ is a copyleft license (such as GPL, AGPL), then creator A needs explicit permission from contributor B to use the contributions in a closed source context.

To jest powód dlaczego wolałbym aby biblioteka była na permissive licencji, czyli np MIT, a nie GPL

3

W jaki sposób mógłbym udzielić w taki sposób licencji innej sobie a innej innym? Jak to np na githubie mogłoby wyglądać, w jaki sposób taką informację sformułować w plikach licencyjnych? I czy mógłbyś wysłać jakieś linki lub słowa kluczowe pod którymi powinienem szukać jak to zrobić?

Żadna filozofia — nie musisz niczego zapisywać nigdzie, chyba że Cię mocno nosi — wtedy sobie wydrukuj kartkę z treścią „ja, Jan Kowalski, udzielam sobie samemu, Janowi Kowalskiemu, zezwolenia na wykorzystanie swojego kodu tak, jak mi przyjdzie ochota”. ;) A trochę bardziej poważnie: nic nie musisz robić, Twój kod jest domyślnie Twój. Musiałbyś sam siebie pozwać za naruszenie licencji… to po prostu tego nie rób?
Pamiętaj tylko, że tak możesz wykorzystywać tylko swój kod — jak ktoś Ci wyśle jakieś poprawki, to już do tych poprawek nie masz praw.

Tzn generalnie nie wiem, czy nie wybrać MIT dla biblioteki, a dla gry GPLv3, dlatego że MIT umożliwia wykorzystanie w innych projektach (z tego co zrozumiałem...) closed source - więc przydałby się też innym, nawet w sytuacji jak ktoś doda jakąś zmianę (a chcę żeby ta biblioteka mogłabyć wykorzystana przez innych nawet w celach komercyjnych). A GPLv3 do gry uniemożliwiałby używanie logiki gry do innych produkcji innych osób na innych licencjach niż closed-source. Ale generalnie chciałbym mieć ja sam władzę większą niż inni nad kodem gry (nie nad biblioteką, która ma być też dla innych), czyli bym mógł również użyć tej logiki gry do innych moich własnych closed-source projektów, które nie będą dostępne.(uniemożliwiając tworzenie closed-source projektów w oparciu o implementację gry innym, jednakże nie blokując im tego robienia na open-source licencji GPLv3-owej)

GPL jest licencją wirusową, tzn. wymusza on, żeby dzieła zależne też na niej były. Jeśli chcesz, to możesz zrobić swoją licencję, robiąc kopiuj-wklej GPL-a, tylko w punktach zabraniających tego czy tamtego dopisz „za wyjątkiem Jana Kowalskiego i podmiotów zależnych”. Możesz chcieć to przez jakiegoś prawnika przepuścić, żeby mieć całkowitą pewność, że nikt się nie przyczepi do tego, co robisz z jego kodem. Musisz się też liczyć z tym, że takie klauzule działają na ludzi jak płachta na byka, więc znacząco zniechęcisz potencjalnych pomocników.

0
Althorion napisał(a):

Żadna filozofia — nie musisz niczego zapisywać nigdzie, chyba że Cię mocno nosi — wtedy sobie wydrukuj kartkę z treścią „ja, Jan Kowalski, udzielam sobie samemu, Janowi Kowalskiemu, zezwolenia na wykorzystanie swojego kodu tak, jak mi przyjdzie ochota”. ;) A trochę bardziej poważnie: nic nie musisz robić, Twój kod jest domyślnie Twój. Musiałbyś sam siebie pozwać za naruszenie licencji… to po prostu tego nie rób?
Pamiętaj tylko, że tak możesz wykorzystywać tylko swój kod — jak ktoś Ci wyśle jakieś poprawki, to już do tych poprawek nie masz praw.

Jednakże gdybym zrobił również grę na MIT, to nawet gdyby ktoś ją zmodyfikował mógłbym tworzyć swoje własne gry w oparciu nawet o poprawkowy kod

GPL jest licencją wirusową, tzn. wymusza on, żeby dzieła zależne też na niej były. Jeśli chcesz, to możesz zrobić swoją licencję, robiąc kopiuj-wklej GPL-a, tylko w punktach zabraniających tego czy tamtego dopisz „za wyjątkiem Jana Kowalskiego i podmiotów zależnych”. Możesz chcieć to przez jakiegoś prawnika przepuścić, żeby mieć całkowitą pewność, że nikt się nie przyczepi do tego, co robisz z jego kodem. Musisz się też liczyć z tym, że takie klauzule działają na ludzi jak płachta na byka, więc znacząco zniechęcisz potencjalnych pomocników.

No właśnie dlatego się zastanawiam nad GPL-em, być może są też inne licencje które lepiej rozwiązałyby ten problem, muszę poszukać. Taka klauzula "za wyjątkiem XYZ i podmiotów zależnych", to raczej coś czego wolałbym uniknąć, bo byłoby to dość... jeżeli nie nieprofesjonalne to conajmniej dziwne, zwłaszcza w pliku licencyjnym. Wolałbym mieć licencję która byłaby odpowiednia niż modyfikować GPL, co zresztą chyba jest niezgodne z prawem, bo pliku licencyjnego GPL nie można podmieniać sobie (cyt. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.)

1

Odpala motyw przewodni z Indiany Johnsa

Jest jeszcze GNU Lesser GPL dla bibliotek.

0

GNU Lesser GPL nie zakłada linkowania dynamicznego? W wpielu językach taka koncepcja nie istnieje. Szkoda że Op nie napisał w jakim języku będzie tworzyć grę. I jak mu poszło :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1