Руководства · 06

GPL «only» и «or later»

Что означает фраза GPL «or any later version», почему ядро Linux держится за GPL-2.0-only, почему GPL-2.0-only и GPL-3.0 несовместимы и по каким критериям выбирать.

Последняя проверка: 2026-09-23

Та самая фраза

В рекомендуемом уведомлении лицензий GNU есть следующая фраза.

either version 3 of the License, or (at your option) any later version.

Если она есть, получатель может выбрать и соблюдать условия указанной версии или любой версии, которую FSF опубликует позже. Это «or later» (SPDX GPL-3.0-or-later). Если убрать часть «or later» и указать только конкретную версию, получится «only» (GPL-3.0-only).

Эту конструкцию задают раздел 14 GPL-3.0 и раздел 9 GPL-2.0. В частности, раздел 9 GPL-2.0 устанавливает, что для программы, где номер версии вообще не указан, можно выбрать любую версию, опубликованную FSF. Поэтому если положить только файл LICENSE и не указать условие о версии, лицензию могут истолковать не так, как вы задумывали.

Зачем нужен «or later»

FSF рекомендует «or later». Причина — будущая совместимость. Когда из-за изменений в праве и технологиях выходит новая GPL, код «or later» естественным образом объединяется с новой версией. На практике код GPL-2.0-or-later можно было без изменений включать в проекты GPL-3.0, а код GPL-2.0-only — нельзя.

Раздел 14 GPL-3.0 идёт ещё дальше и позволяет назначить «доверенное лицо» (proxy): если назначенный правообладателем человек публично решит принять более позднюю версию, это решение имеет силу.

Зачем выбирают «only»

«Or later» — это также заранее данное согласие на ещё не написанную лицензию. Если FSF позже выпустит версию с условиями, расходящимися с вашими намерениями, получатель сможет выбрать её для использования вашего кода.

Самый известный пример — ядро Linux. Ядро распространяется под GPL-2.0-only. Линус Торвальдс публично выступал против положения GPL-3.0 о сведениях для установки (так называемой защиты от тивоизации), а в ядре смешаны авторские права тысяч участников, так что сменить лицензию практически невозможно.

Влияние на совместимость

Матрицу совместимости из FAQ по лицензиям GNU можно кратко свести к следующему.

Заимствуемый код → мой проектGPL-2.0-onlyGPL-2.0-or-laterGPL-3.0
GPL-2.0-onlyМожноМожно (объединение — 2.0-only)Нельзя
GPL-2.0-or-laterМожноМожноМожно
GPL-3.0НельзяМожно (объединение — 3.0)Можно
LGPL-3.0НельзяМожно (объединение — 3.0)Можно

Главное: GPL-2.0-only и GPL-3.0 не могут принять друг друга. Обе требуют «не налагать дополнительных ограничений», а дополнительные условия другой стороны (в 3.0 — положения о патентах, сведениях для установки и т. д.) с точки зрения каждой являются дополнительными ограничениями. Другие сочетания можно проверить в проверке совместимости.

Критерии выбора

Как указывать

  1. В LICENSE (или COPYING) помещают текст соответствующей версии без изменений. Сам текст лицензии не различает only и or-later.
  2. Условие о версии указывают в уведомлении каждого файла и в идентификаторе SPDX. Если на вкладке генератора «Заголовок файла» выбрать «only» или «or-later», будут созданы и официальное уведомление GNU, и строка SPDX.
  3. Отметьте это одной строкой и в README (например, «Licensed under GPL-3.0-or-later»).
Эта статья содержит общую информацию и не является юридической консультацией. Важные решения обсуждайте со специалистами.

Источники