GNU GPL i GNU AGPL i wołanie pliku exe z innego programu

0

Mam pytanie odnośnie programów na licencji GNU GPLv3 i GNU AGPLv3 (Affero GPL) - czy w świetle licencji można napisać komercyjne oprogramowanie (zamknięte źródło), które używa programu GPL za pomocą funkcji CreateProcessW - inaczej mówiąc uruchamia je a nie linkuje - z zadanymi parametrami i oczekuje na odpowiedź programu.

Jeżeli jest to możliwe w świetle istniejącego prawa, jak (i czy) należy ten program dostarczyć w instalatorze? Moje pomysły - czy któryś się kwalifikuje?

*Umieszczenie w instalatorze zapytania, czy użytkownik zgadza się by program XXX (komercyjny) używał programu [YYY na licencji GPL] do [...] (tu mam wątpliwości, ponieważ w instalatorze osadzono go statycznie.
*Umieszczenie w instalatorze zapytania, czy chce aby program używał oprogramowania YYY-GPL i czy zgadza się by zostało one pobrane z serwera (tu link do licencji) i do zaakceptowania przyciskiem.
*Napisać w wymaganiach, że program XXX w sekcji wymagań wymaga zainstalowanegoi programu YYY-GPL. Gdy program wykryje, że nie jest zainstalowany - wyświetla instrukcje co zrobić by program XXX stał się pełnowartościowy

Program YYY-GPL nie będzie tutaj modyfikowany.

PS. wiem, że wywołanie CreateProcessW jest mało profesjonalne (lecz bardziej od SYSTEM) - bo mogę precyzyjnie podać ścieżkę, ale nie ten wątek tu chcę dyskutować. Po prostu zadanie które muszę zrobić - zajęłoby pisanie kodu 2 lata, brak jest bibliotek LGPL,, podczas gdy istnieje program, który część tej pracy wykonuje, zaś pozostałą część jestem w stanie wykonać w 2 miesiące.

0

Jeżeli to jest mała część twojego programu wynikowego oraz dasz użytkownikowi możliwość podmiany tego programu na inny (np. poprzez opcje konfiguracyjne) to nie ma problemu. Jednak jeśli to jest wrapper GUI na program GPL to Twój program dalej musi być na GPL.

Dodatkowo komercyjny ≠ własnościowy, programy na licencji GPL jak i AGPL jak najbardziej mogą być komercyjne (patrz RHEL).

0
hauleth napisał(a):

Jeżeli to jest mała część twojego programu wynikowego oraz dasz użytkownikowi możliwość podmiany tego programu na inny (np. poprzez opcje konfiguracyjne) to nie ma problemu. Jednak jeśli to jest wrapper GUI na program GPL to Twój program dalej musi być na GPL.

Dodatkowo komercyjny ≠ własnościowy, programy na licencji GPL jak i AGPL jak najbardziej mogą być komercyjne (patrz RHEL).

Tylko tu jest mała konkluzja. 2 lata zajęłoby napisanie tego co robi tamten program, zaś to co mój komercyjny ma robić to około 2 miesiące pisania. Poniekąd jest to wrapper GUI, ale posiada też inne funkcje, które są biznesowo znaczące dla klienta. Sam wrapper GUI by ich nie interesował.
Docelowo program ma obsługiwać wiele formatów danych, jednak pierwszy klient dostanie tylko z jednym którego wymagał. I tak - przewidziane jest podstawienie innego narzędzia (którego de facto nie ma) oraz możliwość modyfikacji linii komend (to drugie niekoniecznie w wersji 1.0.

Samej idei programu jednak nie mogę zdradzić.

RHEL? Red Hat?

Poza tym jest wiele środowisk typu microGUI oraz wiele płatnych (poniekąd CCS), które też wołały GPLowy gcc/g++ z dodanymi swoimi płatnymi bibliotekami, a całość to tak na prawdę właśnie wrapper GUI z możliwością podpowiadania składni i wygodnym wywołaniem debuggera i kompilatora... I jakoś im nikt głowy za to nie urwał.

0

Tyle, że tam jest możliwość podmiany kompilatora na dowolny inny (np. clang). Poza tym głównym celem tych programów (o ile dobrze zrozumiałem) to pisanie kodu, nie kompilowanie go, jako kompilator używają zewnętrznego narzędzia.

I dalej mylisz 2 rzeczy: płatny nie znaczy własnościowy. Tak chodziło mi o Red Hata a dokładniej Red Hat Enterprise Linux, który jak najbardziej jest płatnym rozwiązaniem. Nikt nie broni Ci sprzedawać programu na licencji GPL.

Więc dalej mój post się utrzymuje, jeśli to nie jest wrapper GUI tylko program, który tak się składa, że używa jakiegoś narzędzia na licencji GPL to si, jeśli jednak wszystko co twój program robi, to dobranie odpowiednich flag uruchomieniowych i odpalenie programu, to wtedy raczej musi być na GPL.

2

Według mnie wrapper do programu GPL może być na zamkniętej licencji. Jest to produkt typu aggregate. GPL FAQ Mere Aggregation, po polsku. Ale można tu dyskutować. Przeczytaj ten FAQ i sam zadecyduj.

Z podanego wyżej linka:

By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.

Rzeczywiście włączenie wszystkiego do wspólnej instalki może być niejednoznaczne. Ale instalator to forma rozpowszechniania, według mnie analogiczna do umieszczenia na wspólnym cd-romie, co jest dopuszczalne. W instalatorze może być check box do instalowania programu GNU GPL i załączona licencja.

Można jeszcze zrobić tak. Napisać swój program na GPL (program WG), który będzie wrapperem do tamtego programu GPL (program OG). Potem używać w Twojej zamkniętej aplikacji (program Z) programu WG, który będzie rozprowadzał WG na licencji GPL. Jest to fair. Jak napisał hauleth - wolno Ci sprzedawać program GPL, tylko na warunkach GPL, czyli ze źródłami. No i generalnie - wolno Ci wywoływać exec WG z programu Z.

Fajnie, że sprawdzasz licencję. Wielu kopiuje bez opamiętania, a potem sprzedaje soft bez krępacji. Z drugiej strony zarzucić Ci pogwałcenie licencji może tylko autor programu (+kontrybutorzy) lub jego reprezentant prawny. Osoby trzecie nie mają nic do powiedzenia.

3

Ogólna odpowiedź brzmi: tak, możesz stworzyć takie oprogramowanie. Uruchomienie procesu aplikacji GPL z poziomu innej aplikacji (niezależnie od jej licencji) nie jest naruszeniem GPL, ponieważ prowadziłoby do absurdu. Zauważ, że jak masz np. shella w systemie operacyjnym i każesz mu odpalić jakąś aplikację, to on robi DOKŁADNIE to, co Ty chcesz zrobić: tworzy proces. Jak masz środowisko graficzne, ono robi dokładnie to samo. Gdyby to miało być naurszenie licencji GPL, to okazałoby się, że w ogóle nie wolno legalnie uruchomić programu na licencji GPL np. pod Windowsem, a z poziomu Basha w Linuksie nie wolno by było uruchomić niczego, co nie jest na tej licencji :).

Są od tego pewne wyjątki - szerzej temat jest wyjaśniony w poniższym artykule:

http://www.ifross.org/en/program-forks-gpl-licensed-program-system-or-vice-versa-call-derivative-work

Druga część odpowiedzi odnośnie instalatora jest wyjaśniona na stronie GNU:

https://www.gnu.org/licenses/gpl-faq.html#GPLInProprietarySystem

Wg mnie uczciwe w duchu licencji byłoby:

  • dodanie możliwości konfigurowania w Twojej aplikacji, jaki program ma być uruchamiany
  • w instalatorze zaproponować instalację w/w narzędzia (może być ono dołączone na płytce jako oddzielny instalator wraz ze źródłami lub ściągnięte z sieci) lub dać możliwość skonfigurowania zamiennika,
  • jasno zaznaczyć, że instalowany program dostępny jest na licencji GNU GPL + co się z tym wiąże.

A jest to uczciwe, ponieważ Twoja aplikacja nie ogranicza użytkownikowi praw do tego drugiego programu wynikających z jego licencji:

  • ma dostęp do źródeł i może z nimi coś zrobić,
  • może łatwo użyć zmodyfikowanej wersji tamtego programu,
  • może wziąć instalator do tamtego programu i zainstalować go gdzieś indziej, całkowicie niezależnie.
0
zyxist napisał(a):

[...]Gdyby to miało być naurszenie licencji GPL, to okazałoby się, że w ogóle nie wolno legalnie uruchomić programu na licencji GPL np. pod Windowsem, a z poziomu Basha w Linuksie nie wolno by było uruchomić niczego, co nie jest na tej licencji :).

Ogólnie masz rację, ale to jedno zdanie muszę sprostować. GPL nie zakazuje żadnego uruchamiania. Uruchamiać można wszystko wszędzie. Ograniczenia dotyczą dystrybucji oprogramowania.

Jeżeli moja firma ma własny program, który zawiera źródła skopiowane z GPL, to to jest legalne. Możemy sobie tego programu używać u siebie w całej firmie, możemy się do tego przyznać. Nie wolno nam go umieścić w internecie, sprzedać itd. Nie możemy go rozpowszechniać (convey).

0

Jarekczek: Nie zapominaj, że wśród programistów są też kobiety. I tak jeżeli zaczynam coś robić czytam te licencje po to aby klient nie miał problemów prawnych później, jak również, żebym ja ich nie miała. Wadliwy prawnie program = potrzeba zwrotu zaliczki, zarobku oraz pokrycia szkód - oddanie kosztów sądowych, gdyby ktoś to zgłosił do foss/fsf.

Dziękuję przedmówcy za jasne opisanie. Myślę, że wrappera dodatkowego nie ma tu sensu pisać - narzędzie którego używam ma wszystkie opcje dostępne z linii komend (wygląda, że właśnie ktoś inny tego wrappera już napisał i z niego korzystam) i dam informację o licencji do dodatku GPLowego, możliwość niezgodzenia się na instalację on-line + opcje wyboru programu i jego linii komend w ustawieniach. Program bez zainstalowanej części GPLowej, tam gdzie nie będzie mógł czegoś zrobić - zaproponuje instalację programu GPLowego lub innego zwracającego dane w podobnym formacie.

Kwestią sporną była tylko jedna rzecz - funkcjonalność programu stanie się mało użyteczna, gdy dany format nie zostanie wcześniej przetworzony na zrozumiały dla programu (przez aplikację GPLową) - jednak zakres wykonywanych zadań przez program komercyjny jest bardzo szeroki i bardzo duża automatyzacja (przeciętny użytkownik nie byłby w stanie ręcznie wydać odpowiednich poleceń tak szybko i bez pomyłki), zaś porgram GPLowy nie potrafi zrobić reszty zadań. W przypadku basha, windowsa itp, nie stają się one mało użyteczne bez pojedynczej aplikacji GPLowej.

W teorii program może się znów stać użyteczny, gdy ktoś podstawi użyteczny program do przetworzenia zadanego formatu danych i wpisze go do konfiguracji.

0

Anonim... Patrz na nicki. "Agata456". Raczej bardziej na miejscu byłoby yu "przepraszam".

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