Какова наилучшая практика оформления сторонних библиотечных лицензий на «бумажную работу»?

60

Я занимаюсь разработкой небольшого проекта с открытым исходным кодом. В приложении используется множество сторонних библиотек, выпущенных с различными лицензиями: Apache, MIT, BSD, LGPL и CDDL.

Каждая из этих лицензий имеет свои требования к оформлению документов. Например, лицензия Apache v2.0 гласит:

Если Работа включает в себя текстовый файл «УВЕДОМЛЕНИЕ» как часть своего распространения, то любая распространяемая вами Производная версия должна включать в себя читаемую копию уведомлений об атрибуции, содержащихся в таком файле УВЕДОМЛЕНИЯ.

Лицензия MIT содержит уведомление об авторских правах и гласит:

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

Лицензия BSD также содержит уведомление об авторских правах и гласит:

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

LGPL v.3 говорит:

(Вы должны) сделать заметное уведомление с каждой копией Комбинированного произведения о том, что Библиотека используется в нем и что Библиотека и ее использование подпадают под действие настоящей Лицензии.

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

Какова наилучшая практика для организации всех этих данных? Должен ли я создать текстовый файл и скопировать в него содержимое всех NOTICEфайлов, лицензий MIT, BSD и т. Д.? ... или я должен создать отдельный каталог для каждой библиотеки и поместить все данные, относящиеся к библиотеке, в этот каталог? … или что-то другое?

Также было бы интересно увидеть какие-либо примеры этой «бумажной работы» в опубликованных проектах.

ОБНОВИТЬ:

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

Алексей
источник

Ответы:

63

Во-первых, стандартный отказ от ответственности: IANAL, но случайный незнакомец.

Недавно я упаковывал заявку AGPL (*). Он использует сторонние библиотеки, распространяемые по лицензиям jQuery, MIT, BSD (и некоторым другим). Вот как я поступил.

Мои основные намерения , когда я проектировал это было: быть совместимыми и быть справедливыми . В то время как первый должен быть достаточным, второй гарантирует, что тот, кто пытается предъявить мне иск за то, что он не на 100% прав, должен признать, что я сделал добросовестно.

1) Исходные файлы: все мои файлы имеют заголовок AGPL. Все сторонние файлы остаются (в основном) неизмененными и, следовательно, имеют свой собственный заголовок лицензии.

2) LICENSE.txt в корне пакета содержит текст лицензии AGPL (как описано в разделе «Как применить эти условия к новым программам»).

3) Вторичный файл лицензии, который я назвал LICENSE-3RD-PARTY.txt, также расположенный в корне пакета, содержит дословные копии ВСЕХ лицензий. Для каждой лицензии в заголовке указывается, к какой лицензии она относится и к какой части она относится. Я также привожу здесь имена владельцев авторских прав - я использую их потом где-то еще, так что это стоит усилий.

-----------------------------------------------------------------------------
                        The MIT License (MIT)
        applies to: 
        - AJAX Upload, Copyright (c) Andrew Valums
        - jQuery hashchange event, Copyright (c) 2010 "Cowboy" Ben Alman
        - jquery.hotkeys, Copyright (c) 2010 John Resig
-----------------------------------------------------------------------------

Permission is hereby granted, free of charge [...]

4) README.txt, также в корне, объясняет, что программное обеспечение является AGPL (см. LICENSE.txt) и использует сторонние библиотеки, которые распространяются на их собственных условиях (см. LICENSE-3RD-PARTY.txt)

5) В онлайн-документации у меня есть страница лицензии, которая повторяет информацию из файла readme: мое программное обеспечение - AGPL, и оно использует сторонние компоненты, которые являются BSD / MIT / [...]. Я решил сохранить эту страницу более чистой и удобочитаемой, поэтому указывается только название лицензии, ссылка на полный текст и имена владельцев авторских прав, а также ссылка на их собственный веб-сайт.

jQuery
    Copyright 2013 jQuery Foundation and other contributors
    http://jquery.com
    MIT License
Data Driven Documents (D3)
    Copyright (c) 2013, Michael Bostock    <-- link to personal website, if any
    http://d3js.org                        <-- link to software website
    BSD-like license                       <-- link to license full text
[...]

6) Также в онлайн-документации у меня есть страница « Кредиты» , где я перечисляю прямых и косвенных основных участников. Я, например, процитировал группу PostgreSQL, хотя PostgreSQL не включен в загрузку, но он нужен для запуска программного обеспечения. Это было бы хорошим местом для размещения всех подтверждений, которые требуются или желаются авторами сторонних инструментов / библиотек / и т. Д.

7) Внутри самого программного обеспечения список библиотек вместе с владельцами лицензий и авторских прав повторяется в диалоговом окне « О программе».

Чтобы ответить на ваши конкретные вопросы относительно включения исходного кода и формата файла:

  • общепринято ссылаться только на полный исходный код сторонних пакетов. Проконсультируйтесь с каждой конкретной лицензией, чтобы быть уверенным, но ИМХО предоставления ссылки должно быть достаточно. Например, если вы используете минимизированную версию библиотеки, вы можете предоставить ссылку на стандартную загрузку и все будет в порядке.

  • если сторонний компонент явно не требует, чтобы в дистрибутивах макет файла оставался идентичным, вы можете переупорядочить вещи по своему усмотрению. Представьте, что вы используете веб-библиотеки, каждый из которых имеет каталог css / и js /, вы можете объединить их вместе в один каталог lib /, содержащий объединенные css / и js /, или даже разбросать их по всему дереву исходного кода - ваш выбор.

И в заключение, я бы более чем приветствовал комментаторов, которые махали рукой, говоря: «Вы делаете это неправильно» и / или «Вы должны также сделать это ».

(*) Это не предназначено для связи со спамом, а просто для того, чтобы ответить на часть вопроса «просьба привести примеры». Не стесняйтесь, дорогие моды, очистить эту ссылку, если это противоречит правилам.

Герцшпрунга
источник
2
Спасибо за отличный ответ! Это именно та информация, которую я ищу. Я пока не приму это, чтобы увидеть, есть ли что сказать другим людям.
Алексей
8
Для тех, кто придет сюда позже, у FireFox есть документ, аналогичный LICENSE-3RD-PARTY.txtфайлу, описанному в этом ответе. (Нажмите Licensing Informationна Aboutполе.) Аналогичный документ есть и в Google Chrome.
Алексей
1
Вот аналогичный документ, в котором перечислены сторонние программы, используемые IntelliJ IDEA: confluence.jetbrains.com/display/IDEADEV/…
Алексей