tl;dr: As much as I respect the efforts undertaken by groups like Gnome and elementary, I have to wonder if what they’re building is barely enough, and provides an illusion of substance.
There’s been a lot of effort spent on the Linux desktop. The groups I respect the most on this front are Gnome and elementary, due to their focus on UX design and trying to do new things. While Gnome has been controversial due to their design and stance towards design, I think a lot of the controversy on that front is unmerited (i.e Gnome’s design isn’t actually appropriate for tablets as much as the peanut gallery thinks). I appreciate that someone is trying to do something other than “Windows 98 stomping on a human face, forever”, and it’s what I use on my desktop. Controversial for other reasons (also unmerited, a man’s gotta eat; that desktop won’t happen with getting paid in exposure), elementary’s design has been considered very nice (often making it recommended for “my first distro”), if a bit derivative at first glance. What makes it more interesting in the morass of many OSS UX clones is UX as a priority/value (instead of something that’s just there) and iterating on existing UX. Sometimes it works out, doesn’t it doesn’t, but I respect the attempt at trying something new and seeing if it’s better.
However, I wonder if what they’re doing is enough. They have a desktop, many components of that desktop, and human interface guidelines (elementary, Gnome); all components you need. What I think is missing is the substance. Where’s the ecosystem of applications that embrace the HIG, and how does the intricacies of the of the environment come into play for complex applications and situations?
Of course, I think they know about the lack of ecosystem. elementary in particular is trying to foster an ecosystem around their OS and desktop, including work to make it sustainable for developers (i.e payment model integrated). However, when I browse their app store, I notice there’s just not much in terms of of “complex” (for lack of a better term) applications; think tools like Inkscape (Think large tools, but ones that expose intricate functionality and interlocking parts). Many of the apps I’ve seen are simple, like currency conversion or dot grid drawing tools. That’s not to say such applications are worthless and have no value, but these little applets are quick to make. Myself? I end up doing a search for trivial things like currency conversions than I would opening a native desktop app.
This lack of “complexity” in the applications, makes me doubtful if these desktops have ideas that can fit beyond screenshots. Many of the different approaches at UX seem fine for the simple applications, both first-party and third-party. However, I haven’t seen many attempts at a “full” application, designed for the HIGs of these newer kinds of desktop. The only one I can think of is Gnome Builder; I lack the experience with it to determine if it’s good or not. While menu bars and friends do work, different things could be tried that might end up better – the ribbon is the best and one of the few examples of such a thing. While Gnome and elementary don’t like menu bars, they don’t really propose an alternative outside of “just use headerbars”, which in my opinion is fine advice for smaller applications, but unspecific for larger ones.
Part of the challenge is that many of these “complex” applications exist outside of the desktop environment’s influence. For applications like Inkscape, they gain little by being tied to a specific desktop environment (well, there are some exceptions, but we’ll get to that), since they would feel alien on a majority of platforms instead of feeling “close enough” on them; they value being able to run on Windows more than feeling like a good Gnome citizen. I’m not sure if there’s mockups of redesigning “complex” applications to “fit” and how they would accomplish that, there certainly hasn’t been much in the way of implementing it.
Likewise, there doesn’t seem to be much in the way of new applications for these specific desktop environments, likely because of the same factors that cause cross-platform development to be a thing. Thus, only the truly dedicated develop for a specific desktop. In the Linux world, those truly dedicated just tend to be developing desktop applets, not full applications. Even the applets that are developed provide the best examples of what I mean by Potemkin villages; they lack the equivalent features of their equivalents on other platforms (for example, the elementary Photos app lacking sync) that elevates them from mere tech demos for the platform to something someone would want to use.
It doesn’t help that most applications used by people that are cross-platform, since they won’t conform to that desktop’s UX, are not going to fit in very well with the desktop. You might not like menu bars, but most applications are going to have them. While people basically treat the Windows HIG like toilet paper, if they even read it at all, most cross-platform applications use a lowest common denominator that basically fits with Windows. When most of your applications that you need follow outside guidelines, the desktop itself starts to feel alien.
The other problem is that being cross-platform effectively means that the HIG you make will likely be ignored by any “complex” applications since most of those tend to be cross-platform. As an example, Gnome tried to get rid of notification icons (you know, the ones that live in the panel). I honestly agree with this and consider them an anti-pattern for most applications (how applications love to use them to provide persistence for no reason). The problem is Gnome’s edicts have little affect outside of Gnome’s sphere of influence; they feel like armchair designers trying to boss around big companies at worst. Slack and Nextcloud for instance, will likely continue to use notification icons, much to the chagrin of everyone on Gnome who now has to have an extension for the notification area installed, like it or not. Not a great user experience.
Cross-platform applications not following the system HIG can be annoying to platforms with long traditions of a HIG like the Mac, but it’s less of a big deal there. Obviously, the Mac is big enough and the users loud enough to get special treatment from those cross-platform applications, but the Mac has long had its own native ecosystem, and these applications tend to have the intricacies of a “complex” application that the surface-deep stuff in Linux lacks. As a long-time Linux user (who has a Mac on the side nowadays), I’ve long been jealous of the Mac indie scene, which has long sustained those applications that are very platform specific, yet have depth to them.
Another part of the Mac with complex applications is that the APIs for the system give you a lot of that substance for free; not just the application-specific intricacies, but the system-wide ones that make applications feel consistent with common functionality. You get a rich Edit menu (not just cut/copy/paste that enable as needed, but little things like text case adjustment) as part of giving into Cocoa and the system HIG, you get a File menu working like the rest of the system with minimal effort when you give into the system APIs for a document model, etc. It gives application a benefit for tying themselves into the system instead of going cross-platform, both for the developer (less work to achieve a good result) and user (it works like everything else). For these Linux desktop environments, there’s no carrot or stick (both in the sense of incentives, and the fact there’s nothing equivalent to use that you want to incentivize), and no examples to follow either. When all you have is just Vala and Gtk, what building blocks do you have to reuse?
I don’t know how to change the situation of these desktop environments that feel only skin deep in terms of complexity and intricacies. If we look to the Mac as an example (a very common point of comparison, but the healthiest example of a unique desktop with an ecosystem that sustains), it seems the culprit is a lack of building blocks (to build the applications with) and bodies (to build, use, and pay for the applications). Of course, there could be some other means of developing a healthy desktop with deep yet integrated applications; many of those unfortunately died out due to economic factors. These Linux desktops always feel like they’re persistently on the cusp of being interesting, but never actually being so. I don’t know if that’s more praise than the contempt that people usually display for Gnome, or if it’s faint damnation.
Appendix: the autocracy of design
I’ve made the implication that Gnome at least has a very…. top-down (one may call it paternalistic) point of view on user experience. This usually gives them a poor reputation outside of Gnome’s own circles. I have to wonder – is there some impedance mismatch between designers and the OSS community? Or is this simply a worldview imported from a different part of the industry that makes their outlook incompatible with the field?
Design feels like a field where taste is less collaborative and more made – that is, design is an inherently dictatorial field. This goes beyond the typical examples of industrial, UX, visual design, and even things into design as architecture for a system (i.e, Dave Cutler with VMS and NT). I have to wonder is this is the root of the problem. If successful design requires top-down leadership to enact and make sure its vision is consistently executed, it conflicts with how most projects are structured around programmers where collaboration is simply the norm. It’d also explain why many OSS projects find it easier to copy design instead of lead it, and why designers aren’t attracted to OSS projects.
Alternatively, perhaps we have a narrow view of how design works. Circling back to the Mac as what’s considered both good design (enough that everyone’s wanted to copy them for decades) and a good example of autocratic design, perhaps we’re too intent on cloning less its UX, but the factors that created its UX. Think of dictatorial types like Jobs, Ive, and their inspirations like Braun; every designer seems to want to be like them. Maybe what we need is design that fits the OSS community, that’s collaborative – is such a thing possible? Would it compromise the design process? Or is it already here, and projects like Gnome simply prefer trying the top-down way? I lack examples of such a thing, but I would love to know if they exist and would be a good idea.