LGPL wymaga, aby, jeśli program korzysta z biblioteki LGPL, użytkownicy muszą mieć możliwość ponownego połączenia programu z inną wersją biblioteki:
...
d) Wykonaj jedną z następujących czynności:
0) Prześlij Minimalne odpowiednie źródło zgodnie z warunkami niniejszej Licencji i odpowiedniego kodu aplikacji w formie odpowiedniej dla i na warunkach, które pozwalają użytkownikowi zrekombinować lub ponownie połączyć Aplikację ze zmodyfikowaną wersją Wersji połączonej, aby utworzyć zmodyfikowana praca łączona, w sposób określony w sekcji 6 GNU GPL do przekazywania odpowiedniego źródła.
1) Użyj odpowiedniego mechanizmu biblioteki współdzielonej do łączenia się z biblioteką. Odpowiednim mechanizmem jest taki, który (a) używa w czasie wykonywania kopii Biblioteki już obecnej w systemie komputerowym użytkownika, i (b) działa poprawnie ze zmodyfikowaną wersją Biblioteki, która jest kompatybilna z interfejsem z Połączoną wersją.
...
Jednak w niektórych przypadkach może to powodować znaczne trudności. W szczególności programy Haskell są prawie zawsze kompilowane statycznie. Co więcej, kompilator dokonuje optymalizacji między modułami, więc nie jest możliwe wyjęcie części kodu i zastąpienie go innym. Tak więc bardzo trudno jest spełnić ten warunek. (Zobacz ten link na Wiki Haskell.)
Łączenie dynamiczne byłoby rozwiązaniem, ale w wielu przypadkach nie jest to możliwe. Na przykład:
- Niektóre platformy mogą w ogóle nie mieć dynamicznego linkowania.
- Niektóre języki nie mają możliwości dynamicznego łączenia. Lub nie można tworzyć modułów wieloplatformowych.
- W niektórych przypadkach dynamiczne łączenie uniemożliwiłoby ważne optymalizacje. Chociaż powiedziałbym, że rzadko stanowi to poważny problem, w językach takich jak Haskell utrata wydajności może być znaczna.
Dlatego szukam standardowej licencji podobnej do LGPL, która nie wymagałaby możliwości ponownego połączenia (i rozumiem, że to usuwa trochę swobody przyznanej użytkownikom). Niektóre projekty używają własnych modyfikacji LGPL, na przykład wxWidgets . Wolałbym jednak użyć standardowej licencji, która jest nieco bardziej oficjalna, być może sprawdzona przez niektórych ekspertów prawnych i (L) zgodna z GPL. Czy jest coś takiego?
(Chciałbym również wiedzieć, czy są jakieś nieprzewidziane konsekwencje takiej modyfikacji LGPL.)
źródło
Odpowiedzi:
Dziwi mnie, że nikt nie wspominał o publicznej licencji Mozilli. Jest podobny do LGPL, z wyjątkiem tego, że umożliwia statyczne łączenie. Wersja 2 MPL jest kompatybilna z GPL / LGPL.
Licencja publiczna Mozilla (MPL 2.0) a ogólna licencja publiczna na mniejszą skalę GNU (LGPL 3.0)
źródło
wxwidgets jest licencjonowany na zasadzie = LGPL + statyczne łączenie
źródło
IANAL, ale doprowadzono mnie do przekonania, że jednym rozwiązaniem jest zapewnienie plików obiektowych dla części innych niż LGPL. W ten sposób użytkownik może ponownie połączyć program, dzięki czemu może swobodnie zmieniać część LGPL, spełniając wymagania LGPL.
Innymi słowy, musisz mieć pakiet źródłowy ze źródłami LGPL i skompilowanymi plikami obiektowymi o kodzie innym niż LGPL. Oczywiście musisz dostarczyć pliki obiektowe dla każdej innej architektury, dla której wypuszczasz pliki binarne, ale nie sądzę, żeby to był duży problem.
Z punktu widzenia programowania najprostszym rozwiązaniem może być po prostu zbudowanie przez system kompilacji pakietu źródłowego w tym samym czasie podczas budowania pliku binarnego do dystrybucji.
źródło
Znalazłem jeden z licencją Google: OpenScales
Nie jest to jednak standard i nie wiem, czy taki istnieje.
źródło
Jak w dalszym ciągu gwarantowałbyś użytkownikom swobodę? Uważam, że „poprawną” odpowiedzią jest statyczne połączenie podkładki dystansowej, która dynamicznie ładuje bibliotekę.
źródło