Gtk or Qt or Flutter for developing Linux app ?

ยท ยท 444 words ยท 3 minute read

Gtk ๐Ÿ”—

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+).

GNOME desktop environment and Elementary OS use Gtk4 and Gtk3. Pop! OS started migrating from Gtk3 to Gtk4 with Rust programming language.

Qt ๐Ÿ”—

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 ๐Ÿ”—

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.

Comparison ๐Ÿ”—

Free of costyesyesyes
Free / Libreyesnono
Developerstied to Linux developersmore broadhuge numbers of developers
Advantages to LinuxLibre and Freedomperformanceperformance and ease-of-use and publicity

my thoughts ๐Ÿ”—

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 libRust + Gtk4Flutter
Libre / Freedomyesyesno
open sourceyesyesyes
number of developersgoodtoo manyhuge number
supporting Linuxseparate codebaseseparate codebasesame codebase with some tweaks for Linux
performancegoodbetterthe 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.