The story behind Client Side Decorations

desktop-environmentgnome3window-manager

So, Gnome apps currently use exclusive Client Side Decorations, with GTK Header Bar containing buttons, menus, title.

  • What is the story behind implementing Client Side Decorations?
  • Is it Gnome developers' idea alone?
  • Why was the change so drastic without even a way to revert before adapting to it? When Gnome3 used a modern UI, there still is a gnome2 fallback session right?
  • Is it like Gnome apps should only be used on Gnome Desktop Environment? Make them look awkward on other Desktop Environments and users will either switch to Gnome DE or stop using Gnome apps altogether?

Ubuntu uses separate Desktop Environment (Unity) which conflicts with Client Side Decorations, since the whole concept of unity merging title bar and app menus to save space becomes irrelevant i think. So they remove the Client Side Decorations and Header Bar code from Gnome apps to make them look like they were before with window manager. All ubuntu based binary-compatible distributions are benefitted by this.

But distro's like debian (and its binary compatible distros) will not make major changes from upstream code, and are badly affected.

Best Answer

To begin with, GNOME did not implement the Header Bar, a prominent feature of client-side decorations, immediately after moving away from the classic GNOME 2.

When first started

On the surface, the client-side decorations (CSD) was first introduced in GTK+ 3.10 and 3.12 that dates back to 2013. GTK+ 3.10 is the sixth stable releases of GNOME 3. In other words, CSD made appearance only after two years following GNOME 3 was first released in 2011.

Then again, the CSD for GTK+ was actually being developed as early as 2009. At the time, the CSD were experimental and disabled by default. There were only patches of code that appear foreign to end users, but the wireframes of early user interface can be found (follow the link "CSD for GTK+").

Part 1: Answering questions

  • What is the story behind implementing Client Side Decorations?

From a blog post in early 2014 by mclasen on GNOME Blogs:

Early in the GNOME3 era, we tried to save some vertical space by simply hiding titlebars when the they containing important information. This is particularly relevant for maximized windows on small screens, where vertical space is scarce [...]

More recently, we’ve switched to a different approach: Reclaim the area that has traditionally been taken up by the titlebar for applications. To this end, we’ve introduced the GtkHeaderBar widget, which lets applications use this space for its own purposes [...]

That is pretty much self-explained by GNOME contributors themselves.

  • Is it Gnome developers' idea alone?

If you mean the Header Bar, then probably yes. A GNOME contributor at the time, Cody Russell, is mentioned in all linked sources and likely the first person to work on the feature. At the time, it was simply named as "client-side" something.

  • Why was the change so drastic without even a way to revert before adapting to it? When Gnome3 used a modern UI, there still is a gnome2 fallback session right?

As explained in the beginning of this answer, the change was not drastic. When was the CSD for GTK+ first developed? 2009. When was then first introduced to end users? 2013. There is a four-year gap, during which many posts were written on GNOME Blogs and even mentioned at elsewhere.

The fallback mode is more like a workaround for hardware acceleration that was not supported by virtual machines. The fallback mode was misunderstood and had nothing to do with GNOME 2, according to the feature description of GNOME 3.7.

  • Is it like Gnome apps should only be used on Gnome Desktop Environment? Make them look awkward on other Desktop Environments and users will either switch to Gnome DE or stop using Gnome apps altogether?

GNOME apps are part of GNOME desktop environment, and managed by GNOME development team. As a result, GNOME apps would be designed to appear well in GNOME desktop environment. The decision is natural. Not liking GNOME Apps? Use any alternatives whenever available.

Early attempts to ward off CSD were seen between 2014 and 2015, which include a hack to disable GTK+ 3 client side decoration and fixes by Lubuntu development team.

Part 2: Answering non-question text

Ubuntu uses separate Desktop Environment (Unity) which conflicts with Client Side Decorations, since the whole concept of unity merging title bar and app menus [...]

Unity desktop environment was dropped from Ubuntu 17.10. Ubuntu has since returned to GNOME desktop environment with own touch of Unity-like interface. No more conflict in terms of CSD, since Ubuntu had dropped the app menu and some other innovations as of Ubuntu 18.04.

But distro's like debian (and its binary compatible distros) will not make major changes from upstream code, and are badly affected.

What exactly "are badly affected"? This can only be answered by the developers whom are working closely with GTK+ dependant projects.

From my observation, the affected communities are mainly divided into two groups of decision.

  1. One group decides to support CSD and the modern GTK+ desktop environment is the future, so they are adapting to the changes. elementary OS development team is the pioneer of this decision, with 0.3 "Freya" that uses GTK+ 3.14 and teases the Header Bars on YouTube in 2014. Ubuntu MATE development team follow up with MATE 1.12 for 16.04 release in 2015.

  2. One group decides to oppose CSD and the traditional GTK+ desktop environment is to remain, so they are creating the alternative. Linux Mint development team is the pioneer of this decision, with the introduction of "X-Apps" project in 2016.

In general, end users running latest releases of any GTK+ based distribution might have bad experience because upgrades are recommended every few weeks or months, unlike long-term releases that only recommend upgrades after few years.

TL;DR The Header Bars (client-side decorations for GTK+) was only introduced from GTK+ 3.10 in 2013. The affected communities made their own decisions and moved on. End of story.


Answerer's note: Most points questioned by OP have been covered--I counted at least 7 of them--but there may be some missing information in between. Hence this answer is now a community wiki, so that anyone with minimum reputation can improve this post to address the remaining points.

Related Question