Что является правильным способом для разветвления / повторного использования кода из проекта с открытым исходным кодом?

22

Допустим, я работаю над проектом с открытым исходным кодом и хочу повторно использовать тривиальную служебную функцию из другого проекта с открытым исходным кодом (например, функцию поиска / замены файлов). Законно ли копировать функцию и просто написать небольшое уведомление об авторском праве вверху файла? Стоит ли включать в лицензию их имя как правообладателей всего проекта?

Точно так же, скажем, я разворачиваю проект с открытым исходным кодом. Где и как мне указать, что авторское право является общим как для первоначального правообладателя, так и для меня?

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

PS: Меня больше всего волнует юридический аспект, но не стесняйтесь включать вашу этическую точку зрения.

Оливье Лалонд
источник
1
Какова лицензия рассматриваемого проекта, и проект, который вы выпускаете? Да, вы можете использовать код, но, пожалуйста, будьте более конкретны, чтобы мы могли лучше информировать вас о ваших требованиях в соответствии с используемой лицензией.
Тим Пост
1
@Tim Post: Это в основном теоретический вопрос, но если это поможет, давайте предположим, что оба проекта имеют лицензию GPL, так как она очень распространена.
Оливье Лалонд

Ответы:

25

Я пытаюсь сделать этот ответ как можно более «мета» применимым.

Использование фрагментов / битов из других проектов

Четко пометьте код с авторским авторским правом. Убедитесь, что выбранная вами лицензия полностью совместима с лицензией используемого вами кода. Вам потребуется разрешение автора для переноса кода в другую лицензию (если только они специально не позволяют вам сделать это, т. Е. «GPL 2 или любая более поздняя версия»)

Ваша программа должна иметь файл AUTHORS (или аналогичный), в котором вы перечисляете всех участников и вещи, которые вы использовали из других проектов.

Форкинг проекта

Для каждого модуля, который вы существенно измените, добавьте свое авторское право под оригинальным авторским. То же самое относится и к лицензированию: вы обязаны соблюдать условия лицензии, действовавшей на момент ее подписания. Если в проекте написано «Только GPL2», вы должны это учитывать, вы не можете перейти на GPL3 без их разрешения.

Это сильно варьируется в зависимости от имеющейся лицензии. QPL говорит, что вы можете распространять изменения только в формате патча, например, поэтому убедитесь, что вы понимаете условия, которые позволяют вам распространять измененные версии программного обеспечения.

Кроме того, всегда сохраняйте авторские права. Если вы добавляете свои авторские права к тому, что существует, убедитесь, что вы четко отметили именно то, на что вы претендуете.

Тим Пост
источник
Иногда вы можете добавить лицензии. Предположим, что вы хотите использовать функцию BSD в проекте под GPL: вы не можете удалить лицензию BSD, но она совместима с GPL, поэтому вы можете выпустить весь проект под лицензией GPL и отметить, что эта функция также находится под BSD. лицензия. Было бы вежливо выпустить любые изменения, которые вы вносите в лицензионный код BSD под BSD.
Дэвид Торнли
@ Дэвид - ОП хотел общий ответ (отсюда и мое стремление изучить лицензии). Вы совершенно правы. ОДНАКО, это «приятно» - лицензировать двойные лицензии на любые изменения, внесенные вами в код BSD, так что авторы оригинала могут использовать его, если захотят.
Тим Пост
1
В какой момент основной файл лицензии должен иметь ваше уведомление об авторских правах выше оригинальных авторов? Когда ваши SLOC превышают 200% первоначальных проектных SLOC? 300%? Если проект, который вы подписали, окажется одним из множества библиотек или модулей в вашем проекте?
варенье
@hobs imo, порядок уведомления об авторских правах не указывает на величину вклада, а скорее детализирует хронологически происхождение.
@TechnikEmpire Хронологический порядок имеет смысл, но для списка участников, а не уведомления об авторских правах? Я подумал, что уведомления об авторских правах могут быть лучше организованы в соответствии с разделами кода, к которым они применяются, и стоимостью / количеством этих разделов в пакете. Полезно иметь список людей, с которыми вам нужно связаться, в порядке приоритета, если вы хотите что-то изменить в лицензии. Поэтому, если вы получаете разрешение от первых нескольких, но не от последних, у вас будет меньше кода для воссоздания, если вы полны решимости внести изменения. Интересно, что делает Линус?
варенье