Помещать лицензию в каждый файл кода? [закрыто]

95

Я считаю, что это излишне дублируется, чтобы иметь его в каждом файле кода, но я вижу это в большинстве проектов с открытым исходным кодом. Должен ли я сделать то же самое или просто включить одну лицензию вне кода?

Джоан Венге
источник
1
Вы должны исключить гарантию в каждом исходном файле, иначе вас могут поймать. (Обратите внимание, что подходящий редактор, такой как Vim, можно легко настроить так, чтобы автоматически скрыть шаблон исключения из гарантии.)
Евгений Сергеев

Ответы:

76

Один-единственный вне кода, пожалуйста! Не знаю, как насчет других, но мне неприятно видеть одно и то же поверх каждого файла.

Думаю, я читал это несколько раз, просто просматривая page_down.

Ладья
источник
10
Я не согласен с Зифре. Любая повторная лицензия наверху меня раздражает.
Strager
49
Разумно и разумно определить, под какой лицензией был выпущен каждый исходный файл, потому что файл может быть отделен от остального кода (повторное использование, как правило, поощряется Open Source), и если файл не содержит информации о лицензии , гораздо сложнее вернуться к правильной лицензии. Но всей лицензии в каждом файле - нет; это было бы гротескно для GPL или LGPL. Как уже говорилось, для коротких лицензий наличие фактического текста лицензии в файле неудобно, но это вопрос суждения. Но разумно определить, под какой лицензией он выпущен.
Джонатан Леффлер,
14
Я только что обновил заголовки файлов в своем проекте, чтобы они содержали только три строки: авторские права, название лицензии и URL-адрес текста лицензии. Он сократил мои заголовки с 26 строк (BSD) до 3 строк. :)
Эско Луонтола
3
@Esko: Не могли бы вы опубликовать образец? Я не знаю, что вы написали для защиты авторских прав. Спасибо.
Джоан Венге
6
Этот ответ отмечен как решение, но, на мой взгляд, вопрос остается открытым, пока у нас нет evidence for the legal situation. Perhaps a lawyer can add a link to a court decision.
Jonas Stein
25

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

С юридической точки зрения это тоже не имеет значения; об авторских правах не требуется явно заявлять.

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

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

Майкл Боргвардт
источник
1
Авторское право не обязательно должно быть явным, но как насчет авторского права?
Kekoa
1
@kekoav: авторское лево менее ограничительно, чем авторское право. По умолчанию вы не можете создавать производные работы.
Zifre
3
В споре это не будет веским аргументом. Если вам сообщат, что существует лицензия и как ее получить, вы не сможете установить технические препятствия, являющиеся вашей виной, которые помешали вам увидеть лицензию.
Лассе В. Карлсен
1
«Копилефт» - это жаргонное обозначение основной идеи GPL «подорвать» ограничения авторских прав изнутри, то есть использовать свои права как правообладателя, чтобы предоставить кому-либо лицензию на свободное использование вашего кода, но вынудить их выпустить ИХ код, который является на основе вашей по той же лицензии.
Майкл Боргвардт
2
Верный; но в данном контексте, как сказал Зифре, это не имеет значения. Если вы не знаете лицензию, под которой был опубликован конкретный фрагмент кода, вы должны предположить, что вам вообще не разрешено его использовать. Так что вам как издателю не нужно слишком усердствовать, чтобы заставить людей прочитать лицензию.
Майкл Боргвардт
14

Нет, вам не нужно помещать лицензию в каждый файл исходного кода.

Если присмотреться, большинство приложений FOSS этого не делают. Они помещают заявление об авторских правах в верхней части каждого файла и короткое предложение, в котором говорится, под какой лицензией находится файл, и где вы можете найти полный текст лицензии. Обычно они указывают вам на файл КОПИРОВАНИЯ или ЛИЦЕНЗИИ, содержащий полный текст лицензии, и / или на веб-сайт, содержащий полный текст (в случае, если файла КОПИРОВАНИЯ больше нет).

Как сказал Майкл Боргвардт в своих ответах, по закону этого делать не нужно. Но желательно использовать исходный код, который вы собираетесь распространять, поскольку люди могут сразу увидеть, у кого есть авторские права и какая лицензия.

Сандер Марешал
источник
1
Этот. Уведомление об авторских правах должно включать ссылку на название лицензии (если она стандартная) и описание того, как найти файл лицензии в дереве исходных текстов.
jmucchiello
13

Это может зависеть от лицензии. В GPL различаетpreamble иlicense . В нем четко указано, что (раздражающая) преамбула должна быть частью кода :

Могу ли я опустить преамбулу GPL или инструкции по ее использованию в ваших собственных программах, чтобы сэкономить место?

Преамбула и инструкции являются неотъемлемой частью GNU GPL и не могут быть пропущены. Фактически, GPL защищена авторским правом, и ее лицензия разрешает только дословное копирование всей GPL. (Вы можете использовать юридические условия для создания другой лицензии, но это не будет GNU GPL.) (1)

Источник: 1) http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

Смотрите также http://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html.

Бесплатная электронная книга из ifrOSS объясняет и комментирует GPL-на немецком языке. Там есть еще один для GPL 3

Для получения обоснованного ответа вам следует обратиться за юридической консультацией, которой нет на sx. Если вы не можете найти юриста для своего (открытого) проекта, обратите внимание на юридическую сеть ЕФСПО .

Йонас Штайн
источник
7
Преамбула и инструкции являются частью полной лицензии, но ничто не говорит о том , что вы должны помещать полную лицензию в каждый файл. [...] attach the following notices to the program.- следующие уведомления - это лишь небольшой раздел полной лицензии. safest to attach them to the start of each source file- самый безопасный, но не обязательный. each file should have at least the "copyright" line and a pointer to where the full notice is found. - единственное требование - это строчка копирайта с указателем на все остальное. Можно поместить полную лицензию в один отдельный файл.
toxalot
3
И я бы сказал, что должен ! = Должен .
toxalot
Вы неправы. Вы не обязаны добавлять в код полную лицензию (не то, чтобы кто- то это сделал ), но вы также НЕ обязаны добавлять какие-либо примечания в свой код вообще (знаменитый заголовок GPL в файлах) - хотя это может иметь смысл. То, что вы цитируете, просто говорит о том, что вы не можете разорвать текст GPL на части.
user136036
7

Я думаю, что причина помещения его в каждый файл является законной. Если соглашение находится в каждом файле, нет никаких шансов, что кто-то наткнется на фрагмент кода, не получив лицензии.

Возможно, это не очень хорошо, но все большие парни используют его, поэтому, если это просто визуальная боль, я бы нашел лучшую причину, чтобы не делать то же самое.

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

Кекоа
источник
1
Что ж, в этом случае просто укажите в каждом файле, продолжая его работу, вы соглашаетесь с лицензией в файле licence.txt. Но не копируйте / вставляйте один и тот же текст в каждый файл. Иногда я нахожу файлы с кодом короче лицензии.
Rook
Да, я согласен, что это работает точно так же, особенно для длинных лицензий. Несмотря на то, что это может быть юридически необязательным или даже необоснованным в суде, ссылка на вашу лицензию как минимум полезна для информирования людей без необходимости искать лицензию, под которой находится код.
Kekoa
3

IANAL,

Предполагая, что вы говорите о лицензировании, а не о лицензионном соглашении, вы можете разместить лицензию извне. Это почти всегда делается с действительно длинными лицензиями, такими как GPL. Было бы глупо помещать всю лицензию GPL в каждый файл. Обычно у вас будет просто уведомление о том, где вы можете найти действительную лицензию. Это совершенно законно. Однако с действительно короткими лицензиями, такими как BSD / Apache / MIT / что угодно, проще просто включить лицензию в каждый файл, так как уведомление о том, где найти лицензию, будет почти такой же длины, как и сама лицензия.

Зифре
источник
2

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

Если вы не согласны с этим, и это ВАШ код, вы можете выбрать более подходящую лицензию или создать свою собственную.

Марк Джонс
источник
1

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

Адимитри
источник
Спасибо. Это будет открытый исходный код.
Джоан Венге
Вы можете создать жестко запрограммированную строку, содержащую лицензию, чтобы она отображалась в двоичном файле, но, вероятно, это слишком :).
Лиран Ореви
1

Он вам не нужен для лицензии, достаточно одного внешнего файла, если ясно, какие файлы он охватывает.

Однако для защиты авторских прав вы должны иметь уведомление об авторских правах на каждом фрагменте текста.

Джеймс Андерсон
источник
Спасибо, так что авторские права разные?
Джоан Венге
INAL, но лицензия - это договор между вами и пользователем / клиентом. Авторское право - это утверждение права собственности на часть письменного произведения. Кто-то мог взять фрагмент вашего кода и обоснованно заявить, что это не авторские права, потому что уведомление отсутствовало. Не волнуйтесь, хотя "Copyright Joe Soap (Cleansoft Inc.)" - это все, что вам нужно.
Джеймс Андерсон
10
Вы так ошибаетесь. Хотя, как правило, действительно полезно везде добавлять уведомления об авторских правах для ясности, но это не означает, что справедливо «предполагать, что это не защищено авторским правом», потому что вы знаете, что ВСЕ защищено авторским правом. Когда кто-то получает исходный код, он может найти заявление о лицензии, которое позволяет ему использовать его, или он может узнать, что он по той или иной причине находится в открытом доступе. В противном случае он защищен авторским правом и не может быть скопирован. Авторское право - это автоматическая вещь, и стоит упомянуть об этом, но если вы этого не сделаете, это не значит, что вы его потеряете ...
Джаспер
1

Что я делаю, так это помещаю двухстрочный комментарий в верхней части файла, в котором указывается название моей компании, дата последней редакции и имя лицензии, имеющейся у исходного файла, а затем в самом низу файла короткую версию лицензия.

Конечно, полная лицензия (все они в случае нескольких лицензий) всегда прилагается к исходному файлу и каталогам выпуска.

Гай Сэнсэй
источник
4
как вы автоматизируете дату последней редакции?
Дастин Гетц,