На прошлой неделе компания Qt Company (подразделение Digia) обновила текст соглашения с организацией KDE Free Qt Foundation и объявила о новой политике лицензирования Qt.

Организация 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)


  1. fshp
    23.01.2016 02:20
    +2

    Clang static analyzer
    Ура, товарищи!


  1. Harrix
    23.01.2016 06:19
    +4

    Правильно ли я понял, что Qt Charts появится в версии Qt Open Source?


    1. Vanger
      23.01.2016 11:45
      +2

      да


    1. QtRoS
      23.01.2016 13:17

      Да ладно Chart, а вот Qt Quick Compiler — действительно круто)


      1. maksqwe
        23.01.2016 15:19

        А сейчас Qt Quick Compiler где-нибудь можно найти? Что-то не вижу его в официальных репозиториях.


        1. BlackRaven86
          23.01.2016 16:11

          Его обещают интегрировать в Qt QML (т.е. в qt/qtdeclarative) в версии 5.8.


  1. valexey
    23.01.2016 14:00

    А вот скажите, какой смысл в коммерческой лицензии, если допустим в моей проприентарщине используются только опенсорсные компоненты Qt под лицензией LGPLv3 / LGPLv2.1? Ведь LGPL это не GPL, и не заставляет саму программу лицензировать под GPL/LGPL (если статические не слинковался с либой конечно).


    1. BlackRaven86
      23.01.2016 16:18

      Поддержка, например. При разработке под iOS желательна коммерческая версия. Ну и еще, поспособствовать развитию Qt )


      1. valexey
        23.01.2016 17:19

        Поддержка — понятно. А почему именно под iOS она желательна (ведь не обязательна же)?

        Ну, до определенного размера собственного проекта, способствовать развитию Qt проще контрибьютом кода в Qt-компоненты. Уж больно ценник кусается у коммерческой версии Qt.

        Да и в случае большого проекта иногда тоже так выгодней (скажем Qt Multimedia не умеет писать в файл в винде, а если твой мегапроприентарный и мегакоммерческий софт на Qt использует Qt Multimedia и нужно писать в файл видео в виндах, то имеет наверно смысл добавить такую поддержку и законтрибьютить в Qt вместо того, чтобы отдельно велосипед лепить в обход Qt именно для винды).


        1. BlackRaven86
          23.01.2016 17:43

          Обещают Qt for Start-Ups, посмотрим, сколько стоить будет.

          Под iOS на данный момент надо статически линковать. К тому же, AppStore не совместим со свободным ПО (с копилефтными лицензиями), так что тут тоже могут быть проблемы. А может и не быть ) Но момент спорный и коммерческая лицензия позволяет его избежать.


          1. valexey
            23.01.2016 17:48

            А, ну да. Под iOS придется слинковать статически. Это проблема (если предполагается конечно в AppStore выкладывать, а это нужно при разработке под iOS далеко не всегда. Впрочем, когда софт используется только внутри конторы, то там и GPL сойдет — исходники в этом случае всё равно раскрывать не придется, GPL позволяет).

            Да, Qt for Startups — интересно. Будем посмотреть.


    1. stepik777
      24.01.2016 12:39
      +1

      Статически с LGPL либой тоже можно линковаться, только нужно свои объектные файлы предоставить, чтобы их можно было перелинковать с другой версией либы.


  1. monah_tuk
    26.01.2016 05:03

    Если я не ошибаюсь, то QtC был под LGPL, теперь под GPL. Это, потенциально, ограничивает интерес к нему, как к платформе для построения своих решений и написанию закрытых плагинов. Или я не прав?

    Хотя вопрос чисто теоретический: я, пока, закрытых плагинов не видел. Как и вообще большого числа оных, вне дерева QtC.


    1. BlackRaven86
      27.01.2016 18:37

      Если плагин не является производной работой, то нет. И он тоже доступен под коммерческой версией.


      1. monah_tuk
        28.01.2016 04:19

        Просто для написания плагина, ты используешь, по сути, библиотеку (части QtC) под лицензией GPL. Если с ней линковаться можно (динамически) не открывая свой код, то я перестал понимать разницу между GPL и LGPL.


        1. BlackRaven86
          28.01.2016 05:40

          Если плагин не использует функции из QtC (и не связывается с его библиотеками) и вообще выполняется через fork() и exec() (т.е. в отдельном процессе), то можно. А если подгружается в адресное пространство процесса — это уже может считаться одной программой.
          Кстати, в лицензии дополнительно может быть указано какое-нибудь «linking exception» на этот счет.


          1. monah_tuk
            28.01.2016 06:45

            В том и дело, что плагины работают в адресном пространстве QtC. Это DLL/SO, потому как нужно тесно общаться с разными компонентами QtC и другими плагинами, в частности. Можно, конечно, извратиться, сделать открытую прокси, которая будет с основным кодом по RPC общаться, но… Я думаю, что раньше эту идею просто пошлют, как и QtC :)


          1. monah_tuk
            28.01.2016 06:47

            Кстати, последний вопрос на их блоге как раз на эту тему. Насколько я вижу, официального ответа нет, есть только предположение, что такое будет доступно только под коммерческой лицензией.


            1. 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.