Всі версії специфікації можна знайти за адресою <>.

Практики REUSE - версія 2.0

2017-11-15

Ви читаєте неофіційний переклад оригінальної сторінки.

1. Надайте точний текст кожної використаної ліцензії

Ліцензії на вільне та відкрите програмне забезпечення стандартизовані та мають стандартні тексти. Незалежно від того, яку ліцензію ви використовуєте, ви повинні включити текст ліцензії у свій проєкт.

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

Найпростіший спосіб переконатися, що ви надаєте незмінну ліцензію, — дослівно скопіювати її з цього репозиторію ліцензій, що підтримується робочою групою SPDX. Робоча група SPDX підтримує список загальновживаних ліцензій. Кожна ліцензія має скорочену назву (так званий ідентифікатор SPDX), яку можна використовувати для унікального посилання на кожну ліцензію. Наприклад, GNU GPL версії 3 має GPL-3.0 як скорочений ідентифікатор.

Якщо ваш проєкт містить лише код, ліцензований за однією ліцензією, ви можете надати текст цієї ліцензії у файлі у каталозі верхнього рівня вашого сховища з назвою LICENSE, LICENCE, COPYING або COPYRIGHT (ви також можете додати до назви файлу якийсь суфікс, наприклад, LICENSE.txt).

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

Деякі ліцензії, такі як ліцензія BSD 2 Clause, існують у багатьох варіаціях, де єдина розбіжність — ім’я власника авторських прав у тексті ліцензії. Ваш проєкт може містити кілька версій однієї й тієї ж ліцензії BSD 2 Clause, оскільки деякі частини можуть бути написані Алісою, а інші — Бобом, що призведе до появи двох різних файлів ліцензії.

Коли ви додасте всі файли ліцензій, вони мають відповідати glob {LICENSE*, LICENCE*, COPYING*, COPYRIGHT*, LICENSES/**}. Це найпоширеніші місця, де можна знайти ліцензії. Якщо ви розмістите ліцензію в іншому місці, можливо, що люди та комп’ютери не помітять її.

Щоб мати змогу посилатися на файл ліцензії з вашого початкового тексту, вам слід вставити ідентифікатор SPDX (наприклад, GPL-3.0, MIT) кожної ліцензії у відповідний файл ліцензії. Найпростіший спосіб зробити це — просто включити назву ліцензії до назви файлу: файл ліцензії для GPL-3.0 стане LICENSES/GPL-3.0.txt.

Якщо перейменування файлу неможливе (наприклад, якщо ви хочете, щоб текст ліцензії містився під COPYING), вам слід додати до файлу заголовок у форматі тегу-значення. Ви можете додати цей заголовок або до самого файлу ліцензії, або до файлу з такою самою назвою з суфіксом .license. Заголовок повинен містити тег Valid-License-Identifier, значенням якого має бути SPDX-ідентифікатор вашої ліцензії. Заголовок повинен закінчуватися тегом License-Text, щоб сигналізувати про початок вашої ліцензії. Заголовок може містити інші теги.

Це приклад файлу ліцензії MIT, який показує, що всі посилання на ідентифікатор SPDX MIT повинні вказувати на цей файл ліцензії.

Valid-License-Identifier: MIT
License-Text:

Ліцензія MIT

Авторське право (c) <year> <copyright holders>

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

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

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

Valid-License-Identifier: GPL-2.0
 Valid-License-Identifier: GPL-2.0+

Якщо ліцензія не включена до списку ліцензій SPDX, або ліцензія є модифікованою версією ліцензії, що входить до цього списку, вам слід створити власний ідентифікатор для неї у вигляді LicenseRef-<унікальний_код>.

Valid-License-Identifier: LicenseRef-MyLicense

У малоймовірному випадку, якщо ваш початковий код містить винятки, такі як Classpath exception 2.0, ви можете включити їх у те саме місце, що й ваші ліцензії, використовуючи той самий стиль заголовка або теги SPDX-Exception-Identifier та Exception-Text замість них. Це приклад правильного винятку:

SPDX-Exception-Identifier: Classpath-exception-2.0
Exception-Text:

 Зв'язування цієї бібліотеки статично або динамічно з іншими модулями — це
 створення комбінованої роботи на основі цієї бібліотеки. Таким чином, терміни
 та умови Загальної публічної ліцензії GNU поширюються на всю комбінацію. 

Пам’ятайте

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

2. Додайте повідомлення про авторські права та ліцензію до кожного файлу

Файли початкового коду часто повторно використовуються в кількох проєктах, беруться зі свого джерела і перепризначаються, або іншим чином потрапляють у репозиторії, де вони відокремлені від свого джерела. Тому вам слід переконатися, що всі файли у вашому проєкті мають заголовок коментаря, який містить інформацію про авторські права та ліцензію на цей файл: Хто є власниками авторських прав і за якою ліцензією (ліцензіями) вони випускають файл?

Вкрай рекомендовано дотримуватися однакового формату цих заголовків у всіх ваших файлах. Однак важливо, щоб ви не видаляли жодної інформації із заголовків файлів, якщо ви не єдиний їхній автор.

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

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

 /*
  * Авторське право (c) 2017 Аліса Комміт <alice@example.com>
  * Авторське право (c) 2009-2016 Боб Денвер <bob@example.com>
  * Авторське право (c) 2007 Приклад Компанії <charlie@example.com>
  * 
  * SPDX-License-Identifier: GPL-2.0
  */

Ви повинні включити інформацію про практику вашого проєкту в файл README або подібний до нього. Це може бути просто посилання на ці практики.

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

  • Ви можете включити текстовий файл з назвою FILENAME.license, у якому ви зберігаєте ваш звичайний заголовок коментаря з усією необхідною інформацією для передачі ліцензійної інформації про файл з назвою FILENAME.
  • Якщо у вас багато таких файлів, але кожен з них має однакове повідомлення про авторські права та ліцензію, ви можете замість цього використовувати DEP-5/copyright файловий формат, і розмістити єдине повідомлення про авторське право, що документує ці файли.
  • Якщо у вас є спосіб автоматичного створення інвентаризації включених файлів у форматі SPDX (див. практику 3), ви можете скористатися ним і не включати окремо файл .license або файл DEP-5/копірайту.

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

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

Якщо початковий код ліцензовано за такою ліцензією, як BSD-2-Clause, де тексти ліцензії можуть відрізнятися для кожного окремого власника авторських прав, вам слід щоразу посилатися на конкретну ліцензію. Таким чином, для файлів, написаних Alice, посилайтеся на LicenseRef-BSD-2-Clause-Alice, а для файлів, написаних Evil Corp, посилайтеся на LicenseRef-BSD-2-Clause-Evil-Corp, і включіть обидві ці ліцензії окремо в LICENSES (див. практику 1).

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

Для проєкту, що використовує систему керування версіями, передавати інформацію про авторське право потрібно обов’язково:

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

Доречним заголовком у цьому випадку буде такий:

 /*
  * Цей файл є частиною проєкту X. Він захищений авторським правом авторів
  * записаних в історії керування версіями файлу, яка доступна за адресою
  * його первісне розташування http://git.example.com/X/filename.c
  * 
  * SPDX-License-Identifier: GPL-3.0
  */

Пам’ятайте

  • Використовуйте єдиний стиль заголовків в усьому проєкті.
  • Не видаляйте наявні заголовки, а лише додавайте їх.
  • Розгляньте можливість використання систем керування версіями для ведення обліку власників авторських прав.
  • Якщо ви використовуєте систему керування версіями, робіть її загальнодоступною.
  • Зробіть посилання на ідентифікатор SPDX у кожному файлі початкового коду.
  • Записуйте інформацію про авторські права в кожному файлі програмного коду.
  • Включіть інформацію про ліцензію та авторське право також для файлів, які не можуть включати відповідний заголовок або в окремому файлі .license, або за допомогою специфікації DEP-5/копірайт.

3. Надайте інвентаризацію програмного забезпечення, що входить до комплекту

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

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

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

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

Перелік матеріалів повинен відповідати специфікації SPDX і міститися у файлі в каталозі верхнього рівня вашого репозиторію під назвою LICENSE.spdx.

Майте на увазі

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

  1. Встановіть управління проєктом, орієнтоване на публічний доступ, перевіряйте матеріали, що додаються до проєкту, щоб захистити їх від вразливості до вилучення, включайте лише матеріали під вільною та відкритою ліцензією, щоб їх можна було вільно копіювати та архівувати, а також забезпечте архівування проєкту в установах, що займаються довгостроковим збереженням програмного коду, наприклад, у Software Heritage. ↩︎