GNOME is a minimalist, albeit too simple, desktop environment. It's a part of so many Linux distros, and is the baseline of what you can expect as a desktop experience. GNOME is not new to me, as I've seen it evolve from 2016 to what it's become now, and it certainly is an improvement. But the pain of adopting such an approach is that it doesn't ship many features that you expect from a DE by default. The difference is more visible when you switch from other OS like Windows or macOS, because certain features like simple app categories and advanced tiling support aren't there.

But there's a nifty trick to solve these issues by using GNOME extensions. These mini-tools promise to add missing features and work splendidly when they do. Yet, it's one of the core reasons Linux desktops lose stability and become prone to crashes and failures.

GNOME's design choices promote extension use

Poor implementation

GNOME minimalism is getting on my nerves because it's a frustrating design choice. Why would you willingly drop useful features that are increasingly common in other desktop environments? Take COSMIC, for example, which has most features I expect from a desktop environment, has a moderate resource usage footprint, and doesn't force me to search for extensions the moment I install a fresh Linux distro with GNOME.

I'm not even asking for much. Is it that difficult to implement app categories in the launcher or support advanced tiling and window layouts? All these 'intentional' design choices are only hurting the end user, who has to start on a crusade of finding, installing, and testing extensions that implement the feature.

GNOME should think from a beginner's perspective, and what they expect from a DE when they install Ubuntu or other distros. They surely don't want an incomplete desktop environment that just rolls a basic panel, app launcher, and nothing more.

The worst part about using GNOME extensions is that they don't always work at all times, despite being an official element. It can cause performance and stability issues, and the warning is plastered on the top of extension-focused tools like Extension Manager.

Extensions are hacks

Unstable and wonky at times

When you install and apply an extension, it adds a new feature that wasn't there before. To do so, it needs to inject JavaScript and try to override the default behavior. It then appears as a working feature in the desktop environment. An extension isn't a part of the original code and is more of a workaround that developers and the community figured out to add missing features.

So, when you have something that isn't a part of the original code, even minor changes to it can break the whole UI. It's the reason why some extensions immediately stop working after a new GNOME update, and you keep trying to figure out what went wrong. Unstable or poorly coded extensions can even crash the desktop environment and render it unusable, and it might need a restart to work normally again.

As GNOME releases new versions, it stops supporting extensions that don't comply with the changes. So, the extensions that you use must be frequently maintained and updated by the developers. Otherwise, they won't work when the user installs a new update that changes something in GNOME.

Due to this, I end up facing problems because I'm trying to trust something fragile as a regular part of my workflow. GNOME doesn't worry about the implications of a new update on extensions and only focuses on not breaking the elements it includes by default.

GNOME extensions are flimsy

Polar opposite to KDE's KWin scripting

I don't want to demean GNOME extensions as they help me implement features that don't exist by default. However, they lack a strict rule book for modifying the desktop behavior. The lack of rules that can guide how these extensions interact with GNOME results in this unpredictable behavior. Imagine having unrestricted access to a room with no rules or a guard. If you want to move things around, there's no one to stop you. But not all desktop environments follow this approach.

A good example of a desktop environment that supports scripting but has a specific API to do so is KDE's KWin window manager. It supports scripting that standardizes how it'll interact with the window manager, enforces strict rules, and doesn't offer complete access to tweak everything. KDE also includes a lot of widgets and separates them from the window manager modifications.

As I stated in my previous example, you have access to the room, but there's a rule book that defines how you can move things around. You cannot go on a rampage, place items wherever you like, or break a wall. The rule book and guards (API) exist, and you must comply with them to make any changes.

If GNOME adopts this idea, it'll drastically improve the way extensions work. Developers will have a clear idea of what works, what elements they can access and modify, and won't need to fear a new version update.

Don't settle for mediocrity

GNOME's rivals already provide a more complete, built-in desktop experience. Staying in the past, limiting desktop customization, panel tweaking, and ignoring necessary desktop features won't help. Leaving the users to figure out what works best with a bunch of extensions isn't the behavior I expect from them. The only way to figure out this mess is by standardizing what extensions can or cannot do and incorporating sensible desktop elements in future versions.