Gtk or Qt or Flutter for developing Linux app ?
Gtk is the FLOSS (Free Libre Open Source Software) of Linux GUI development. It is being developed by GNOME foundation to be cross platform. Its latest release is Gtk4 with GPU acceleration and too many features and advantages over the previous release (Gtk3+).
Qt is a cross platform proprietary framework which works on desktop and mobile. It is efficient and modern looking with great performance. KDE plasma desktop environment uses it (qml).
Flutter is a open source framework created by Google. It’s graphics engine is Skia which is known for efficiency and great performance. It is mainly developed for mobile app development. Now, Flutter runs on all platforms; web, Android, iOS (iPhone and iPad), Windows, Mac OS and Linux.
Canonical — developer of Ubuntu distribution — started adopting Flutter instead of Gtk for their GUI apps.
|Free of cost||yes||yes||yes|
|Free / Libre||yes||no||no|
|Developers||tied to Linux developers||more broad||huge numbers of developers|
|Advantages to Linux||Libre and Freedom||performance||performance and ease-of-use and publicity|
I think it is great to stick to Gtk and improve it further and use it. But I also think that adopting Flutter as alternative framework for GUI app development is a great way of making the Linux app dev easier and main stream! what? it is almost proprietary! and not libre! .. yeah I know. But Linux has no one IDE or chosen tech stack for app development! that’s why Elementary OS is developing “code” editor, and adopting Vala programming language and Gtk3+ with granite library to make it easier for app developers to learn and create apps for their Linux distribution.
The Elementary OS strategy (Vala + Gtk3 + granite) is good enough for Linux developers and users. And Pop! OS strategy (Rust + Gtk4) is better developers and users. And Ubuntu strategy is the best for developers and users. What ? yes as you read.
|🤔||Vala + Gtk3 + Granite lib||Rust + Gtk4||Flutter|
|Libre / Freedom||yes||yes||no|
|number of developers||good||too many||huge number|
|supporting Linux||separate codebase||separate codebase||same codebase with some tweaks for Linux|
|performance||good||better||the best of them|
Finally, I like those three strategies but I like Canonical / Ubuntu / Flutter approach more because it helps making Linux mainstream by facilitating getting more mainstream apps into Linux app stores and repositories.