The State of the UI

This is a culmination of arguments I've been making for at least a year now, hopefully it's more cohesive in print that it has, at times, been verbally.

I'm glad of Unity, and Metro, and GNOME Shell, and Plasma Activities, and whatever-Apple-is-calling-it-when-they-shove-the-iOS-interface-into-OSX.  I'm glad of tablets that do computing tasks well, and phones that move data around easily.  I may not like all these interfaces, but I'm glad of them... because I cannot stand the mindset that the Windows 95 UI, and the Mac classic interface are the best we can do.  It's time to move past the task bar, the Start/Apple/GNOME/Kicker menus, the system tray.  It's time to have the clock elsewhere than the rightmost corner.

If you disagree, I understand.  Change is hard; we naturally resist it.  But, at the very least, recognize that you are the problem, not the change.  And just keep using your old software.  No one took away your Windows 3.1 floppies when Windows 95 came out.  No one will take away your Windows XP CD when Windows 8 comes out.  No one took GNOME 2 off your old distro CD.  Heck, openSUSE 12.2 will *still* ship a community supported option for KDE 3.  Despite the gargantuan task of moving SUSE Linux Enterpise from a 2.6 kernel to a 3.0 kernel on a Service Pack release, that Service Pack still includes GNOME 2.


If we're ever going to get out of this funk, we're going to have to stick some new ideas to the wall.  They won't all work, that's a given.  Heck, most of them probably won't even be usable *cough*Metro*cough*, but that doesn't mean the innovation should stop.

In the Linux community though, some of that innovation is coming at great expense. Specifically, the popularity of Ubuntu Linux, and its decision to build Unity, are the cause of great strife and fragmentation.  Although Unity is, ostensibly, an open-source project, no other major distro has picked it up: Unity is synonymous with Ubuntu, and that's fine, except for two issues:

1. The replacement of gnome-shell with unity fosters a community of GNOME hate... and hate is always a bad thing.

2. A number of innovative projects are now being developed with unity dependencies, effectively isolating them from the rest of the Linux community; apps like Fogger, Quickly, and Visual Ruby.

I, for one, use gnome-shell every day.  Did I resist it at first? Sure... change.  But given the time to understand "why" it is, and to get used to how it is, I can say for certain: I'm more productive with GNOME 3 than I was with GNOME 2.  GNOME 3, which is synonymous with gnome-shell, has a level of integration, and extensibility that I've never experienced before. The pomodoro timer extension marks me busy in my universal IM client.  I don't have to have my calendar app open to get reminders.  I don't have to know, before I start working, how many virtual desktops I need; I always have 1 extra.  If I'm in the zone, two clicks send all popups into oblivion.

So, free software folks: please please please stop hating on gnome-shell.  GNOME project is breaking new ground here, and as usual, they're doing it with plenty of thought about "why".  If you don't get it, go read about it.  If you get it and don't agree, just use something else.  But stop the hate.

And while you're at it, stop writing cool software with dependencies on Unity.  When SUSE developed the Kicker menu for KDE, did we require a YaST module to configure it?  NOPE.  When we got good color support, did we limit it to the open-source ColorHUG colorimeter? NOPE.  So don't stack all your innovation on Unity.  Use dbus to pass stuff around.  Or sockets.  I'm so disappointed that a beautiful framework like fogger, bridging web apps to local interfaces, *requires* Unity.  Nothing about its feature set is dependent on Unity.  But, because of that architectural decision, *every other distribution* will use something else, eventually, to do the same task.  That fragmentation hurts Linux.  Ubuntu wouldn't be in its position without the contribution of countless developers on the Kernel, and Debian, GNOME, OpenOffice/LibreOffice, Gstreamer, Mozilla, etc.  In other words, Ubuntu is the top Linux desktop, because other projects made code that was not exclusive.  Now that they're the top dog, the importance of distributing a project seems much less important.  Which makes me grumpy.

Okay, so its not much more cohesive, but at least I got it out of my head.  I'm looking forward to your comments, and the next new interface design.


  1. Like many others, you are blaming Ubuntu and Unity of "fragmentation". When Unity came out, it came with fewer customization options compared to say, Gnome 2 or KDE. Nevertheless, when people see Unity, you know it's UBUNTU...no fragmentation there.

    You put Gnome Shell on a distro and ask the average person what it is and .....???...Fedora if it's blue...Opensuse if it's green...Arch if it's some neck beard shouting "I use Arch"????

    Then you get all these modified Gnome 3 distros and their "I want my own desktop shell" too ie, LinuxMint with Cinnamon, PearOS, PinguyOS, so on and so forth.

    Who's causing the fragmentation now? Unity may have been unpopular in the beginning, but you can't really say "Ubuntu" caused any fragmentation. That falls to the Linux community in general with their "I need every option under the sun, just BECAUSE it's Linux".

    1. @Dom... not really; I'm not blaming Ubuntu for the general fragmentation in Linux desktops... that's a whole nother issue.

      I might blame Unity for not spreading innovation, but I haven't dived into the code deeply enough to know for sure. Ubuntu is encouraging a new, bigger development community *which is great*. But a substantial number of these new projects *depend* on Unity.

      Does Unity provide some standard interprocess communication, like DBUS? If so, those new developers should be using it. If not, then fine, I'll blame Unity.

      Over at SUSE, a lot of effort has been pouring into doing the opposite; separating the layers of YaST into independent modules ( libYUI : https://github.com/libyui/ , and YaST proper : https://github.com/yast , for example).