Как отметить, что библиотека lgpl изменена [закрыта]

StackOverflow https://stackoverflow.com/questions/2491352

  •  21-09-2019
  •  | 
  •  

Вопрос

Я использую библиотеку LGPL в своем коде.Для моих нужд мне нужно изменить код в библиотеке.

Как мне пометить файл jar тем, что он содержит измененный код?Какой-то текстовый файл в jar?В таком случае, что мне записать в текстовый файл?

Я включу в лицензионное соглашение, что мы распространяем модифицированную версию jar, но мой вопрос касается маркировки самого jar.

Это было полезно?

Решение

Короткий ответ:Избегайте этой проблемы

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

Длинный ответ:LGPL Версия 3.0

Начиная с версии 3.0 Сам LGPL:

  1. Транспортировка Модифицированных Версий.

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

  • a) в соответствии с настоящей Лицензией, при условии, что вы приложите добросовестные усилия для обеспечения того, чтобы в случае, если Приложение не предоставляет функцию или данные, средство продолжало функционировать и выполняло любую часть своего назначения, оставаясь значимым, или
  • b) под лицензией GNU GPL, без каких-либо дополнительных разрешений этой Лицензии, применимых к этой копии.

До тех пор, пока вы соблюдаете остальной текст лицензии, вам не обязательно "помечать" сам jar текстовым файлом или иным образом.По соображениям компиляции вы могли бы последовать предложению extraneon и использовать немного другое имя jar.Вы могли бы использовать филиал поставщика или что-то еще, чтобы сохранить различия между вашими модификациями и исходной библиотекой.Вот ты где 'раздвоение"проект, создающий вашу собственную производную работу - суть здесь в том, чтобы поделиться своими изменениями и усовершенствованиями исходного кода со всем миром.

Длинный ответ:LGPL Версия 2.1

Начиная с версии 2.1 Сам LGPL:

  1. Вы можете изменять свою копию или копии Библиотеки или любую ее часть, создавая таким образом произведение на основе Библиотеки, а также копировать и распространять такие изменения или работу в соответствии с условиями Раздела 1 выше, при условии, что вы также выполняете все эти условия:

    • а) Измененная работа сама по себе должна представлять собой библиотеку программного обеспечения.
    • б) Вы должны сделать так, чтобы измененные файлы имели заметные уведомления о том, что вы изменили файлы и дату любого изменения.
    • c) Вы должны обеспечить бесплатное лицензирование всей работы всем третьим лицам в соответствии с условиями настоящей Лицензии.
    • d) Если средство в измененной библиотеке ссылается на функцию или таблицу данных, которые должны быть предоставлены прикладной программой, которая использует средство, кроме как в качестве аргумента, передаваемого при вызове средства, то вы должны приложить добросовестные усилия для обеспечения того, чтобы в случае, если приложение не предоставляет такую функцию или таблицу, средство все еще работало и выполняло ту часть своего назначения, которая остается значимой.(Например, функция в библиотеке для вычисления квадратных корней имеет назначение, которое полностью четко определено независимо от приложения.Следовательно, подраздел 2d требует, чтобы любая предоставляемая приложением функция или таблица, используемая этой функцией, должны быть необязательными:если приложение не предоставляет его, функция квадратного корня все равно должна вычислять квадратные корни.)

По сути, вы должны сказать:Привет, вот библиотека 'foo', модифицированная версия библиотеки 'bar', здесь вы можете использовать мою версию библиотеки 'foo' - она тоже доступна под LGPL2.1.Заметные уведомления также обычно отображаются в начале ваших измененных исходных файлов в блоке комментариев к лицензии LGPL.Опять вы разветвляете библиотеку.

Другие советы

Дайте банке другое название.Классы внутри будут иметь одинаковые имена, поэтому у кода, зависящего от него, не возникнет проблем с его поиском (если новый jar находится в classpath).

Конечно, всегда разумно документировать свои изменения, добавляя некоторую информацию в файл манифеста и, возможно, также файл журнала изменений в самом jar.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top