Организация KDE Free Qt Foundation была основана в 1998 г. с целью защиты Qt как свободного ПО. Между организацией и компанией Trolltech был заключен договор, позволяющий в случае прекращения разработки свободной версии Qt, выпустить Qt под лицензией типа BSD (или любой другой свободной). Договор обновлялся, по мере того, как права на Qt переходили к Nokia, а затем к Digia.
Подробности новой лицензионной политики Qt под катом.
Смена лицензии
Qt долгое время выпускалась под лицензией LGPLv2.1. В версии 5.4 добавилась лицензия LGPLv3 и теперь планируется переход на третью версию GPL и LGPL. Начиная с версии 5.7, Qt больше не будет доступна под лицензией LGPLv2.1. Тем не менее, основные модули будут доступны также под GPLv2 для сохранения совместимости с ПО, выпущенным под второй версией GPL.
Переход на третью версию GPL/LGPL дает следующие преимущества:
- Защита от патентных претензий со стороны поставщика ПО.
- Защита от тивоизации.
- Совместимость с лицензией Apache.
Стоит отметить, что разработчик ПО может применить тивоизацию, если использует коммерческую версию Qt, либо версию под GPLv2.
Изменения не затрагивают следующую версию Qt 5.6, которая должна выйти в феврале. Qt 5.6 будет выпуском с длительным сроком поддержки (3 года).
Новая лицензионная политика
Теперь разберемся, какие лицензии будут поддерживаться у разных компонентов Qt.
- Основные библиотеки (Qt Essentials), а также дополнения (Qt Add-ons), код которых сейчас открыт будут доступны под LGPLv3 и GPLv2. Qt WebEngine будет также доступна под LGPLv2.1 (из-за зависимости от Chromium).
- Новые дополнения (Qt Charts, Qt Data Visualization и т.п.), будут доступны под GPLv3.
- Инструменты разработки (Qt Tools, moc, Qt Creator и т.п.), будут доступны под GPLv3.
В итоге, все компоненты доступны в коммерческой лицензии и в GPLv3, большинство компонентов также доступны под LGPLv3 и GPLv2. Список модулей для версии 5.5 можно посмотреть здесь.
Для иллюстрации, приведу наглядную схему (взял здесь):
Примечание: видимо, насчет Serial Port ошибка — должно быть LGPLv3.
Новые открытые модули
В составе открытой версии Qt 5.7 появятся следующие модули:
- Qt Charts
- Qt Data Visualization
- Qt Virtual Keyboard
- QML Profiler
- Clang static analyzer
- Qt Test Integration
- Qt Quick 2D renderer
Для Qt 5.6 эти модули поставляться не будут, но можно собрать самому из исходных кодов. Qt Quick Compiler планируется интегрировать в Qt QML в версии 5.8.
Обновление соглашения с KDE Free Qt Foundation
Изначально соглашение касалось только платформы X11 (плюс, несколько лет назад была добавлена Android). Новое соглашение расширяет область действия на Microsoft Windows, Microsoft Windows Phone, Apple MacOS и Apple iOS. Организация также может расширить действие соглашения на платформу-преемника (например, Wayland для X11).
Итоги
В соответствии с новой лицензионной политикой, чтобы использовать все модули открытой версии Qt, нужно использовать версию под GPLv3, т.е. ПО нужно выпускать под лицензией, совместимой с GPLv3. Для проприетарного ПО нужно использовать либо коммерческую версию либо не использовать новые модули. Эти изменения не затрагивают версию 5.6, которая будет поддерживаться 3 года, как и коммерческую версию.
Небольшое дополнение о коммерческой версии: планируется выпустить более дешевую версию Qt for Start-Ups. Подробностей пока нет, обещают выпустить в течении первого квартала 2016 г.
Дополнительная информация
Комментарии (19)
Harrix
23.01.2016 06:19+4Правильно ли я понял, что Qt Charts появится в версии Qt Open Source?
QtRoS
23.01.2016 13:17Да ладно Chart, а вот Qt Quick Compiler — действительно круто)
maksqwe
23.01.2016 15:19А сейчас Qt Quick Compiler где-нибудь можно найти? Что-то не вижу его в официальных репозиториях.
BlackRaven86
23.01.2016 16:11Его обещают интегрировать в Qt QML (т.е. в qt/qtdeclarative) в версии 5.8.
valexey
23.01.2016 14:00А вот скажите, какой смысл в коммерческой лицензии, если допустим в моей проприентарщине используются только опенсорсные компоненты Qt под лицензией LGPLv3 / LGPLv2.1? Ведь LGPL это не GPL, и не заставляет саму программу лицензировать под GPL/LGPL (если статические не слинковался с либой конечно).
BlackRaven86
23.01.2016 16:18Поддержка, например. При разработке под iOS желательна коммерческая версия. Ну и еще, поспособствовать развитию Qt )
valexey
23.01.2016 17:19Поддержка — понятно. А почему именно под iOS она желательна (ведь не обязательна же)?
Ну, до определенного размера собственного проекта, способствовать развитию Qt проще контрибьютом кода в Qt-компоненты. Уж больно ценник кусается у коммерческой версии Qt.
Да и в случае большого проекта иногда тоже так выгодней (скажем Qt Multimedia не умеет писать в файл в винде, а если твой мегапроприентарный и мегакоммерческий софт на Qt использует Qt Multimedia и нужно писать в файл видео в виндах, то имеет наверно смысл добавить такую поддержку и законтрибьютить в Qt вместо того, чтобы отдельно велосипед лепить в обход Qt именно для винды).BlackRaven86
23.01.2016 17:43Обещают Qt for Start-Ups, посмотрим, сколько стоить будет.
Под iOS на данный момент надо статически линковать. К тому же, AppStore не совместим со свободным ПО (с копилефтными лицензиями), так что тут тоже могут быть проблемы. А может и не быть ) Но момент спорный и коммерческая лицензия позволяет его избежать.valexey
23.01.2016 17:48А, ну да. Под iOS придется слинковать статически. Это проблема (если предполагается конечно в AppStore выкладывать, а это нужно при разработке под iOS далеко не всегда. Впрочем, когда софт используется только внутри конторы, то там и GPL сойдет — исходники в этом случае всё равно раскрывать не придется, GPL позволяет).
Да, Qt for Startups — интересно. Будем посмотреть.
stepik777
24.01.2016 12:39+1Статически с LGPL либой тоже можно линковаться, только нужно свои объектные файлы предоставить, чтобы их можно было перелинковать с другой версией либы.
monah_tuk
26.01.2016 05:03Если я не ошибаюсь, то QtC был под LGPL, теперь под GPL. Это, потенциально, ограничивает интерес к нему, как к платформе для построения своих решений и написанию закрытых плагинов. Или я не прав?
Хотя вопрос чисто теоретический: я, пока, закрытых плагинов не видел. Как и вообще большого числа оных, вне дерева QtC.BlackRaven86
27.01.2016 18:37Если плагин не является производной работой, то нет. И он тоже доступен под коммерческой версией.
monah_tuk
28.01.2016 04:19Просто для написания плагина, ты используешь, по сути, библиотеку (части QtC) под лицензией GPL. Если с ней линковаться можно (динамически) не открывая свой код, то я перестал понимать разницу между GPL и LGPL.
BlackRaven86
28.01.2016 05:40Если плагин не использует функции из QtC (и не связывается с его библиотеками) и вообще выполняется через fork() и exec() (т.е. в отдельном процессе), то можно. А если подгружается в адресное пространство процесса — это уже может считаться одной программой.
Кстати, в лицензии дополнительно может быть указано какое-нибудь «linking exception» на этот счет.monah_tuk
28.01.2016 06:45В том и дело, что плагины работают в адресном пространстве QtC. Это DLL/SO, потому как нужно тесно общаться с разными компонентами QtC и другими плагинами, в частности. Можно, конечно, извратиться, сделать открытую прокси, которая будет с основным кодом по RPC общаться, но… Я думаю, что раньше эту идею просто пошлют, как и QtC :)
monah_tuk
28.01.2016 06:47Кстати, последний вопрос на их блоге как раз на эту тему. Насколько я вижу, официального ответа нет, есть только предположение, что такое будет доступно только под коммерческой лицензией.
BlackRaven86
29.01.2016 03:50+2Ответ есть :) Добавили в исключение плагины.
Exception 2:
As a special exception, you have permission to combine this application
with Plugins licensed under the terms of your choice, to produce an
executable, and to copy and distribute the resulting executable under
the terms of your choice. However, the executable must be accompanied
by a prominent notice offering all users of the executable the entire
source code to this application, excluding the source code of the
independent modules, but including any changes you have made to this
application, under the terms of this license.
fshp