Должен ли исходный код, выпущенный под лицензией GPL, быть читаемым человеком?

Ответы:

37

GPL требует, чтобы это была предпочтительная версия для редактирования. Если вы обычно пишете в обфусцированном коде и вносите в него изменения непосредственно, то это источник GPL. Если вы работаете с читаемой версией, а затем запускаете ее через любой вид обфускатора, читаемая версия - это то, что GPL считает источником.

«Читаемость» субъективна и не определена. Законно выпускать действительно плохой, трудный для понимания код под лицензией GPL. Недопустимо брать версию, в которую вы вносите изменения, удалять пробелы или иным образом делать ее менее читаемой, и называть ее источником под лицензией GPL.

Дэвид Торнли
источник
1
очень интересно, спасибо Есть ли конкретная часть лицензии, которая утверждает это?
Арманд
12
GPLv2, Условия и положения, из пункта 3: «Исходный код для работы означает предпочтительную форму работы для внесения изменений в нее».
Дэвид Торнли
4
Это ограничение распространяется только на лицензиатов. Для вашего собственного кода (без внешнего кода GPL) вы можете запутать столько, сколько захотите, и при этом наклеить на него наклейку GPL (чтобы предоставить права другим). nVidia сделала это с кодом водителя еще в тот день (1998 год или около того)
Патрик Георгий
2
При этом бессмысленно «наклеивать наклейку GPL» на работу, в которой вы не предоставляете пригодный для использования исходный код, как в примере с nVidia. Вы могли также использовать частную лицензию. Очевидно NVidia хотел быть видно , как обмен их код фактически не разделяя их код.
Томасруттер
1
Просто из любопытства. Что если вы работаете в собственном редакторе, который сохраняет исходный код в зашифрованном виде? Теоретически у вас есть код, как вы работаете с ним, однако, никто другой не мог работать с ним, потому что это проприетарный инструмент, к которому никто не имеет доступа.
Aidiakapi
6

Принимая GPL v3, в разделе 1 у вас есть:

«Соответствующий источник» для работы в форме объектного кода означает весь исходный код, необходимый для генерации, установки и (для исполняемой работы) выполнения объектного кода и изменения работы, включая сценарии для управления этими действиями.

Если комментарии и пробелы были удалены, а также изменились имена функций и переменных, вы не сможете разумно изменить работу.

К тому же:

Соответствующий источник для работы в форме исходного кода - это та же самая работа.

Та же самая работа, а не измененная работа.

Итак, чтобы прояснить мою предыдущую мысль, исходный код должен быть неизменным, я предполагаю, что человек пишет == человек для чтения. Но да, вы могли бы написать прямо на том, что можно считать не читаемым человеком.

Дэвид
источник
4

Вопрос не содержит критической информации. Если вы являетесь единственным автором, вы можете выпустить свой собственный код по любой лицензии (включая GPL), не обязательно следуя всем ее правилам. Таким образом, вы можете отправлять код в форме, которая не является предпочтительной для его редактирования, и не нарушать законы об авторском праве. Могут ли другие затем расширить ваш код в духе того, что он находится под лицензией свободного программного обеспечения, сомнительно, поэтому вряд ли кто-то попробует.

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

Чтобы сделать это более понятным, вот несколько примеров (IANAL):

  • Если вы используете библиотеку GPL в своем коде, вам не разрешат отправлять ваш собственный исходный код только в запутанной форме, если (как пишет Дэвид Торнли) это не та форма, в которой вы пишете и редактируете ее.
  • Если вы используете библиотеку LGPL в своем коде, вам будет разрешено отправлять собственный исходный код только в запутанной форме. Это связано с тем, что LGPL требует, чтобы вы могли использовать произведение, которое использует библиотеку, с более новой версией библиотеки.
  • Если вы расширите библиотеку LGPL, это будет похоже на дело GPL, и вам придется отправлять необфусцированный код (опять же, если только вы его не редактируете).
Майкл Урман
источник
1
Вы должны соблюдать все правила лицензии, независимо от того, кому принадлежит авторское право. Если вы решите, что хотите использовать свою библиотеку JS на своем веб-сайте, а также выпустить ее под лицензией GPL, вы можете сделать это отдельно. Этот вопрос не относится к LGPL, хотя, если к LGPL применяются аналогичные ограничения, поскольку GPL относится к удобочитаемости кода, это было бы полезно упомянуть здесь.
Арманд
@Alison: условия лицензии применяются к тому, кто использует (и перераспределяет, в данном случае) произведения, а не к тому, кто его первоначально создал, и к вам лицензию.
Паŭло Эберманн
1
@ Элисон не согласна. Если вы являетесь единственным владельцем произведения, вы можете повторно приобрести его по желанию. Таким образом, вы можете распространять его в соответствии с условиями (волшебная неопределенная лицензия здесь) и разрешать другим распространять его в соответствии с условиями GPL - GPL только добавляет права, позволяющие другим распространять произведения, созданные вами. Конечно, это маловероятный сценарий, так как если бы вы не верили в GPL и были единственным владельцем, вы бы его не использовали.
Майкл Урман
Вам не нужно отправлять собственный исходный код, который использует библиотеку LGPL, при условии, что язык допускает двоичные файлы. Вы должны отправить то, что позволило бы пользователю изменить часть LGPL и пересобрать приложение (хотя GPLv2 позволяет запретить пользователю устанавливать измененную версию). Если вы отправите источник, либо по необходимости, либо по соображениям удобства, он может быть запутан.
Дэвид Торнли
Хорошая точка зрения. Я отредактирую свой пост, чтобы больше не говорить, что LGPL не предъявляет никаких требований к работе, которая его использует.
Майкл Урман