Разрешения, условия и ограничения с первого взгляда
Условия
- Раскрытие исходного кодаПри распространении нужно предоставлять исходный код.
- Уведомление об авторском праве и лицензииПри распространении нужно прилагать копию лицензии и уведомление об авторском праве.
- Та же лицензия (на уровне файла)Изменения в существующих файлах нужно распространять под той же лицензией.
Ограничения
- Ограничение ответственностиПрямо указано, что ответственность за ущерб не несётся.
- Использование товарных знаковПрямо указано, что права на товарные знаки не предоставляются.
- Без гарантийПрямо указано, что никакие гарантии не даются.
Классификация разрешений, условий и ограничений: данные choosealicense.com (GitHub, лицензия MIT).
Что это за лицензия
MPL 2.0 опубликована фондом Mozilla в январе 2012 года. Её используют продукты Mozilla, такие как Firefox и Thunderbird; особенность — копилефт, действующий на уровне файла. Файлы под MPL (и их изменения) нужно раскрывать под MPL, но новые отдельные файлы могут быть под другой лицензией, а «Larger Work» (раздел 3.3), объединяющее код MPL с другим кодом, можно целиком распространять на своих условиях. Есть явная патентная лицензия и положение о её прекращении при патентном иске.
Что соблюдать при распространении
- При распространении исполняемых файлов сообщите, как получить исходный код файлов MPL (раздел 3.2).
- Не удаляйте и не изменяйте уведомления о лицензии в файлах MPL.
- Если вы изменили файл MPL, продолжайте распространять его под MPL-2.0.
Secondary License и совместимость с GPL
Раздел 1.12 MPL-2.0 определяет GPL-2.0, LGPL-2.1, AGPL-3.0 и их более поздние версии как «Secondary License». Согласно разделу 3.3, Larger Work, объединяющее код MPL и код под лицензией GNU, можно распространять под лицензией GNU. Однако если первоначальный автор добавил в файл уведомление Exhibit B («Incompatible With Secondary Licenses»), эта совместимость не применяется. В MPL-1.1 такого механизма не было, и она была несовместима с GPL; в 2.0 это исправлено.
Частые заблуждения
- «Используешь библиотеку MPL — и приложение становится MPL» — Нет. Новые файлы, которые вы написали сами, могут быть не под MPL.
- «MPL нельзя смешивать с GPL» — Начиная с 2.0 можно, если нет Exhibit B.
- «Если скопировать файл MPL в свой файл, мой файл останется свободным» — Перенесённый код MPL остаётся под MPL. Граница файла — это граница обязанностей, поэтому безопаснее не смешивать код, а держать его в отдельных файлах.
Как применить
Поместите текст в LICENSE; рекомендуется добавлять в начало каждого исходного файла уведомление Exhibit A («This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0…»). Если поместить его в файл сложно, можно разместить его там, где получатель будет искать, например в файле LICENSE соответствующего каталога. Идентификатор SPDX — MPL-2.0 (при наличии Exhibit B — MPL-2.0-no-copyleft-exception).
Когда подходит
Хороший компромисс, когда хочется получать обратно улучшения самой библиотеки или движка, но не ограничивать лицензию использующих их продуктов. Условия проще, чем у LGPL, и нет проблемы статической компоновки. Когда в 2023 году HashiCorp перевела Terraform с MPL-2.0 на BUSL, сообщество создало форк версии под MPL-2.0 — OpenTofu.
Можно ли включить код под MPL-2.0 в другие проекты?
Общая оценка для случая, когда код под этой лицензией берут и распространяют вместе с проектом под указанной ниже лицензией. Другие сочетания — в проверке совместимости →
| Целевой проект | Вывод | Примечание |
|---|---|---|
| Проприетарное (коммерческое) ПО | Можно с условиями | Файлы MPL остаются под MPL-2.0 пофайлово, и их исходный код нужно предоставлять. Остальной код может быть под другой лицензией. |
| MIT | Можно с условиями | Файлы MPL остаются под MPL-2.0 пофайлово, и их исходный код нужно предоставлять. Остальной код может быть под другой лицензией. |
| Apache-2.0 | Можно с условиями | Файлы MPL остаются под MPL-2.0 пофайлово, и их исходный код нужно предоставлять. Остальной код может быть под другой лицензией. |
| LGPL-2.1 | Можно с условиями | MPL-2.0 признаёт GPL-2.0 и выше, LGPL-2.1 и выше и AGPL-3.0 и выше «Secondary License», поэтому объединённое произведение можно распространять под лицензией GNU. Это невозможно, если первоначальный автор добавил пометку «Incompatible With Secondary Licenses» (Exhibit B). |
| LGPL-3.0 | Можно с условиями | MPL-2.0 признаёт GPL-2.0 и выше, LGPL-2.1 и выше и AGPL-3.0 и выше «Secondary License», поэтому объединённое произведение можно распространять под лицензией GNU. Это невозможно, если первоначальный автор добавил пометку «Incompatible With Secondary Licenses» (Exhibit B). |
| GPL-2.0 | Можно с условиями | MPL-2.0 признаёт GPL-2.0 и выше, LGPL-2.1 и выше и AGPL-3.0 и выше «Secondary License», поэтому объединённое произведение можно распространять под лицензией GNU. Это невозможно, если первоначальный автор добавил пометку «Incompatible With Secondary Licenses» (Exhibit B). |
| GPL-3.0 | Можно с условиями | MPL-2.0 признаёт GPL-2.0 и выше, LGPL-2.1 и выше и AGPL-3.0 и выше «Secondary License», поэтому объединённое произведение можно распространять под лицензией GNU. Это невозможно, если первоначальный автор добавил пометку «Incompatible With Secondary Licenses» (Exhibit B). |
| AGPL-3.0 | Можно с условиями | MPL-2.0 признаёт GPL-2.0 и выше, LGPL-2.1 и выше и AGPL-3.0 и выше «Secondary License», поэтому объединённое произведение можно распространять под лицензией GNU. Это невозможно, если первоначальный автор добавил пометку «Incompatible With Secondary Licenses» (Exhibit B). |
Материалы сайта носят общий информационный характер и не являются юридической консультацией. Решения о распространении, договорах и спорах принимайте после консультации с юристом или другим специалистом.