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

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

2017-10-27

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

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

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

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

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

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

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

Пам’ятайте

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

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

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

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

Заголовок вашої ліцензії має містити повідомлення про авторські права, SPDX-License-Identifier відповідно до стандарту SPDX та тег License-Filename відповідно до практики REUSE.

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

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

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

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

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

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

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

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

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

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

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

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

Пам’ятайте

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

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

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

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

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

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

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

Пам’ятайте

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

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