Как отметить, что библиотека lgpl изменена [закрыта]
Вопрос
Я использую библиотеку LGPL в своем коде.Для моих нужд мне нужно изменить код в библиотеке.
Как мне пометить файл jar тем, что он содержит измененный код?Какой-то текстовый файл в jar?В таком случае, что мне записать в текстовый файл?
Я включу в лицензионное соглашение, что мы распространяем модифицированную версию jar, но мой вопрос касается маркировки самого jar.
Решение
Короткий ответ:Избегайте этой проблемы
Если вы исправили ошибку или добавили функцию, почему бы не отправить ее обратно оригинальным авторам в виде патча?Если они примут это, следующая версия библиотеки будет включать ваши исправления, и вам не нужно будет беспокоиться об отправке измененной библиотеки!Совместное использование ваших изменений / улучшений в библиотеке является сутью лицензии, временное использование слегка измененной версии библиотеки, пока вы ожидаете представленных вами улучшений, является довольно распространенной практикой (см. Материал о филиалах поставщиков).Становление частью сообщества разработчиков означает, что вы больше не отправляете "модифицированную" версию библиотеки, а активно вносите свои улучшения в оригинальную библиотеку для общего блага.
Длинный ответ:LGPL Версия 3.0
Начиная с версии 3.0 Сам LGPL:
- Транспортировка Модифицированных Версий.
Если вы изменяете копию Библиотеки, и в ваших модификациях средство ссылается на функцию или данные, которые должны быть предоставлены приложением, использующим средство (кроме как в качестве аргумента, передаваемого при вызове средства), тогда вы можете передать копию измененной версии:
- a) в соответствии с настоящей Лицензией, при условии, что вы приложите добросовестные усилия для обеспечения того, чтобы в случае, если Приложение не предоставляет функцию или данные, средство продолжало функционировать и выполняло любую часть своего назначения, оставаясь значимым, или
- b) под лицензией GNU GPL, без каких-либо дополнительных разрешений этой Лицензии, применимых к этой копии.
До тех пор, пока вы соблюдаете остальной текст лицензии, вам не обязательно "помечать" сам jar текстовым файлом или иным образом.По соображениям компиляции вы могли бы последовать предложению extraneon и использовать немного другое имя jar.Вы могли бы использовать филиал поставщика или что-то еще, чтобы сохранить различия между вашими модификациями и исходной библиотекой.Вот ты где 'раздвоение"проект, создающий вашу собственную производную работу - суть здесь в том, чтобы поделиться своими изменениями и усовершенствованиями исходного кода со всем миром.
Длинный ответ:LGPL Версия 2.1
Начиная с версии 2.1 Сам LGPL:
Вы можете изменять свою копию или копии Библиотеки или любую ее часть, создавая таким образом произведение на основе Библиотеки, а также копировать и распространять такие изменения или работу в соответствии с условиями Раздела 1 выше, при условии, что вы также выполняете все эти условия:
- а) Измененная работа сама по себе должна представлять собой библиотеку программного обеспечения.
- б) Вы должны сделать так, чтобы измененные файлы имели заметные уведомления о том, что вы изменили файлы и дату любого изменения.
- c) Вы должны обеспечить бесплатное лицензирование всей работы всем третьим лицам в соответствии с условиями настоящей Лицензии.
- d) Если средство в измененной библиотеке ссылается на функцию или таблицу данных, которые должны быть предоставлены прикладной программой, которая использует средство, кроме как в качестве аргумента, передаваемого при вызове средства, то вы должны приложить добросовестные усилия для обеспечения того, чтобы в случае, если приложение не предоставляет такую функцию или таблицу, средство все еще работало и выполняло ту часть своего назначения, которая остается значимой.(Например, функция в библиотеке для вычисления квадратных корней имеет назначение, которое полностью четко определено независимо от приложения.Следовательно, подраздел 2d требует, чтобы любая предоставляемая приложением функция или таблица, используемая этой функцией, должны быть необязательными:если приложение не предоставляет его, функция квадратного корня все равно должна вычислять квадратные корни.)
По сути, вы должны сказать:Привет, вот библиотека 'foo', модифицированная версия библиотеки 'bar', здесь вы можете использовать мою версию библиотеки 'foo' - она тоже доступна под LGPL2.1.Заметные уведомления также обычно отображаются в начале ваших измененных исходных файлов в блоке комментариев к лицензии LGPL.Опять вы разветвляете библиотеку.
Другие советы
Дайте банке другое название.Классы внутри будут иметь одинаковые имена, поэтому у кода, зависящего от него, не возникнет проблем с его поиском (если новый jar находится в classpath).
Конечно, всегда разумно документировать свои изменения, добавляя некоторую информацию в файл манифеста и, возможно, также файл журнала изменений в самом jar.