Ogólnodpstępne gem-y a wykorzystanie komercyjne

Cześć! Jak każdy wie w sieci pełno darmowych gemów (na GitHubie etc.) - Jak ma się używanie darmowych gemów w aplikacji z której chcę czerpać zyski? np. konta premium itd. Czy są jakieś ograniczenia? Czytałem kilka różnych licencji jednak do końca nie rozumiem z tego nic a dodatkowo wiele gemów nie ma przypisanej konkretnej licencji (chyba że źle patrzę).

Jeśli zły dział to nie krzyczcie! :wink:

[quote=eGlaza]Cześć! Jak każdy wie w sieci pełno darmowych gemów (na GitHubie etc.) - Jak ma się używanie darmowych gemów w aplikacji z której chcę czerpać zyski? np. konta premium itd. Czy są jakieś ograniczenia? Czytałem kilka różnych licencji jednak do końca nie rozumiem z tego nic a dodatkowo wiele gemów nie ma przypisanej konkretnej licencji (chyba że źle patrzę).

Jeśli zły dział to nie krzyczcie! ;)[/quote]
Standardem w community jest MIT, która jest bardzo liberalna pod tym względem. GPL i inne tego typu podobne twory są bardzo rzadkie i zakładam, że jeżeli komuś na czymś takim zależy, to na pewno to odpowiednio zaznaczy.

Jeśli robisz aplikację webową, to jedyne czego możesz się bać to AGPL. Reszta, włącznie z GPL-em może być spokojnie wykorzystywana komercyjnie. Problem z GPL-em pojawia się nie wtedy kiedy coś takiego wykorzystujesz, tylko wtedy gdy to dystrybuujesz (np. na pendrivie, CD-romie, w telefonie, etc.).
AGPL jest o tyle “niefajny”, że przechodzi na dane, które przetwarzasz za pomocą kodu objętego tą licencją.

JE?

Dzięki za odpowiedź. Już znalazłem parę tematów na forach i blogach o MIT i poczytam sobie. :wink:

Wcisnęło mi się wyślij, nim skończyłem pisać.

i BSD :slight_smile:

Apohllo, proszę wyjaśnij to stwierdzenie, gdyż kłóci się z moim dotychczasowym pojmowaniem licencji. Czy jeśli wrzucę dokument tekstowy do MongoDB, to oznacza, że po pobraniu go z bazy objęty jest już licencją AGPL?

Czy chodziło o poniższy fragment tekstu licencji?

Jeśli tak, to przetworzone dane, jeśli nie stanowiły elementu dzieła, . Use case: screenshot ekranu konsoli MongoDB z moim dokumentem, po np. przeformatowaniu jest objety AGPL (przy czym AGPL wynika z faktu wyświetlania elementów dzieła, czyli np. układu konsoli), ale kiedy pobiorę go do innego programu i tam wyświetlę, to już nie.

Apohllo, proszę wyjaśnij to stwierdzenie, gdyż kłóci się z moim dotychczasowym pojmowaniem licencji. Czy jeśli wrzucę dokument tekstowy do MongoDB, to oznacza, że po pobraniu go z bazy objęty jest już licencją AGPL?[/quote]
Sorry, faktycznie jakoś utrwaliło mi się, że AGPL “przechodzi” na dane, a to nie o to chodzi.

  1. Zarówno GPL jak i AGPL jeśli dodają coś do danych (coś z własnego “kodu źródłowego”) (prawdopodobnie) powodują, że te dane są również nimi objęte. Np. jeśli będziesz miał na wejściu dane tekstowe i np. je sparsujesz programem na (A)GPL, w taki sposób, że znaczniki z kodu źrodłowego tego programu zostaną dodane do tych danych tekstowych, to te dane powinny być na (A)GPL-u (cokolwiek to znaczy).

  2. AGPL tym się różni od GPL (pomijając kwestie wersji), że AGPL obejmuje również zmodyfikowane kopie, które nie są dystrybuowane na CD, etc. ale, które dostępne są jako serwisy działające w sieci. W tej sytuacji również konieczne jest udostępnienie kodu źródłowego za darmo.

Co do pytań o MongoDB - to wg mojej interpretacji, jeśli korzystasz z tej bazy danych tworzysz utwór połączony (combined work) i musisz udostępniać jego kod źródłowy, o ile aplikacja dostępna jest przez sieć.

Wyprzedzając dalsze pytania - po to między innymi powstało LGPL, żeby rozwiązać problem otwartych bibliotek, które chcemy dystrybuować razem z zamkniętym kodem. W przypadku gdy korzystamy z jakiegoś fragmentu kodu na GPL, to zawsze w takiej sytuacji musimy całość udostępnić na GPL-u.

Dlatego MIT/X11 i BSD są dużo “przyjaźniejsze” dla biznesu, bo nie wprowadzają żadnych wymogów tego rodzaju. W ich przypadku jedyne co trzeba zrobić, to napisać kto był autorem i na jakiej licencji ten kod był udostępniony.

MongoDB ma wyjątki pododawane specjalnie po to żeby nie było żadnych problemów z wykorzystywaniem go jako bazy danych przy połączeniu zewnętrznym. AGPL łapie tylko i wyłącznie jeżeli Mongo w kompilujesz albo podlinkujesz w swój program.

Co do reszty, ściągawa, bezpieczne licencje:

  • LGPL
  • MIT
  • BSD
  • MPL

Niebezpieczne:

  • GPL
  • AGPL

powyższych 2 należy unikać jak ognia przy pisaniu oprogramowania komercyjnego.

http://www.gnu.org/licenses/gpl-faq.html#IfInterpreterIsGPL

[quote=Świstak]Niebezpieczne:

  • GPL
  • AGPL

powyższych 2 należy unikać jak ognia przy pisaniu oprogramowania komercyjnego.[/quote]
Podkreślę jeszcze raz - GPL należy unikać tylko wtedy, gdy zamierzamy dystrybuować nasz kod, tak by był uruchamiany po stronie klienta. Jeśli mamy aplikację webową, która korzysta np. z Linuksa, który jest na GPL-u (a większość przecież uruchamiana jest na boksach linuksowych), to nie mamy obowiązku udostępniania jej kodu źródłowego. Co innego jeśli taką aplikację chcemy umieścić w Android Markecie lub Apple Store. Dopiero wtedy GPL staje się problemem.

Najbardziej należy się obawiać gemów bez licencji. Ja kiedyś napisałem skrypt sobie, który wszystkie gemy mi przeszukiwał w poszukiwaniu plików LICENSE, MIT-LICENSE i podobnych oraz w README też próbował znaleźć licencje i okazało się, że 4 gemy nie miały w ogóle wspomnianej. Ito mogą być gemy, które są zależnościami jakiś popularnych gemów. Zwykle próba kontaktu z autorami była niemożliwa.

W znaczeniu konsumenta aplikacji a nie klienta który płaci za projekt. Warto też pamiętać o tym co podlinkowałem, że przy interpretowanych językach kod to tylko dane dla interpretera. Jestem ciekaw jak tu jest z javascript. Zapewne fakt, że używasz jakiejś biblioteki JS na licencji GPL nie powoduje, że twój cały JavaScript jest na licencji GPL. Z drugiej strony i tak spełniasz (chyba) warunki licencji bo nawet gdyby był to przecież dostarczasz mu kod źródłowy (jest nim sam plik JS), chyba że powinien być on koniecznie nie poddany operacji zmniejszania rozmiaru i/lub obfuskacji.

W znaczeniu konsumenta aplikacji a nie klienta który płaci za projekt.[/quote]
Tak, tak - o to mi chodziło. I faktycznie brak licencji to jest największy problem.

@apohllo: oczywiście jest to uogólnienie, ale GPL jest niebezpieczny także dla oprogramowania sieciowego. Kiedyś może się okazać że chcesz go dystrybuować albo sprzedać kilku klientom do wykorzystania na ich serwerach (jak np. sprzedawany był hoptoad) i już jesteś w przysłowiowej dupie, bo sprzedasz jednemu klientowi, a on mozę radośnie opublikować za darmo, albo zacząć sprzedawać za 50% twojej ceny.

@paneq: co do JS. Jeżeli dodasz do projektu JS na GPL i twoja strona likuje (np. poprzez htmlowy <srcipt src=) - gratuluję, właśnie CAŁY twój program jest GPL :smiley: Taka jest interpretacja GNU/FSF.

o, i tu dochodzimy do problemu, który mnie nurtuje: Zakładając, że mamy bibliotekę JS, która jest na GPL, cały mój kod jest na GPL (włączając w to kod backendu), czy tylko cały kod frontendu(tj. wszystkie pliki javascriptowe)?

Myślę, że mało prawdopodobne by backend był zarażony. JS operuje tylko na outpucie jaki generuje inny program (backend). Nawet nie jestem pewny tej interpretacji że twój frontend też jest zarażony.

Piszę dlatego, że swego czasu interesowałem się ext js, i ich interpretacja wydawała mi się dziwna

@paneq: frontend jest na pewno. Niestety dołączanie do dokumentu html plików Javascript jest traktowane jako linkowanie, więc frontend jest w 100% zarażony. Wszystkie pliki JS, wszystkie pliki HTML oraz CSS stają się automatycznie GPLowane jako utwory pochodne.
A już na pewno jeżeli użyjesz czegoś by połączyć JSy w jedno, wtedy już absolutnie cały plik JS jest traktowany jako praca pochodna.

Co do backendu nie sądzę dopóki nie wykorzystujesz takowego JSa. Z TYM ŻE, jeżeli chcesz sprzedać całe dzieło, czyli backend + frontend wspólpracujące to znowu jesteś w dupie bo zarażasz backend.

Patrz: http://www.gnu.org/licenses/gpl-faq.html#IfLibraryIsGPL oraz http://www.gnu.org/licenses/gpl-faq.html#MereAggregation

Obejściem problemu jest osobna sprzedaż backendu i frontendu (dawniej zalecane było nawet sprzedawanie na dwóch nośnikach! Jakieś 5 lat temu pamiętam dystrybucje takie jak RedHat dostarczały na jednym CD 300mb linuxa “wolnego” a na drugim CD 300mb oprogramowania w rodzaju Java, czy sterowniki binarne)

Podsumowując GPL to zaraza, zło, i skurwysyństwo :slight_smile:
Jednocześnie (prawie) najwspanialszy sposób żeby się upewnić żeby żadna zła korporka nie dorobiła się na kradzieży twojej pracy (lepszy jest AGPL tylko). Tak więc punkt widzenia zależy od punktu siedzenia. Prowadzisz firmę / chcesz mieć na jedzenie - trzymaj się od [A]GPL na odległość.
Wierzysz że wolne oprogramowanie zmieni świat, i wielkie korporacje będą ci płacić za dokumentację albo konsulting (hehe) - AGPL jest twoim nowym przyjacielem.

PS. Interpretacja Senshy potwierdza:
Frontend zarażony na pewno. Backedn zależnie od interpretacji oraz ilości powiązań - wiec generalnie lepiej też nie ryzykować

To czegoś nie rozumiem, jQuery, jest na licencji GPL, MIT - czyli część kodu jest GPL a część jest MIT i teraz takie pytanie, czy każdy projekt z jQuery powinien zostać udostępniony ? Trochę dziwne byłoby wtedy posunięcie core teamu railsów.

Czyli przykładowo jak opracowuje się jakiś większy system i do zarządzania repozytoriami używa się gitolite (ten jest chyba na licencji GPL) to kod trzeba udostępnić. Dziwne jest wtedy udostępnienie gitlabhq na licencji MIT.