Що означає "GPL за винятком classpath" на практиці?


69

Здається, Oracle ліцензує весь свій відкритий код, пов'язаний з Java, під GPL за винятком classpath . Як я розумію, це, здається, дозволяє поєднувати ці бібліотеки з власним кодом у продукти, які не повинні бути охоплені GPL.

  1. Як це працює?
  2. Наведіть приклади того, як я можу і не можу використовувати ці класи?
  3. Чому ця нова ліцензія була використана на відміну від LGPL, яка, здається, дозволяє майже однакові речі, але краще встановлена ​​та зрозуміла?
  4. Чим відрізняються LGPL?

1
Я знайшов це на wikipedia: en.wikipedia.org/wiki/…, яка дещо очищує речі, але я все ще не розумію, чому хтось би використовував це через LGPL. Гарне питання!

1
На сторінках Вікіпедії не згадуються речі типу "користувач повинен мати змогу замінити бібліотеку своєю версією", що є положеннями LGPL. Тож, можливо, GPL + Виняток цього не вимагає?
Тило

1
Читаючи далі, це, мабуть, так: "LGPL формулює більше вимог до виняткових зв'язків: ви повинні дозволити модифікацію використовуваних частин Бібліотеки та зворотної інженерії (вашої програми та бібліотеки) для налагодження таких модифікацій"
Тило

В цьому випадку то , що я НЕ дозволив зробити з цієї ліцензії? Я можу скопіювати ліцензований код (вибирати + вибирати класи) у свою власну базу коду (без змін, звичайно)? Чи можу я використовувати автоматизовані засоби побудови для зміни отриманого бінарного файлу? Обмускутори, мінімізатори, знімачі мертвого коду?
Тило

Ви можете скопіювати код і використати його у власному коді ТОЛЬКО, якщо ваш власний код також випущений за ліцензією "GPL з виключенням classpath" . Якщо ваш код є власником або за більшістю інших ліцензій з відкритим кодом, таких як MIT, вам заборонено використовувати його.
Abhi Beckert

Відповіді:


69

По-перше, я не юрист. Але я вивчив багато ліцензій і розумію питання, що стосуються їх.

По-друге, я знаю, що це давнє питання, але я думаю, що це все ще викликає розгубленість і занепокоєння. Якщо це НЕ хвилює, це повинно бути. Вибір ліцензії - велика справа, яку ви не можете банально змінити в дорозі, особливо якщо задіяно декілька учасників.

(L) GPL був написаний на увазі на C / C ++ на жаль, на жаль. Він говорить про "вихідний код", "об'єктний код", "динамічне посилання", "статичне посилання", "компілятори" та "інтерпретатор об'єктного коду". Отже, переклад цього на інші мови, які не дотримуються тих же методів компіляції (наприклад, байт-код Java, компіляція Python як раз у часі чи інтерпретована природа Javascript), потребує певних здогадок та припущень. Коли ви говорите про закон - тобто думаєте про можливі судові справи, коли дві сторони сперечаються - відсутність чіткого розрізнення - це НЕБЕ ЧОГО.

Стандартний фрагмент коду, що має ліцензію GPL, досить простий у намірі. Кожен, хто використовує цей код, очікується, що він видасть свій код усім користувачам, коли вони розповсюджують або продають його. Це вірус GPL, який хотів створити Річард Сталлман, і зробив це чітко і чисто.

Спочатку LGPL намагалася дозволити "бібліотеку", яка не була б вірусною. Але вони все ще хотіли, щоб кінцевий користувач міг самостійно замінити бібліотеку, отже, різниця між "статичним" та "динамічним" зв'язком - користувач міг перейти на іншу динамічно пов'язану бібліотеку, тому не потрібно було б мати ліцензію як GPL. А статичне посилання вимагає від користувача GPL. Ліцензія насправді говорить про "файли заголовків", які зрозумілі в C / C ++, але, очевидно, не зрозуміло, коли ви знаходитесь у світі Java, Python, Javascript тощо. Тож L ("бібліотека") речей LGPL каламутна, в кращому випадку.

Це доходить до суті справи. Нічого незрозумілого - БАД у світі законів. Якщо я дивлюся на те, щоб створити щось із використанням компонента GPL або LGPL, я хочу бути впевненим, яке моє правове становище в майбутньому, якщо я буду в суді. Але на сьогоднішній день я не впевнений, оскільки насправді не було гарних судових справ, що встановлювали юридичний прецедент, лише інтелектуальні аргументи на форумах, як це.

Ось де виняток Classpath є неоціненним. У ньому чітко зазначено, що код за ліцензією - це (L) GPL, але все, що використовує цей код, може слідувати тому, що потрібно. Немає ifs, ands або buts. Якщо ви змінили основний код (наприклад, виправлення помилок), вам все одно доведеться випустити ці зміни як частину GPL. Але використання НЕ заражає вас.

З точки зору бізнесу я розумію, чому деякі не хочуть торкатися GPL-коду 10-дюймовим полюсом. Правове становище є незрозумілим, і бізнес може бути пошкоджений десятиліттям, коли остаточно встановиться правовий прецедент. Або вони можуть застрягти в суді роками, борючись за встановлення правового прецеденту. Незалежно від того, вони просто не хочуть ризикувати витратами на цю битву. Додавання положення про виключення Classpath виключає юридичні питання та уникає будь-якої (серйозної) потенційної судової справи.

Отже, для мене виняток Classpath значно відрізняється від LGPL. Це юридично чистий спосіб намалювати яскраву лінію, що дозволяє не GPL використовувати вихідний код GPL або LGPL або бібліотеки.


20
IANAL, але я один із творців винятку Classpath, і це правильна відповідь. Виняток створено для підтримки AOT, складених випадків вбудованого використання, коли розробники стаціонарно пов'язують бінарні файли (у нашому випадку gcj). Нам знадобилося щось на кшталт ліцензії libgcc, тому я написав першу версію винятку Classpath, виходячи з цього. З тих пір вона дозріла, але дух той самий.
Ентоні Грін

6

GPL за винятком classpath поводиться як LGPL для більшості застосувань.

Це означає, що вам потрібно мати можливість доставити джерело для бібліотеки на вимогу. Це не означає, що вам потрібно мати можливість відправляти власне джерело. Це означає, що вам не доведеться застосовувати спосіб заміни бібліотеки, якщо ви стаціонарно посилаєтесь на неї, але ви не можете використовувати відкритий ключ, щоб запобігти заміні.


-3

Схоже, ліцензії стилю "GPL з винятком classpath" можуть бути старшими, ніж LGPL.

Мабуть, єдиною причиною, поки хто все ще користується ним, є те, що GPL-код не можна перенести на код LGPL без письмового дозволу всіх, хто коли-небудь надав код.


7
Перша версія LGPL була випущена в 1991 році, так що вона передувала Java. en.wikipedia.org/wiki/LGPL
Тило

Він передує Java, але чи є він перед усім кодом всередині Java? Можливо, перший випуск Java містив код від старого проекту "GPL з classpath".
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.