Migrating to GTK3 – Re: Factor
15 points by veqq
15 points by veqq
GTK 3.0 was released in the 10th of February 2011 (15 years ago). GTK 4.0 was released the 16th of December 2020 (5 years ago, and on my birthday).
I knew there were still applications using GTK 2 (are there some that use GTK 1 still?), but it is funny to me.
Well, better late than never, right?
One problem is that gtk/3/4 aren’t philosophically equivalent. 2 is much more of a general purpose toolkit. 4 is much more tightly bound to Gnome and their preferences and opinions. Which they are entitled to! But this is also a valid reason not to migrate. (3 seems somewhere in the middle)
Is it fair to say that 4 is more GNOME-specific than 3? Isn't the whole libadwaita thing specifically to decouple GTK from GNOME? At least theoretically, I would expect that GTK 4 can be more focused on being a general purpose toolkit now that libadwaita handles all the GNOMEisms.
I mean I dunno. Perhaps it’s unfair? It might depend on what one considers a GNOME thing. Are CSDs a GNOME thing? I know there’s an argument Wayland requires them too but that seems to be less true as time goes on.
4 is much more tightly bound to Gnome and their preferences and opinions
This is the opposite of the intent with GTK4; the Gnome specific stuff was punted to libadwaita. This does mean base GTK now lacks some widgets, but the intent is that a HIG specific widget library like libadw, Granite, or a GTK4 version of libxfce4ui would fill in the gaps
Maybe it's a step on the way to GTK 4?
I've modernized a GTK 2 application and found that trying to jump straight to 4 was too big a step for me. Granted I had no experience with GTK but 2 ⇒ 3 ⇒ 4 made for smaller easier changes.
Yes they do mention it briefly:
I got motivated to look into what it would take to support GTK3 or GTK4. We had a pull request that was working through adding support for GTK4. After merging that, and modifying it to also provide GTK3 support, I re-discovered that our OpenGL rendering was generally using OpenGL 1.x pipelines and that would not work in a GTK3+ world.