Ответ DougM и AER делает справедливое замечание. MPLv2 и LGPLv3 со статическим исключением одинаковы в отношении событий, которые могут привести к срабатыванию авторского лева. Тем не менее, я думаю, что мы упускаем еще одно очень важное различие между LGPL и MPL. Когда авторское лево срабатывает, авторское право применяется к:
- для MPL: точно такие же файлы вашей исходной библиотеки
- для LGPL: «работа, основанная на библиотеке», а не «работа, использующая библиотеку». Таким образом, LGPL потенциально может расширить свой авторский лев для новых файлов.
Крайний случай: использование MPL позволяет пользователям не делиться своими улучшениями
MPL - это лицензия на уровне файла с авторским левом. Это означает, что если кто-то встраивает его в более крупный проект (статически или динамически) и вносит изменения в ваш файл, он должен только выпустить изменение, внесенное в этот конкретный файл.
Если вы беспокоитесь о сохранении целостности своей кодовой базы открытой, существуют крайние случаи, когда этот эффект авторского лева MPL может быть недостаточным.
Например, кто-то может взять один из основных файлов вашего проекта, добавить «import my_private_new_file» и изменить, например, основной метод, добавив «my_private_new_file.newAwesomeFeature.run ()» .
И таким образом он мог добавлять новые функции в ваш проект, выпуская только измененный основной файл и сохраняя фактическую логику новой функции с закрытым исходным кодом в «my_private_new_file» .
Возвращение основного файла сообществу просто дает вам информацию, что «эй, вы добавили новую функцию», но это не позволяет вам включить эту новую функцию в открытую ... Это может раздражать, если новая функция тесно связан с проблемой, которую пытается решить ваша библиотека.
Очевидно, что это крайний случай, и вряд ли кто-то захочет это сделать, но это риск, о котором вы должны знать при использовании MPLv2.
LGPL написано, чтобы запретить такое поведение. Видеть:
Я цитирую оригинальную лицензию LGPL:
Обратите особое внимание на разницу между «работой на основе библиотеки» и «работой, которая использует библиотеку». Первый содержит код, полученный из библиотеки, тогда как последний должен быть объединен с библиотекой для запуска.
Копирайт применяется только к «работе на основе библиотеки». Теперь, что такое «работа на основе библиотеки» на практике? Это оставляет пространство для интерпретации. Что не только приятно, но и означает, что соблюдение вашей лицензии становится более сложным и, следовательно, пугающим. Некоторые люди могут просто не использовать вашу библиотеку.
В этом смысле LGPL является более строгим, чем MPL, но также более защищает целостность проекта.
MPL облегчает пользователям из частного мира исправление вашей библиотеки и ее использование, при этом все еще приходится делиться исправлением
Преимущество MPL состоит в том, что если пользователь обнаружит ошибку в вашей библиотеке, он может исправить ее непосредственно в файле, не отдавая весь свой код, а только предоставив исправление. Практически говоря, распространяя свою работу клиенту, он может просто предоставить ссылку на развилку вашего проекта, содержащую исправление, и он хорош.
С помощью LGPL все становится сложнее. Если кто-то разветвляет ваш проект, исправляет ошибку и статически встраивает ее в свое проприетарное программное обеспечение, он должен распространять среди своих пользователей «работу на основе библиотеки» в рамках LGPL. Что является довольно неясным понятием, особенно когда библиотека статически встроена ... В этом отношении, я думаю, что это была первоначальная причина, почему нет такой вещи, как "статическое" исключение в оригинальном LGPL. Это делает идентификацию «работы на основе библиотеки» тривиальной: это динамическая библиотека, которую вы вызываете в своем проприетарном программном обеспечении.
В результате, MPL делает интересным для проприетарных поставщиков использование и отправку исправлений в вашу библиотеку, чем LGPL.
В то же время в большинстве случаев у проприетарных поставщиков нет ни ресурсов, ни времени, чтобы погрузиться в вашу сложную библиотеку, и, скорее всего, они сами не исправят это. Они скорее откроют проблему в вашем репозитории GitHub, либо отправят электронное письмо в список рассылки и будут ждать вашего исправления.
В этом отношении LGPL усиливает такое поведение. Но действительно ли это необходимо?
Вывод
Выбор между LGPL и MPL является сложным вопросом и, как обычно, с лицензией на программное обеспечение, зависит от вашей цели. Обе лицензии очень похожи, но в то же время чрезвычайно разные. Они были разработаны для самых разных целей и философии.
LGPL был создан Фондом свободного программного обеспечения, чтобы обеспечить широкое использование библиотек свободного программного обеспечения в проприетарном мире, но с учетом идеи продвижения свободного программного обеспечения и борьбы с проприетарным программным обеспечением. Это все часть стратегии по отношению к их идеологии. См .:
https://www.gnu.org/licenses/why-not-lgpl.html.
MPL - это практическая лицензия, разработанная Mozilla для обеспечения некоторого общего доступа к исходной библиотеке, при этом поощряя людей создавать собственные проприетарные программы и надстройки (включая саму Mozilla), что является практикой, которую FSF разрешает через LGPL но все же считает вредным.
По сути, MPLv2 рассматривается многими как разрешающая лицензия, в то время как LGPLv3, в том числе со статическим исключением, редко называют так.
РЕДАКТИРОВАТЬ
Я забыл упомянуть кое-что важное. LGPLv3 (со статическим исключением или без него) запрещает тивоизацию . Вы можете подумать, что это «деталь», но на самом деле это не так, в зависимости от вашей цели. Вы заботитесь о пользователях Freedom? Тогда это не деталь. Вас волнует, что ваша библиотека может быть использована на устройстве Apple? VLC больше заботится об использовании, поэтому они решили использовать LGPLv2, который не содержит таких ограничений. Точно так же это одна из причин, почему Linux продолжает использовать GPLv2 . MPLv2 также не имеет никаких ограничений для тивиоризации, очевидно, поскольку это лицензия, созданная с учетом более «практической» философии Open Source, а не идеологии FSF.
Могут быть и другие «мелкие» вещи, которые я пропустил.