GUIライブラリを新しいライブラリに移行する準備として調査を行う
背景や動機
JDimが現在利用しているGUIライブラリはgtkmm3です。
gtkmm3の最終バージョンであるgtkmm 3.24は2018年にリリースされており、現在は新機能の追加がなくメンテナンスモードに入っています。
gtkmmの基盤となるGTKのバージョンは、GTK4が2020年にリリースされ、またGTK5の開発が進んでおりライブラリの世代交代が進められています。
そこで、JDimでも新しいGUIライブラリに対応するため調査を行うことを提案します。
GTK3のサポート終了について
GTK2のサポートは、GTK4のリリースに伴い終了しました。
これは、GTKを開発するGNOMEが3つ以上のバージョンを並行してメンテナンスしない方針をとっているためです。
このため、GTK5がリリースされると、GTK3のサポートが終了する可能性が高まります。
GTK3のメンテナンス終了後、どの程度利用可能かは不透明であり移行には時間と労力がかかるため、早めに検討を進める必要があります。
GTK2 EOL: https://blog.gtk.org/2020/12/16/gtk-4-0/
Snapパッケージ
Snapパッケージは、Canonicalが開発・メンテナンスを行うgnome extension を利用しています。
Note
Snapは、アプリケーションの依存関係をまとめて提供するパッケージ形式であり、Canonicalが提供する環境で動作します。
現在はUbuntu Core 22をベースとしたgnome-42-2204 を利用していますが、
Ubuntu Core 24をベースとしたgnome-46-2404 はgtkmm3を直接サポートしなくなりました。
Ubuntu 22.04 LTSの標準サポートは2027年4月に終了する予定ですが、Snapパッケージのランタイムはさらに長期間サポートされる予定です。
ただし、古いランタイムを利用し続けるとJDimの動作環境サポートに負担がかかるため、2027年を目安にランタイム移行を目指す予定です。
リスク
2027年までにGUIライブラリの移行を達成できなかった場合のリスクについて述べます。
JDim本体のリスク
2027年までに移行を達成できなくてもすぐに問題が起こる可能性は低いです。
ただし、新しいディストリビューションの機能やハードウェアへの対応が難しくなる可能性があります。
さらに、GTK5リリース後にGTK3のメンテナンスが終了する可能性があり、移行が急務となるかもしれません。
このリスクが表面化すると、開発・保守の継続に関わる重大な問題となります。
Snapパッケージのリスク
2027年までに移行を達成できなかった場合には、次の二つの選択肢があります。
一つ目はUbuntu Core 22を利用し続ける方法、二つ目はUbuntu Core 24に移行する方法です。
Ubuntu Core 22を利用し続ける
移行の必要はありませんが、Canonicalによるサポート終了後にセキュリティリスクや機能の欠落が発生する可能性があります。
JDimの動作環境サポート範囲が拡大するため、メンテナンス負担が増加する問題があります。
最終的にCanonicalが古いバージョンのGNOME extensionの提供を終了すれば利用できなくなります。
Ubuntu Core 24に移行する
gtkmm3が含まれないため、独自にビルドして組み込むか、aptパッケージを追加する必要があります。
Ubuntu Core 24のgnome extensionとの互換性や不具合が発生しないかを事前にテストする必要があります。
このリスクが表面化すると、JDimの動作環境の更新に支障が生じるため対応を決める必要があります。
GUIライブラリの候補
機能が豊富にありC++で利用しやすいライブラリを挙げます。
いずれのライブラリも移行が行えるか調査を行う必要があります。
LinuxではGTKやQtが有力な選択肢ですが、次のGUIライブラリも目的や用途に合わせて使われています。
解決方法
移行時に想定される技術的課題を具体的に洗い出します。
まずは、第一候補としてgtkmm4の調査を行います。
現在使われているGTKの機能をリストアップしてまとめます。
gtkmm4のドキュメントを参考に移行で問題になる部分を調べます。
https://docs.gtk.org/gtk4/migrating-3to4.html
gtkmm4で削除、非推奨、または互換性がない機能があれば代替の方法を考えます。
gtkmm4への移行が技術的に困難な場合は、Qt6への移行の可能性を検討します。
Snapパッケージのgnome extensionのサポートを考慮し、2025年末までに移行方針を決定する予定です。
GUIライブラリを決めて移行作業を開始する段階に進んだら新たにissueを作成し、対応策を検討します。
移行の課題:
GTK3版との共存が可能か
gtkmm4で実現できない機能をどうするか(放棄して移行、または他のライブラリを採用して実現)
移行作業:
代替案
GUIライブラリの候補で説明したとおり、GTK4はX11固有の機能が削除されているため無くなった機能をどう代替するのかが課題です。
Qt6は、GTK4で削除された機能を代替できる可能性があり、JDimのデザインを維持できるかもしれません。
詳しく調査を行ってライブラリの変更に問題がなければ、Qt6の採用も有力な選択肢と考えています。
wxWidgetsやFLTKは機能が限定され、JDimの機能を完全に移行するには技術的な課題が多いです。
追加の情報
GUIライブラリ移行についてご意見・アイデアをコメントしていただけると幸いです。
GUIライブラリを新しいライブラリに移行する準備として調査を行う
背景や動機
JDimが現在利用しているGUIライブラリはgtkmm3です。
gtkmm3の最終バージョンであるgtkmm 3.24は2018年にリリースされており、現在は新機能の追加がなくメンテナンスモードに入っています。
gtkmmの基盤となるGTKのバージョンは、GTK4が2020年にリリースされ、またGTK5の開発が進んでおりライブラリの世代交代が進められています。
そこで、JDimでも新しいGUIライブラリに対応するため調査を行うことを提案します。
GTK3のサポート終了について
GTK2のサポートは、GTK4のリリースに伴い終了しました。
これは、GTKを開発するGNOMEが3つ以上のバージョンを並行してメンテナンスしない方針をとっているためです。
このため、GTK5がリリースされると、GTK3のサポートが終了する可能性が高まります。
GTK3のメンテナンス終了後、どの程度利用可能かは不透明であり移行には時間と労力がかかるため、早めに検討を進める必要があります。
GTK2 EOL: https://blog.gtk.org/2020/12/16/gtk-4-0/
Snapパッケージ
Snapパッケージは、Canonicalが開発・メンテナンスを行うgnome extensionを利用しています。
Note
Snapは、アプリケーションの依存関係をまとめて提供するパッケージ形式であり、Canonicalが提供する環境で動作します。
現在はUbuntu Core 22をベースとしたgnome-42-2204を利用していますが、
Ubuntu Core 24をベースとしたgnome-46-2404はgtkmm3を直接サポートしなくなりました。
Ubuntu 22.04 LTSの標準サポートは2027年4月に終了する予定ですが、Snapパッケージのランタイムはさらに長期間サポートされる予定です。
ただし、古いランタイムを利用し続けるとJDimの動作環境サポートに負担がかかるため、2027年を目安にランタイム移行を目指す予定です。
リスク
2027年までにGUIライブラリの移行を達成できなかった場合のリスクについて述べます。
JDim本体のリスク
2027年までに移行を達成できなくてもすぐに問題が起こる可能性は低いです。
ただし、新しいディストリビューションの機能やハードウェアへの対応が難しくなる可能性があります。
さらに、GTK5リリース後にGTK3のメンテナンスが終了する可能性があり、移行が急務となるかもしれません。
このリスクが表面化すると、開発・保守の継続に関わる重大な問題となります。
Snapパッケージのリスク
2027年までに移行を達成できなかった場合には、次の二つの選択肢があります。
一つ目はUbuntu Core 22を利用し続ける方法、二つ目はUbuntu Core 24に移行する方法です。
Ubuntu Core 22を利用し続ける
Ubuntu Core 24に移行する
このリスクが表面化すると、JDimの動作環境の更新に支障が生じるため対応を決める必要があります。
GUIライブラリの候補
機能が豊富にありC++で利用しやすいライブラリを挙げます。
いずれのライブラリも移行が行えるか調査を行う必要があります。
gtkmm4(GTK4): 現在JDimが利用しているgtkmm3の後継ライブラリです。
Qt6: Qt6はクロスプラットフォーム対応の機能が豊富なGUIライブラリです。
LinuxではGTKやQtが有力な選択肢ですが、次のGUIライブラリも目的や用途に合わせて使われています。
wxWidgets: クロスプラットフォームのGUIライブラリです。
FLTK: 軽量に設計されたGUIライブラリです。
解決方法
移行時に想定される技術的課題を具体的に洗い出します。
まずは、第一候補としてgtkmm4の調査を行います。
https://docs.gtk.org/gtk4/migrating-3to4.html
移行の課題:
移行作業:
代替案
GUIライブラリの候補で説明したとおり、GTK4はX11固有の機能が削除されているため無くなった機能をどう代替するのかが課題です。
Qt6は、GTK4で削除された機能を代替できる可能性があり、JDimのデザインを維持できるかもしれません。
詳しく調査を行ってライブラリの変更に問題がなければ、Qt6の採用も有力な選択肢と考えています。
wxWidgetsやFLTKは機能が限定され、JDimの機能を完全に移行するには技術的な課題が多いです。
追加の情報
GUIライブラリ移行についてご意見・アイデアをコメントしていただけると幸いです。