Чи повинен вихідний код, випущений під GPL, читати людиною?


22

У відповідь на інше запитання , плакат запропонував, що в рамках GPL:

... вам потрібно надати людський читабельний [код], а не версію пропущеного пробілу ...

Читання може здатися мені суб'єктивним і навряд чи вимагатиме прямої програми GPL. Є це?

Відповіді:


37

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

"Читання" є суб'єктивним та не визначеним. Законно випускати дійсно поганий, важко зрозумілий, код під GPL. Нелегально приймати версію, в яку вносите зміни, видаляти пробіл або іншим чином зробити його менш читабельним, і зателефонувати цьому джерелу під GPL.


1
дуже цікаво, спасибі Чи є певна частина ліцензії, яка говорить про це?
Арман

12
GPLv2, Загальні положення та умови, з пункту 3: "Вихідний код твору означає бажану форму роботи для внесення змін до неї."
Девід Торнлі

4
Це обмеження стосується лише ліцензіатів. Для власного коду (жодного зовнішнього GPL-коду не намальовано) ви можете приховати стільки, скільки хочете, і все-таки покласти на нього наклейку GPL (щоб надати права іншим). nVidia зробила це з кодом драйвера ще в той день (1998 або близько того)
Патрік Георгій

2
Однак, безглуздо «ляпати наклейку GPL» на роботу, де ви не надаєте корисний вихідний код, як у прикладі nVidia, безглуздо. Ви також можете використовувати власну ліцензію. Зрозуміло, що nVidia хотіли, щоб вони вважали , що вони діляться своїм кодом, а не ділиться кодом.
thomasrutter

1
Тільки з цікавості. Що робити, якщо ви працюєте в фірмовому редакторі, який зберігає джерело в зашифрованому вигляді? Теоретично у вас є код у тому, як ви працюєте з ним, однак, ніхто інший не міг працювати з ним, оскільки це власний інструмент, до якого ніхто не має доступу.
Айдіакапі

6

Приймаючи GPL v3, у розділі 1 ви маєте:

"Відповідне джерело" для роботи у формі об'єктного коду означає весь вихідний код, необхідний для генерації, встановлення та (для виконуваної роботи) запуску об'єктного коду та модифікації роботи, включаючи скрипти для управління цією діяльністю.

Якби коментарі та пробіли були зняті, а також змінилися імена функцій та змінних, ви не зможете обґрунтовано змінити роботу.

В додаток:

Відповідне джерело для твору у формі вихідного коду - це та сама робота.

Та сама робота, а не змінена робота.

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


4

Питання не містить критичної інформації. Якщо ви є єдиним автором, ви можете випустити власний код під будь-яку ліцензію, яку ви хочете (включаючи GPL), не обов'язково дотримуючись усіх її правил. Таким чином, ви можете надсилати код у формі, яка не є кращою для його редагування, і не порушує жодних законів про авторські права. Чи можуть тоді інші розповсюдити ваш код у дусі того, що він знаходиться під ліцензією вільного програмного забезпечення, сумнівно, тому мало хто, ймовірно, спробує.

Однак більшу частину часу ви не будете єдиним автором твору. Ви будете використовувати існуючий код, створюючи похідну роботу. Такий твір повинен відповідати комбінованим правилам його походження, інакше ви не матимете дозволу на його розповсюдження без порушення авторських прав.

Щоб зробити це зрозуміліше, ось кілька прикладів (IANAL):

  • Якщо ви використовуєте бібліотеку GPL у своєму коді, вам забороняється відправляти власний вихідний код лише у затуманеному вигляді, якщо (як пише Девід Торнлі), що насправді є формою, в якій ви пишете та редагуєте її.
  • Якщо ви використовуєте бібліотеку LGPL у своєму коді, вам буде дозволено надсилати власний вихідний код лише у затуманеному вигляді. Це тому, що LGPL вимагає, щоб ви могли використовувати роботу, яка використовує бібліотеку, з новою версією бібліотеки.
  • Якщо ви розширите бібліотеку LGPL, це було б як у випадку GPL, і вам доведеться надсилати незабруднений код (знову ж таки, якщо ви фактично не редагуєте його).

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

@Alison: Ліцензійні умови поширюються на той, хто використовує (і перерозподіляє в даному випадку) твори, а не на той, хто його створив і ліцензував вам.
Paŭlo Ebermann

1
@Alison Не погоджується. Якщо ви є єдиним власником твору, ви можете передати його на власний розсуд. Тому ви можете поширювати його за умовами (тут не визначена ліцензія магії), а іншим дозволити перерозподіляти його за умовами GPL - GPL додає лише права, щоб інші могли перерозподіляти твори, отримані від ваших. Звичайно, це не вірогідний сценарій, так як якщо б ви не вірили в GPL і були єдиним власником, ви не використовували б його.
Майкл Урман

Вам не потрібно надсилати власний вихідний код, який використовує бібліотеку LGPL, за умови, що мова дозволяє використовувати бінарні файли. Ви повинні відправити те, що дозволило б користувачеві змінити LGPLed частину та відновити додаток (хоча GPLv2 дозволяє запобігти встановленню користувачем зміненої версії). Якщо ви користуєтесь джерелом судна, або з необхідності, або з зручності, це може бути затуманено.
Девід Торнлі

Влучне зауваження. Я відредагую своє повідомлення, щоб більше не говорити, що LGPL не пред'являє жодних вимог до роботи, яка його використовує.
Майкл Урман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.