On Sun, Dec 26, 2021 at 11:15 PM Richard Stallman <rms@gnu.org> wrote:

  > > Is it to be expected that, at some date, they will say that GTK 3 is no
  > > longer supported and people should downgrade to GTK version 4?

  > If meant "upgrade to GTK version 4", then yes.

For Emacs, changing to GTK 4 would be a downgrade, so that's what I call it.

Anyway, if you're right about their plans, it means that sticking with
GTK 3 is a short-term solution but not a permanent solution.

In general, the currently-used toolkits have raised the floor of the "stamp of approval" abstraction layer. As a (somewhat contrived) example, once upon a time one might have used xmh to read email. It was an X application that used the Athena Widgets and also could use the 3D Athena widgets, so in terms of code, you would see X, XAW, and XA3D calls. These days, one might instead use a GTK4 or QT mail reader, and those toolkits would only "promise support" for code that made gtk or qt calls; the programmer isn't exactly prohibited from using X11 calls, but doing so is not recommended nor supported, and if the programmer runs into trouble, they are very likely to be told "you're breaking the abstraction barrier we set; remove it and then come back with your problem". (This is more or less exactly the situation that created these lines in xterm.c:)

#ifdef USE_GTK
      /* A long-standing GTK bug prevents proper disconnect handling
<https://gitlab.gnome.org/GNOME/gtk/issues/221>.  Once,
the resulting Glib error message loop filled a user's disk.
To avoid this, kill Emacs unconditionally on disconnect.  */
      shut_down_emacs (0, Qnil);
      fprintf (stderr, "%s\n\
When compiled with GTK, Emacs cannot recover from X disconnects.\n\
This is a GTK bug: https://gitlab.gnome.org/GNOME/gtk/issues/221\n\
For details, see etc/PROBLEMS.\n",
      error_msg);
      emacs_abort ();
#endif /* USE_GTK */
 
Over time, reaching "past" the abstraction barrier has become harder and harder as the toolkits have become more "all encompassing", to the point where it's more semantically accurate to talk about an app being a GTK or QT (or W32 or mac) app than, say, an X app that uses QT. I don't know if this owes more to "easy platform consistency" or to "just do everything via javascript inside a browser", but the end result is pretty much the same. It probably doesn't help that Wayland is basically a decade old and still doesn't have a stable standard specification (or really a draft spec beyond "whatever is currently in the release code").

Hope that helps,
~Chad