Qt のモジュール化プロジェクト

この記事は Qt Blog の "Qt is going modular" を翻訳したものです。

先日、"Qt Modularization" なるプロジェクトが始まりました。このプロジェクトは Qt を全てのレベルでモジュール化することを目的としています。ご存じのように、Qt はすでにライブラリ単位ではモジュール化されていて、各ライブラリはそれぞれ別のファイルとなっています。しかし、Qt プロジェクトそのものは単一のプロジェクトです。全てのコードは一つのリポジトリとして公開されており、あるモジュールのビルドは、それが依存するモジュールを同時にビルドすることなしには、行えません。このプロジェクトではその状況を変えようとしています。各モジュールは別のリポジトリで公開され、それぞれに別々の管理者が存在し、またモジュールごとに異なったリリーススケジュールを持ちます。

このプロジェクトは様々な要因から始まりました。一つは、あるモジュールを他のモジュールよりも頻繁にリリースしたいと考えたためです。それは QtWebKit や QtDeclarative のように開発が活発なプロジェクトにとって重要なことです。その他の理由としては、Qt の全てのコードを一つのリポジトリに納めるには Qt は技術的な観点からも管理的な観点からも大きすぎるということです。完全に分割されたモジュール化によって、チームやコントリビューションはそれぞれのモジュールで独立して働くことが出来ます。また、テスターや開発者は安定している依存モジュールを利用することによって、対象となるモジュールのみに焦点を当ててテストやビルドが出来るようになります。

Qt は以下に示す図に従って分割されることになります。最初の図は現在の Qt の構造図で、次の図が検討中の案を示しています。リリース日程はまた固まっていませんが、このプロジェクトには高い優先順位を割り当てています。Qt カーネルモジュールは将来的にさらに分割される可能性があることに注意してください。しかし、これらのモジュールは非常に強い依存関係を持つため、現状ではカーネルモジュールとしてまとめておく予定です。

この図は現在の案であり、変更される可能性があります。

現在の構造:

現在のモジュール構造

変更案:

変更予定案

言うまでもないことですが、これは Qt の開発方法に非常に大きな影響を与えることとなります。Gitorious は複数のリポジトリをホストすることとなりますし、Qt リポジトリのクローンを作成している全員に影響します。しかし、初期の混乱が収まれば、Qt の利用や開発、貢献がより容易に出来るようになると望んでいます。

個々のモジュール自体には興味がないものの Qt のパッケージ全体が必要な人のために、全てのモジュールを持つマスターリポジトリを作成する可能性を検討しています。現状では git のサブモジュールや Android のリポジトリを参考に検討していますが、その他の提案があればそちらも検討します。全ての Qt のモジュールが含まれる(現在と同様の)リリースも続けていく予定です。


Blog Topics:

Comments