17
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

QtAdvent Calendar 2019

Day 25

KDE Free Qt Foundationについて

Last updated at Posted at 2019-12-25

はじめに

メリークリスマスこんにちは。今年のMacBook Proに搭載されたESCキーとイブの楽しい夜を過ごして少し興奮気味のhermit4です。ついに、Qtアドベントカレンダー2019も最終日となりました。

これまで使っていた2016年版MacBook Proはお値段が高くでApple Careを見送ったところ、ディスプレイに青い斑が発生して1年数ヶ月で修理代8万円。その後1年も立たずに再発してアップルさんに駆け込んだら、修理後の保証期間は短いそうで、再度8万円かかりますと言われて修理を諦めていてました。

今年発表されたMacBook Proは希望の構成をポチポチした結果が厳しいお値段だったのですが、今年一年激務だったり、逆流性食道炎で辛かったり、交通事故に遭ったり、ぼっちだったりする悲しい自分へのクリスマスプレゼントということで、大枚はたいて新調しました。

まぁ、Qt関連だと、Windows, Linux, macOSの3つが動かせないと厳しい状況なので、腐っていてもリンゴから離れられないのが辛い所ですね。このお値段だと、資産管理とか面倒でしょうがないのですが、新しいPCの環境を整えていくのはやっぱりわくわくしますね。

本日は、多少幸せな気持ちですので、一応毒を吐かないように注意しつつも少しきわどい話題です。技術というよりはライセンス的なお話なので、そういうのはパスという方は読むのを止めて、楽しいクリスマスの街にでも繰り出しましょう。

今回の題材について

本日は、KDE Free Qt Foundationについてです。この話題の発端は、日本Qtユーザー会の会長である @task_jp さんのリツイートからでした。

KDE communityのこのつぶやきは以下の引用リツイートです。

Qtの(L)GPLのセーフガードというブログエントリー(2019/12/21投稿)です。さらにこの記事はKDE Free Qt FoundationのKDE e.V.選出理事であるOlaf Schmidt-Wischhöfer氏のブログ記事「A better Qt because of Open Source and KDE 」(2019/12/09投稿)を紹介して解説しています。

そうとう昔に書いていたブログネタで、Qtの年表を抜き出した時がありました。それによるとKDE Free Qt Foundation の設立は1998年。Qt 1.40のリリースアナウンスより前の出来事ですから、21年も昔に設立された組織の話です。それが今つぶやかれ注目を集めようとするには相応の理由があるのだろうということで、KDE Free Qt Foundationとはなんぞやといことに触れたいと思います。

Qtについて

Qtは、Haavard Nord 氏と Eirik Chambe-Eng氏の二人が1991年頃から開発をはじめた、C++ベースのGUIフレームワークです。1995年に最初のリリースを行なって以降、Quasar Technologies社(後のTrolltech社)で、保守・開発されていました。

その後、2008年にNokia社がTrolltech社を買収しました。当時のNokia社は、Linuxをベースにした独自のフレームワークによる携帯電話を模索していましたが、iPhone(iOS)やAndroidの勢力にシェアを大きく奪われつつあり、魅力的な製品と開発環境を用意すべくQtをベースにフレームワークのてこ入れに取りかかりました。しかし過去のしがらみから開発は難航、OSとしてはiOSやAndroidとの競争に追従できず、業績不振により、マイクロソフト資本を頼りにWindowsベースのOSにビジネスをシフト、2011年からQt自体の開発はオープンなコミュニティへ移管、商用的なサポートはDigia社へ売却されました。

その後、Digia社は2016年にQtのビジネスを分離、The Qt Companyとして分社し、現在はThe Qt CompanyがQtのビジネスと権利を有しています。

KDEについて

KDE(K Desktop Environment)は、Matthias Ettrich氏が一貫性のある、美しい、フリーのデスクトップ環境を目指して1996年に設立したプロジェクト名であり、デスクトップ環境とその環境用の各種アプリケーション群の総称でもあります。
KDEのKは、当初"Kool"との意見もあったそうですが、特定の意味を持たせないという方針となり今は特定の意味を持たない頭文字となっています。
Matthias氏はLyx(LaTeXのグラフィカルフロントエンド)の作者でもあり、LyXを動かす主たる環境となるUNIX(Linux)のグラフィカル環境をより優れたものにできないかという試みから、このプロジェクトを立ち上げたそうで、LyX同様にツールキットとしてQtを採用しています。

KDE Free Qt Foundationについて

KDEの開発当初、QtはFreeQt licenseで提供されていましたが、1998年にTrolltech社はQt 2.0からライセンスをQPL(Qt Public License)に変更しました。ところが、QPLはそのライセンス上GPLに抵触する部分があり、GPLを採用していたKDE ProjectとTrolltech間で協議が行われる事になりました。

その結果、オープンソース版のQtをQPLとGPLのデュアルライセンスで配布するとともにオープンソースソフトウェア、中でも特にKDEソフトウェアの開発のため、Qtの可用性を担保することを目的とするKDE Free Qt Foundationという組織を設立し、何らかの理由で新しいオープンソース版を作成することができなくなった場合でも、KDE Free Qt FoundationによりQtの開発を続けることを保証する契約が結ばれることとなりました。

その後契約の相手方はNokia, Digia, The Qt Companyへと移り変わり内容もその時々で変更は加えられつつも、21年経った現在でもQtがオープンソースで利用できることが担保され続けており、Qt Company社, Digia社, Nokia社の3社との契約により、QtのFreeなライセンス版の開発を中止した場合、それがたとえ買収、合併、破産などの理由であっても、FoundationがBSDまたはその他のオープンソースライセンスの下でQtの開発を維持できることになっています。

歴代の契約については、KDEのサイトで確認することができます。

[参考] KDE Free Qt Foundation

KDE Free Qt Foundation の現在の契約内容

上記の参考サイトの現在の契約内容の概要を抜粋してなんちゃって翻訳しておきます。確実で正しい情報が必要な方は、上記の英語の情報を読み直して下さい。

最新の契約では、以下のプラットフォームにおけるすべてのバージョンをカバーしています

プラットフォーム

  • Core Platform: X11(Desktop Linuxなど)およびAndroidはサポート対象外にできない
  • Additional Platforms: Windows, Windows Phone, macOS, iOSについては、Qt Companyがサポートを継続している限り
  • その他後継となる(X11に対するWaylandのような)プラットフォームは、Qt Companyとの交渉なしに対象とできる

ライセンス条項

  • QtのすべてのパーツはGPLv3およびその互換ライセンスで利用できること。またほとんどのパーツがLGPLv3およびGPLv2でも利用できること。
  • Qt(Essentials)のコアおよび既存のLGPLライセンスのQtアドオンは、引き続きLGPLv3下で利用できること
  • GPLv2でライセンスされた既存のQtコードおよびQt(Essentials)のコアの一部は、QtアプリケーションのためにGPLv2の互換性を保持すること。GPLの将来のバージョンは、KDE Free Qt Foundationで合意された場合にのみ適用できること。
  • Qtに含まれるアプリケーション(たとえばQt Creator)は、GPLv2またはGPLv3でなくてはならない。GPL例外は以下の2点とする
    • 生成されたコードはライセンス制限を受けない
    • サードパーティアプリケーションへのブリッジを引き続き維持する
  • Qtの新しいアドオンはGPLv3を使用する必要があり、オプションとしてGPLv2やLGPLv3を提供できるものとする。既存の機能を置き換える場合、上記のうちより厳しいライセンスを適用するものとする。

上記の条項が、リリース時点のQtに存在していない場合、12ヶ月以内に適用する必要があります。
また、この契約はQtのリリースにまだ含まれていなくとも、公開された開発中のコードのFree licenseを保護することとします。

というように、かなり慎重にFree licenseを維持する条件が盛り込まれています。

現在のボードメンバー

Foundationの理事は、Digiaより2名、KDE e.V.(KDEの法務および財務解決のための登録非営利組織)より2名とし、Foundationの決定は、理事の投票により決議します。投票が同数の場合は、KDE代表の投票で議決されます。

  • KDE e.V.の選出理事
    • Martin Konold
    • Olaf Schmidt-Wischhöfer
  • Digia(The Qt Company)選出の理事
    • Lars Knoll
    • Tuukka Turunen
  • 議決権を有しない相談役
    • Eirik Eng
    • Haavard Nord

このように優先議決権をオープンソース側であるKDEに委ねることで、Free Licenseの維持を確約しています。

今何が起きているのでしょうか

では、この時期になって話題になったのはなぜかというとKDE Qt Free Foundationの理事であるOlaf Schmidt-Wischhöfer氏が、"How the KDE Free Qt Foundation strengthens Qt"というドキュメント作成し、「A better Qt because of Open Source and KDE 」のブログ記事とともに公開したことにあります。ブログ記事によると

"Background is the wish of The Qt Company to change some of the contract provisions. It is still a bit unclear which ideas exactly they are pursuing, but we will need to have a public consultation on them in any case."

(このドキュメント作成の)背景には、The Qt Companyが契約条項の一部を変更することを希望していることにあります。彼らが求めているアイディアはまだよくわかっていませんが、いずれにしても公開の協議が必要となります。

という状況となっていました。このエントリーを読んだBurkhard Stubert氏(2012年までの20年にわたりQtのビジネスユニットで働いていた方)も"Safe-Guarding the (L)GPL Future of Qt"というブログ記事をあげています。

その中で

The SLA has been modified with every major release (Qt 2.x, Qt 3.x, Qt 4.x and Qt 5.x). So, it’s not surprising that The Qt Company wants some changes now that Qt 6 is less than a year away.

SLAは、すべてのメジャーリリース(Qt 2.x, Qt 3.x, Qt 4.x, Qt 5.x)において変更されてきました。ですから、Qt6まで1年を切った現在、The Qt Companyがいくつかの変更を望んでいるのは驚くことではありません。

とはしているものの、QtのFree licenseを守るFoundationの仕事の内容とその重要性を説明しています。

条件の変更はつい最近問題になったというものでもなく、もともと2015年のコントリビューターサミットでも条件の変更は話題にあがっていたようです。

Burkhard Stubert氏は、皆さんもぜひKDEに寄付をと呼びかけ、KDEの取り組みへの感謝の言葉で締めています。

ただ、ではなぜ今になってという疑問もあります。一つには、最近のQtの動向もあるのかもしれません。Qtは、Foundationとの契約により、少なくともEssentialについては、LGPLv3で提供する事とされています。
Essential等の分類は上記の記事に軽く触れられており

The Qt Free Edition consists of all the modules from Qt Essentials (e.g., Core, Multimedia Network, QML Quick), many modules from Qt Add-Ons (e.g., 3D, Bluetooth, NFC, OpenGL, Serial Port, WebEngine) and many Qt Tools (e.g., Creator, Designer, Linguist, qmake) (see Section 1.8 in the SLA and the documentation page All Modules).

QtのFree版は、 Qt Essentials(例えば、コア、マルチメディア、ネットワーク、QML、Qt Quick)、Qtのより多くのモジュール(例えば、3D、Bluetooth、NFC、OpenGL、シリアルポート、WebEngine)といったアドオン、多くのQtモジュールで構成されていツール(Creator、Designer、Linguist、qmakeなど)

という分類がされています。

ただ、最近では、確かにEssentials自体はLGPLv3が維持されていますが、それ以外の新しいモジュールはLGPLv3を外しGPLv3のみとしたり、The Qt Companyはソースコード非公開の(Qtとは別出しで提供する)外部ツールを提供したりし始めています。もちろん、GPLの採用や一部金銭を支払った顧客向けだけのツールが大きく問題だとは思っていませんが、収益重視のこういった活動の中で、Foundationとの契約改変を求めるという内容は不安を招くことは事実です。

スケジュールでは、Qt6のリリースまで1年を切りました。The Qt Companyに移行してから初めてのメジャーアップデートであり、Qtからの収益をメインとする企業との最初の契約改定となるわけです。

不安をかき立てる事には意義はありませんが、Free LicenseであるQtの健全性を維持するためには、今 KDE Free Qt Foundationという組織とその取り組みについて、改めて宣伝しておくことは非常に重要な意味があると思っています。

OSSビジネスの難しさ

OSSをビジネスとして活動している企業はQtだけではありません。Qtが最初にオープンソースライセンスと商用ライセンスの二本立てでビジネスを始めた当初は珍しいものでしたが、最近ではQtと同じようにオープンと商用向けの二本立てでビジネスを行なうケースも増えています。OSSでビジネスを長年成立させている企業も無いわけではありません。

一方で、Linuxディストリビューションの乱立と没落時代にも言われていましたが、オープンソースをビジネスとして成立させるのは非常に難しい面があります。当時乱立した企業で生き残ってきたのはRedHat他数社思いつく程度です。つい最近でも「AWS、オープンソースベンダのライセンス変更による商用サービスの制限は「顧客を見ていない」と反論」とする記事が出て話題になりましたが、もともと、今年の初めから

オープンソースソフトウェアの開発元がクラウドベンダへの不満を表明し、商用サービス化を制限するライセンス変更を行う例が続いています。

Redis、MongoDB、Kafkaらが相次いで商用サービスを制限するライセンス変更。AWSなどクラウドベンダによる「オープンソースのいいとこ取り」に反発より抜粋

のように、OSSを提供する企業と利用する企業間で収益に差がでており問題に成るケースもあります。

オープンソースの開発を進めるために、そのソフトウェアから収益を上げ、開発者達の生活を支えて開発を維持するというのは間違った試みではないでしょう。OSS開発者も霞を食べて生きているわけではなく、開発者もボッチばかりではなくきちんと家族を養っている方も居るわけで、家族の生活を支えなくては成らない人もたくさんいるわけです。

他方、利用者目線で改悪とうつったり、その企業自身に所属しないコントリビューターやコミュニティ活動に従事する人にとっては、収益ばかりを口にして締め付けを厳しくされるのはおかしいと感じたりするケースが見受けられます。この手の議論になるとなんでそんなに”寛容では無いのか”といった発言をする人もでるなど、同じコミュニティ内でも合意を形成するのは非常に難しい問題です。

この手の議論は、解決するのが難しく、お互いに冷静に、お互いの立場を尊重し、最善な方法を模索する必要があるでしょう。

LGPLの功罪

Qtは、Nokia社による買収後、LGPLライセンスを採用しました。そして、Foundationとの間にはEssentialについてはLGPLを維持するという契約を結んでいます。Nokia社にとっては、Qtのライセンスから得られる収益は重要ではなく、自分たちの製品とサービスとして提供するAPIを魅力的なものにする必要性からLGPLを採用しました。

GPLとは相容れない、もう少し寛容なオープンソースライセンスにとって、LGPLは採用のきっかけになりました。同時に、それまで商用ライセンスを利用していた企業が、LGPLを採用しフリーライドを許してしまっている側面もあります。もちろんLGPLを採用する企業側も、フリーライダばかりではなく不具合の報告やパッチの提供などの技術供与で支えている企業もあるでしょう。また、社員や雇用している人材がコミュニティ活動に貢献しているケースもそれなりにあるかと思います。

redditで今回の件に絡み話題になっていますがNokia社はTrolltechからの買収時に1億ユーロに近い金額を支払い、5.0へのメジャーバージョンアップのための費用を下支えし、結果として4百万ユーロ程度での売却となっています。未来の落ちた収益性はNokia社が支払ってくれたようなものですが、とはいえ、The Qt Companyもその社員の生活を支え、株主を納得させる必要に迫られています。The Qt Companyとしては収益を上げる方法を模索している段階なのでしょう。営利企業としては正しい姿とも言えます。

その上で、The Qt Companyが収益性ばかりを追いかけ、ダークサイドに落ちないように目を光らせるのは、KDE Free Qt Foundationや私たちQtコミュニティの役割なのかもしれません。

私たちにできること

Qtはミドルウェアという立ち位置から、誰もが知るソフトウェアになる事はありません。Google Earthは世界に驚きを与え、LINEは日本国内では知らない人はいないサービスになっています。メカ設計の方々はCADの名前を知っていても、そのソフトウェアのディレクトリにQtのライブラリが入っていることはあまり知られていません。スタジオジブリの名前を知っていても、彼らが使っていたアニメーター向けのツールがQtで作られていることも同様です。

技術者である私たちは、自分たちの作品でQtを使っているよと宣伝し、コミュニティに参加し、不具合を報告し、パッチをアップストリームに提供し、あるいはブログを、技術同人誌を、技術書を書くことで下支えしていくことができます。

また、The Qt Company社がダークサイドに落ちる不安を感じるのであれば、監視者であるKDEに率先して寄付をし、彼らの活動を助けるという手段もあるでしょう。

企業のみなさんも、LGPLはそのライセンスに従う限り利用することは”悪”ではありません。むしろ積極的に利用できるところには利用すべきです。そのうえで、free rideに終わらぬよう、Qtの知名度を上げ、採用事例を増やし、ビジネスのきっかけ作りに手を貸すことは可能です。あるいは、あなたの責任で許可できるのであれば、自社の技術者がコミュニティに参加し、成果を発表し、不具合を報告し、パッチをアップストリームに投げることを許可することで技術的な支援をすることもできるでしょう。

既に十分な収益を上げ、若干の余裕と将来への不安があるのであれば、新しい製品に商用ライセンスを採用する、あるいはKDEに寄付をするという手段をご検討下さい。

最後に

The Qt Company社は株主の出資を受ける営利企業です。Qtは今ではコミュニティで開発されるオープンソースなソフトウェアです。Qtが知名度を上げ広がりを見せたのは、KDEをはじめとするプロジェクトの採用があったからでしょう。そのQtの開発が継続されているのは、開発者を抱えてきたTrolltech社でありNokia社であり、Digia社であり、The Qt Company社の努力でもあったのです。

営利企業の中の人からすれば、もしかするとオープンソースは癌のように思えているかもしれません。オープンソースコミュニティからすればともすれば営利企業の活動は悪に見える時があるかもしれません。けれど、世界は勧善懲悪ではできていません。お互いにお互いの立場を理解し、尊重し、まもなく世に出ることになるであろうQt6の未来が輝かしいものになるよう努力していきたいものです。

最後になりましたが、営利企業と協議し、長年にわたりFree Licenseを守り続けてきたKDE Qt Free Foundationの活動の重要性は言うまでもないことでしょう。この偉大なFoundationの活動に心からの感謝と賛辞をもって今年のアドベントカレンダーの最終日としたいと思います。

メリークリスマス!世界が愛と幸せに満ちた平穏な一日となりますように。

17
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?