З питань поширених запитань про GPL (але порада стосується всіх ліцензій):
Чому GPL вимагає включення копії GPL з кожною копією програми?
Включення копії ліцензії до роботи є життєво важливим, щоб кожен, хто отримав копію програми, міг знати, які його права.
Це може бути спокусливо замість самої ліцензії включити URL-адресу, що посилається на ліцензію. Але ви не можете бути впевнені, що URL все ще буде дійсним через п'ять років чи десять років. Через двадцять років URL-адреси, як ми їх знаємо сьогодні, більше не можуть існувати.
Єдиний спосіб переконатися, що люди, які мають копії програми, надалі зможуть бачити ліцензію, незважаючи на всі зміни, що відбудуться в мережі, - це включити копію ліцензії до програми.
(наголос мій)
З того моменту, коли сайт, на який ви ліцензуєте, знижується або змінює його URL-адреси, люди, які мають копії вашого програмного забезпечення, більше не можуть перевірити, які права вони можуть безпечно здійснювати. Припустимо, навіть, що ви могли якось гарантувати, що ця точна URL-адреса назавжди буде в Інтернеті: можливість користувачів перевірити, чи правильно їх використання вашого програмного забезпечення все ще залежить від можливості підключення до конкретної URL-адреси. Хоча ця вимога може не бути обтяжливою у вашому конкретному місті / країні / планеті, вона може бути обтяжливою в іншому місці. Ви не повинні нав'язувати цю вимогу, особливо коли рішення (включаючи повний текст ліцензії) є тривіальним.
Ви можете відповісти на цю скаргу, сказавши: "Так що? Якщо URL-адреса знижується або недоступна, однозначного дескриптора на зразок" GNU GPL v3 "повинно бути достатньо. Повнотекстових копій GPL є багато; користувачі можуть шукати самі ліцензії ». Кілька проблем відразу виникають на увазі:
Це не узагальнює ліцензійні ідентифікатори, які є менш зрозумілими (на згадку приходить фраза "ліцензія BSD").
Це не добре узагальнює ліцензії, які є менш поширеними або налаштовані на замовлення (на думку: "GPL зі зв'язуючими винятками" на увазі: яке поєднання винятків?). Наскільки звичайною має бути ліцензія, перш ніж розумно очікувати, що користувач надійно знайде її по імені?
Це все ще вимагає від користувачів підключення до Інтернету, що може бути не так, навіть якщо вони мали з'єднання під час отримання програмного забезпечення. (І вони, можливо, не мали доступу до Інтернету, коли отримали програмне забезпечення: "вік компакт-дисків" ще не закінчився у багатьох частинах світу. Як додатковий випадок розглянемо національне населення, яке має широкий доступ до Інтернету, але цензує значну частину його .) Наслідком вільно-повторного розповсюдження програмного забезпечення є те, що одержувач може не отримувати копію вашого програмного забезпечення безпосередньо від вас або через канал розповсюдження, який ви спочатку очікували.
Один остаточний аргумент проти ліцензійних посилань відзначається коментарем MichaelT нижче: це може дозволити вам динамічно, заднім числом змінювати ліцензію. Це можна зробити навмисно, але це також можна зробити випадково, якщо ви змінили ліцензію між версіями програмного забезпечення, але використали одне і те ж ліцензійне посилання для обох версій, тим самим припинивши існування старої ліцензії. Такий перехід додасть труднощів людям, яким потрібно довести, що вони отримали свою стару копію за іншою ліцензією, ніж поточна версія.
То чому я повинен зберігати ліцензію в корені проекту?
Я не юрист, але я ніколи не бачив яких - або переконливі аргументи , що вам дійсно потрібно , щоб зберегти ліцензії в корені проекту. Навіть GPL, де зазначено, що ліцензія повинна супроводжувати кожну копію твору, мовчить про те, як вона повинна супроводжувати роботу. (Це може бути тому, що GPL може застосовуватися в непрограмному контексті, де поняття "кореневий каталог" не має сенсу.)
Зберігання ліцензії в кореневому каталозі - це, мабуть, хороша ідея, оскільки це збільшує ймовірність того, що користувач її побачить, і тим самим мінімізує розчарування користувачів та ймовірність подання скарг на вас за спробу приховати ліцензію в якомусь незрозумілому каталозі. Якщо у вас багато ліцензій, може бути більше сенсу розмістити їх у власній папці та включити очевидний проект README, який містить шляхи до файлу для пошуку ліцензії для кожного компонента.
Розміщення вашої ліцензії в корені каталогів є корисною практикою ще й тому, що вона може розмежувати ліцензії модулів, які ліцензуються інакше, ніж робота в цілому. Припустимо, мій проект FooProj використовує окремий модуль BarMod. FooProj може мати ліцензію GPL, тоді як окремий модуль може мати ліцензію MIT. Коли я вперше відкриваю FooProj, я бачу копію GPL в корені і розумію, що робота в цілому має ліцензію на GPL. Коли я спускаюсь у папку для BarMod, я бачу там новий файл ліцензії, і я розумію, що вміст цієї папки має ліцензію MIT. Звичайно, це лише корисна допомога; Ви завжди повинні чітко вказувати ліцензування своїх модулів у файлі README, NOTICE чи подібному файлі.
Підсумовуючи, використання кореня файлу - справа зручності та ясності. Я не бачив жодного юридично обов'язкового тексту ліцензії з відкритим кодом, який цього вимагає, і я не знаю жодної причини, чому це було б вимагати юридично. Ваша ліцензія повинна бути досить простою для виявлення одержувача; включаючи ліцензію в корені проекту достатньо, але не потрібно, щоб задовольнити цей критерій.