Яка найкраща практика для організації сторонніх бібліотечних ліцензій «оформлення документів»?


60

Я розробляю невеликий проект з відкритим кодом. Додаток використовує багато сторонніх бібліотек, випущених з рядом ліцензій: Apache, MIT, BSD, LGPL та CDDL.

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

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

Ліцензія MIT містить повідомлення про авторські права і говорить:

Вищезазначене повідомлення про авторські права та це повідомлення про дозвіл повинні міститись у всіх копіях або значній частині Програмного забезпечення.

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

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

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

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

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

Яка найкраща практика впорядкування всіх цих даних? Чи слід створити текстовий файл і скопіювати вміст усіх NOTICEфайлів, ліцензій MIT та BSD тощо у цей файл? ... чи я повинен створити окремий каталог для кожної бібліотеки і помістити всі дані, що стосуються бібліотеки, до цього каталогу? … Чи щось інше?

Було б також цікаво побачити будь-які приклади цього «оформлення документів» у опублікованих проектах.

ОНОВЛЕННЯ:

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

Відповіді:


62

По-перше, стандартна відмова від відповідальності: 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) Всередині самого програмного забезпечення перелік бібліотек разом із ліцензією та власниками авторських прав повторюється у діалоговому вікні About .

Щоб вирішити ваші конкретні питання щодо включення вихідного коду та макета файлу:

  • прийнято посилатися лише на повний вихідний код сторонніх пакетів. Зверніться до кожної конкретної ліцензії, щоб бути впевненою, але IMHO, що надає посилання, має бути достатньою. Наприклад, якщо ви користуєтеся мінімізованою версією бібліотеки, ви можете надати посилання на стандартне завантаження та буде добре.

  • якщо сторонній компонент прямо не вимагає, щоб дистрибутиви зберігали макет файлу однаковий, ви можете перевпорядкувати речі за своїм бажанням. Уявіть, що ви використовуєте веб-бібліотеки, маючи кожен 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/…
Олексій
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.