Внесення ліцензії у кожен файл коду? [зачинено]


93

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



1
Вам потрібно виключити гарантію в кожному вихідному файлі, інакше ви можете потрапити назовні. (Зауважте, що належним редактором, як-от Vim, можна легко налаштувати автоматичне складання котла з гарантійним виключенням для вас поза полем зору.)
Євгеній Сергєєв,

Відповіді:


74

Будь-який один за межами коду, будь ласка! Я не знаю про інших, але ненавиджу бачити те саме, що над кожним файлом.

Я думаю, що я читав її кілька разів, просто перебираючи сторінку.


10
Я не згоден із Зіфром. Будь-яка повторна ліцензія вгорі дратує мене.
страгер

49
Доцільно і розумно визначити, під якою ліцензією випущено кожен вихідний файл, оскільки цей файл може бути відокремлений від решти коду (повторне використання - загалом рекомендується відкритим кодом), і якщо файл не містить інформації про ліцензію , складніше відстежувати правильну ліцензію. Але вся ліцензія в кожному файлі - ні; це було б гротескно для GPL або LGPL. Як уже було запропоновано, для коротких ліцензій неприємно містити фактичний текст ліцензії у файлі, але це виклик рішення. Але розумно визначити, під якою ліцензією вона випущена.
Джонатан Леффлер

14
Я щойно оновив заголовки файлів у своєму проекті, щоб було лише три рядки: авторське право, ім’я ліцензії та URL-адреса до тексту ліцензії. Це скоротило мої заголовки з 26 рядків (BSD) до 3 рядків. :)
Esko Luontola

3
@Esko: Чи можете ви, будь ласка, опублікувати зразок? Я не знаю, що ви написали для авторських прав. Дякую.
Джоан Венге

6
Ця відповідь позначена як рішення, але, на мою думку, питання все ще залишається відкритим, поки у нас немає evidence for the legal situation. Perhaps a lawyer can add a link to a court decision.
Йонас Штейн

25

EULA - це неправильний термін, оскільки люди, які переглядають вихідний код, зазвичай не є кінцевими користувачами.

Юридично це також не має значення; авторські права не потрібно декларувати прямо.

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

Я б сказав, що найкращим компромісом є розміщення дуже короткого заголовка, що містить посилання (абсолютна URL-адреса, а також відносна в межах проекту) на повний текст ліцензії у кожен файл вихідного коду. Таким чином, кожен, хто піклується про ліцензію, знає, де її знайти (в ідеалі люди, які готові платити величезні ліцензійні внески; ви, звичайно, хочете, щоб ці люди могли з вами зв’язатися!)


Авторські права можуть не бути явними, але що робити з копією?
Кекоа

1
@kekoav: copyleft менш обмежувальний, ніж авторські права. За замовчуванням ви не можете робити похідні роботи.
Зіфре

3
У суперечці це не було б вагомим аргументом. Якщо вам сказали, що існує ліцензія, і як її отримати, ви не можете розміщувати технічні бар'єри, які є вашою виною, які заважали вам бачити ліцензію.
Лассе В. Карлсен

1
"Copyleft" є сленговим для основної ідеї GPL "підривати" обмеження авторських прав зсередини, тобто використовувати свої права як власника авторських прав, щоб надати ліцензію будь-кому, щоб вільно користуватися вашим кодом, але змусити їх випустити їхній код, який є на основі вашої відповідно до тієї ж ліцензії.
Майкл Боргвардт

2
Правильно; але в цьому контексті, як сказав Зіфр, це не має значення. Якщо ви не знаєте ліцензії, під якою був опублікований конкретний фрагмент коду, ви повинні вважати, що ви взагалі не можете ним користуватися. Отже, як видавець, вам не доведеться надто довго намагатися людей читати ліцензію.
Майкл Боргвардт

14

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

Якщо придивитись ближче, більшість програм FOSS теж не роблять цього. Вони ставлять заяву про захист авторських прав у верхній частині кожного файлу, а коротке речення повідомляє про те, під якою ліцензією знаходиться файл, і де ви можете знайти повний текст ліцензії. Зазвичай вони вказують на файл КОПІВАННЯ або ЛІЦЕНЗІЇ, що містить повний текст ліцензії та / або на веб-сайт, який містить повний текст (на випадок, коли файлу КОПІЄНГУ вже немає).

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


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

13

Це може залежати від ліцензії. GPL розрізняє preambleіlicense . У ньому чітко зазначено, що (дратівлива) преамбула повинна бути частиною коду :

Чи можу я опустити преамбулу GPL або інструкції щодо її використання у власних програмах, щоб заощадити місце?

Преамбула та інструкції є невід'ємними частинами GPL GNU і не можуть бути опущені. Насправді GPL захищено авторським правом, і його ліцензія дозволяє лише дословне копіювання всього GPL. (Ви можете використовувати юридичні умови для створення іншої ліцензії, але це не буде GNU GPL.) (1)

Джерело: 1) http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

Дивіться також http://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html

Безкоштовна електронна книга з ifrOSS пояснює і коментує GPL-німецькою мовою. Є ще одна для GPL 3

Для обґрунтованої відповіді вам слід звернутися за юридичною порадою, яка не доступна на sx. Якщо ви не можете знайти юриста для свого проекту з відкритим кодом, перегляньте юридичну мережу FSFE .


7
Преамбула та інструкції є частиною повної ліцензії, але нічого не говорить про те, що ви повинні містити повну ліцензію у кожному файлі. [...] attach the following notices to the program.- наступні повідомлення - лише невеликий розділ повної ліцензії. safest to attach them to the start of each source file- найбезпечніший, але не обов'язковий. each file should have at least the "copyright" line and a pointer to where the full notice is found. - єдина вимога - лінія авторського права з покажчиком на решту. Добре помістити повну ліцензію в один окремий файл.
токсалот

3
І я б стверджувати , що треба ! = Обов'язково .
токсалот

7

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

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

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


1
Ну, у цьому випадку просто вкажіть у кожному файлі, що, продовжуючи його, ви погоджуєтесь з ліцензією у файлі licence.txt. Але не копіюйте / вставляйте один і той же текст у кожен файл. Я іноді знаходжу файли з кодом, меншим за ліцензію.
Грак

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

3

IANAL,

Якщо припустити, що ви говорите про ліцензування, а не про ліцензійну угоду, ви можете поставити ліцензію назовні. Це майже завжди робиться з дійсно довгими ліцензіями, такими як GPL. Було б нерозумно вміщувати всю ліцензію GPL у кожен файл. Зазвичай у вас є лише повідомлення про те, де ви можете знайти фактичну ліцензію. Це цілком законно. Однак із дійсно короткими ліцензіями, такими як BSD / Apache / MIT / що завгодно, простіше просто включити ліцензію до кожного файлу, оскільки повідомлення про те, де знайти ліцензію, буде майже таким самим, як сама ліцензія.


2

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

Якщо ви не згодні з цим, і це ВАШ код, ви можете вибрати більш приємну ліцензію або створити свою власну.


1

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


Дякую. Це буде відкритим кодом.
Джоан Венге

Ви можете створити жорстко закодований рядок, який містить ліцензію, тому він з’явиться на двійковому, але це, мабуть, занадто багато :).
Ліран Ореві

1

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

Однак для авторських прав ви повинні мати повідомлення про авторські права на кожен фрагмент тексту.


Дякую, значить авторські права відрізняються?
Джоан Венге

INAL, але ліцензія - це договір між вами та користувачем / замовником. Авторське право - це твердження права власності на письмовий твір. Хтось може забрати фрагмент вашого коду і обгрунтовано стверджувати, що це не авторське право, оскільки повідомлення відсутнє. Не хвилюйтеся, хоча "Авторське право Джо Soap (Cleansoft Inc.)" - це все, що вам потрібно.
Джеймс Андерсон

10
Ви так помиляєтесь з цього приводу. Хоча взагалі добре додавати сповіщення про авторські права скрізь просто для того, щоб бути зрозумілими, але це не робить справедливою грою, щоб "припустити, що вона не захищена авторським правом", тому що ви знаєте, що ВСЕ ЩЕ захищено авторським правом. Коли хтось отримує вихідний код, він може знайти ліцензійну заяву, яка дозволяє йому користуватися ним, або він може з тієї чи іншої причини дізнатися, що він знаходиться у відкритому доступі. Якщо він цього не робить, він захищений авторським правом і його неможливо скопіювати. Авторські права - це автоматична річ, і це добре згадати, але це не означає, що ви її втратите ...
Джаспер

1

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

Звичайно, повна ліцензія (усі вони у випадку декількох ліцензій) завжди додається у вихідні файли та каталоги випусків.


3
як ви автоматизуєте дату останнього перегляду?
Дастін Гец
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.