My Thoughts on GNOME Shell

Before you tl;dr or flame, please RTFA.

Disclaimer:
I do not wish to offend anyone in the writing of this article. I just feel the the core GNOME developers and the community at large needs to stop with the hype about GNOME 3.0 and slow down to think about a few things. I am not only going detail what I dislike about GNOME Shell, I'm also going to propose what I personally think is a better idea. These are my personal opinions and I really am not trying to step on anyone's toes. If I had the time and expertise, I would be committing a new patch every other day.

Also note, not all the pictures I provided here are mine. I have tried to cite the source I found it in where possible. Please notify me via comment if I got something wrong, and I will be happy to change it. However, I hate nitpicking, so don't nitpick (eg. It's GNU/Linux not Linux). This is my view of the current situation.




After the announcement of KDE 4, an even before, many thought that GNOME was stagnating. While Qt 4 and KDE 4 were bringing out cool new features and "redesigning the desktop", GNOME seemed to be stuck in the past, perpetuated by it's old momentum (eg. Firefox uses the native GTK theme, many apps are written for GTK, etc.) Even if not completely true, many users saw the announcement of GNOME 3.0 as a direct response to KDE 4.

However, I am unsure about the future of GNOME 3.0 (and it's associated GTK+ release) and the Linux Desktop in general as many programs use the GTK+ bindings (eg Firefox) and it's regarded as the standard and default for many distributions (including Ubuntu, the current most popular desktop Linux and the one most newbies see first). I have some deep reservations about GNOME 3.0 and it's flagship new desktop design: GNOME Shell.

Basically, I don't think it's a bad idea per se, I just think that it's not exactly what users need or want. KDE 4 was a major leap in terms of technology from KDE 3.5. However, KDE 4 is not a major paradigm shift in how user's use their desktops. It's very similar but much more powerful. Developers can do amazing things thanks to all the new updates in QT 4, but it's not a complete rehash of ideas and designs that have been developed already and are already familiar to most users.

Here is a picture of KDE 3.5:

The default KDE 3.5 Desktop
(Picture from Flickr)

Here is a picture of KDE 4:

The default KDE 4.2 Desktop
(Picture from Wikipedia)

Notice they are very similar from a user aspect. Click the K, choose and application, action, or recent document, and open it. It's not too difficult. Or at least it wouldn't be if the developers didn't inist on having a K in every single application name (no seriously, what is up with that?). KDE interfaces also fail in that their complicated and filled with options when sane defaults and a neat Preferences pane could hide it, and that their dialogs are a little unintuitive.

GNOME on the other hand, with a history of evolution over revolution, has always been familiar and easy-to-use. Interfaces in general are very similar and menu options (like About, Help, Preferences) are all located in the same place. It's intuitive and simple. It does not force the user to adopt a new way of thinking, nor restrict what they can really do.

GNOME 3.0 on the other hand, is not. GNOME Shell tries to force the user into a new paradigm of computing. When most computer users can barely tell the difference between a web browser and a search engine or the difference between their operating system and a their word processor, trying to "innovate" and "invent" new, complicated ways of doing the same thing is just not practical.

I compiled GNOME Shell and tested it out (again) to see whether it had made any progress. Here, are my thoughts:

What!? GNOME Shell ate my screen!

GNOME-Shell Activities Menu
(Picture from Flickr)

This is probably the first thing that irked me. It's very cramped. I tried it on both my 17" laptop monitor my 22" widescreen desktop monitor and had the same feeling. Part of this feeling stems from the fact that clicking that the Activites menu takes up a large portion of your screen and suddenly zooms out of your desktop. This is a waste of screen space and an inefficient way of trying to open an application.

A smaller dropdown menu might be better. The user should be able to choose when to Zoom out of his workspaces and seem them laid out on front of him similar to Compiz Fusion's Desktop Wall plugin. By pressing a key combination, they user can zoom out or back in. They can move windows around the different desktops and zoom back into a specific desktop by double clicking it. Adding a plus or minus icon wouldn't be too difficult.

As I understand it, and the GNOME Shell developers are implemented the ability to drag and drop application icons from the Applications menu section or documents from the Recent documents menu section on to an arbitrary workspace, thereby launching the app or opening the document. This sounds pretty nifty, but is extremely confusing for users. I showed this feature to 3-4 people and even after showing them they were still confused as to how it works. They just ended up ignoring the feature altogether and just clicking the Application icon.

This feature poses problems though. Because of this, users can no longer figure out how to make links on the desktop or panel by dragging the icon from the menu onto the desktop or panel, like they've been doing since at least Window 95. That is not a trade-off a lot of people are comfortable with. Don't remark how it's not necessary. You can't stop the user from doing what they want to do. User's blindly open email attachments because they want to see the picture of the "kitten" they were promised in the Subject. They don't care. They just want to do something, and they won't let the environment or rules change how they do it.

Is there a Solution?

The panels can stay persistent on the top and bottom of the screen, staying there even when one zomms out to the workspace overview. When one zooms out, dragging the icon onto a desktop launches it. When on the regular view, dragging creates a link. In either mode, dragging onto the panel creates a link.

Other thoughts about the Activites menu

I stopped using a Menu altogether a long time ago. At first I began launching applications via the Terminal or using the Run Dialog (Alt+F2) box. However, I found something MUCH better.

If anyone has used GNOME-Do, they will know what I mean. It's extremely useful. One can launch applications, open documents and folder, install software, visit bookmarks and URLs quickly, open a chat, and do a variety of actions easily and quickly.

What if we had GNOME-Do integrated into say, a menu? Mac OS X has a universal desktop search called Spotlight. One can search for Files, Folders, Applications, Emails, etc. and it's all organized. GNOME has a similar applet called Deskbar. Deskbar had problems though: it was ugly and it did not play any prominent role in how the user manages their desktop. It wasn't really advertised and few people knew about it.

If instead of a conventional menu, the user will provided with a drilldown search (similar to what GNOME Shell is aiming to provide). It would clear up a lot of confusion. Deskbar + GNOME-Do = Awesome.

Adding functionality would be like adding plugins to GNOME-Do or Deskbar. By typing in search terms, one could search for recent documents, applications, contacts, emails, files, folders, media, their bookmarks, the dictionary, and do simple math.

Here are some mockups. Sorry. They look pretty ugly, but I just wanted to get the point across. The mockups sort of represent what I have in mind, but I think it could be done better and more GNOME-Do like.

GNOME 3.0 Alternate Menu Mockup

Note, I haven't exactly figured out what one would do if they only had a mouse. One possible idea is replacing the text "Search" with a Dropdown containing "Search", "Applications", "Places", "System", and "Favorites". By selecting one of these of the dropdown, one could easily select which navigate soley using a mouse.

2. The two-panel layout.

Although I personally use only one, the two-panel layout that users have been accustomed is very well designed. It's useful: window list on the bottom, and menu, launchers, applets, and tray on the top. This is good and I encourage developers to stick with it. I like this. Kudos to the developers for keeping this.

3. The desktop becomes cluttered very quickly.

This is a It's a very common sight to see. Cluttered desktops with hundred of icons scattered everywhere. Most of this is just whatever the user downloaded off of the Internet. People just save everything to their desktop. It becomes a huge jumbled mess.

Is there a Solution?

It's ugly and disgusting. But there is a solution. In every desktop user's home folder there should be a folder called Downloads (it should also probably aggregate downloads saved in other folders, but that's a feature for another day). Add a Recent Downloads section to the Menu and a launcher on the panel that takes the user directly to their Downloads folder (or a pretty way of displaying it). OS X kinda solved this problem with a Downloads stack. Windows hasn't exactly gotten the hang of this yet (the Desktop Cleanup wizard is not a solution). But Linux can! The solution is very simple, and implementation should be very quick and painless if we have a menu like the one Deskbar+GNOME-Do mentioned earlier with a plugin interface.

Another way to solve this problem would be to take a page out of KDE 4's book. In KDE 4, using the new plasmoids system, one can display and folder's contents or even the contents of multiple folders on the desktop easily. This is pretty much like saving it to the desktop, but the plasmoid can be hidden, removed, or another plasmoid can display a small list of the recent downloads. Either way, that's more useful than silly weather icons, stock tickers, and yet another Now Playing widget on your desktop.

There are other solutions. Just do something. Seeing screens full of random icons is very annoying. I think the desktop should be a wallpaper, some widgets, icons for volumes (flash drives and the such), and maybe a launcher or two for that stubborn Windows user.

4. Javascript on the Desktop!? And "Developers, Developers, Developers."

This is not necessarily about GNOME Shell's usability, but about it's implementation. I know I'm going to lose this argument because Clutter has so much momentum with the GNOME developers and it's supposedly, "The next big thing".

There is a lot of buzz and hype about Clutter and JavaScript being used to build the next GNOME desktop. For one, this isn't really JavaScript. It's sort of like watered-down C. In fact it's not even that. It's something with vaguely JavaScript syntax and platform bindings to GObject and GTK+ and whatnot.

There are plenty of better languages to be used. We could use Python, C, C++, or even languages designed specifically for GNOME: Vala and Genie. Vala and Genie both output C files without sparing us the ability to use high level languages and concepts. We could even use Lua, as it's a much better language for embedding things than JavaScript.

So far, the argument for JavaScript is that it doesn't bring in a bunch of dependencies or libraries. It does, considering your binding it to GTK+ anyways. Many GNOME apps (in fact many core ones) are written in Python, C, and C++ anyways, so the libraries are already loaded.

The other argument I've seen, is that a lot of people know JavaScript and it means more people will develop applications for GNOME. This is a silly idea. People will misuse any language, especially JavaScript, trying to create stupid effects that they have somehow deluded themselves into thinking are pretty (excluding the amazing AJAX and jQuery/mooTools/scriptaculous/etc. stuff I've seen properly used). Instead of changing the language, why not develop tools that make development less tedious. We need better editors (besides vim, emacs, nano, and gedit), better debuggers, more documentation, better toolchains, more tutorials, and scripts for writing all that boring boilerplate code.

It doesn't matter what language you make people program in if you don't give them adequate tools. It all boils down to this: Hardware is a platform for software, and unless you make that platform easy to develop for, no one will want to write software.

We're not getting paid to write free software (or at least most of us aren't). If I'm not solving problems and writing something cool, I won't write it. If it's tedious, I won't write it. Just pushing JavaScript and Clutter down everyone's throats will not change that. Tools will.

Conclusion

I really want the GNOME desktop to succeed and prosper, but I think the developers need to actually watch users (beginners, average users, power users, etc.) and how they use the desktop. For example, to open a document, my mom opens Firefox and uses File>Open to open the File (which of course uses gnome-open to open the file in a OpenOffice, evince, Abiword, etc.)

Most users have no idea what they are doing (although they think they do). Apart from "reinventing the desktop", we should have a large set of video tutorials (HTML 5, YouTube, etc.) that teach users to do simple things such as open files and applications, close applications (you wouldn't believe how many people just minimize/open a new window), and do other basic stuff.

In short, users are stupid. And over complicating things will just push users away. Users want to feel in control and empowered. They want to enjoy using their machine. They want to be able to do things quickly, and being able to open commonly used applications, recent documents and downloads, quickly do some arithmetic, or get a definition really speeds things up.

Please comment!
Please comment, link, digg, reddit, delicious, twitter, dent or whatever to this article. Also, I want to see your mockups and hear about your ideas. We can build the next GNOME desktop the right way.

20 comments:

Anonymous said...

I personally prefer python over javascript. Your argument about javascript I not really understand? What is your point? What is actually wrong with it? Whats bad about the language?

The requirement was a highlevel interpreted language to be more flexible within the development process. As far as I know Javascript was used because beeing simple to embed. While I really love python its interpreter is not designed to be embedded and it sucks at it so I can understand their decision. And anyway, JS is not a bad language.

Ferk said...

I think that the best for a new user is to have one single way to open applications.

Currently new users are confused on all the ways you can open an app (take your mom as an example): menu, run dialog, launcher in the bar... most of the users will stick with one of these, and all of this ways have drawbacks.

I think that in GNOME 3.0 it is intended that all of those ways are replaced with 1 only single simple way that just works. And the answer they got is mixing the gnome-do way and the menu: the result was the overlay mode. It has a search-box in there, what you are talking about is what is being worked on already.

Because of this philosophy, there are no plans on having launcher buttons in the top bar, but there's an optional sidebar that can hold widgets for that if you want (although I think it would be better for non power-users to not have this disabled by default).

Btw, I don't think that the overlay mode is inefficient nor a waste of space (in fact, drop down menus overlap the current desktop and thus make a less efficient use of screen space by reducing visibility). Also the overlay zoom removes the need of a pager or any other external applet for managing desktops, these other tools are normally confusing the normal user and only power-users make use of them.

The layout is an all-in-one interface, once the users understand it they won't need to understand anything else (and I think it's way easier for a user to understand a graphical layout than learning how to use gnome-panel pager/launchers/menu combination).

Ferk said...

sorry.. typo about the sidebar: I think it would be better for non power-users to not have it enabled by default.

gfdgfdgdffd said...

"Adding functionality would be like adding plugins to GNOME-Do or Deskbar. By typing in search terms, one could search for recent documents, applications, contacts, emails, files, folders, media, their bookmarks, the dictionary, and do simple math."

Funny looks almost exactly the same layout and concept of Mac OS X spotlight, even down to the maths

Anonymous said...

I totally agree with you. I hope we will be able to switch between the "old" mode and that overlay mode.

The new system is, for me, totally anti-ergonomic. To find an app you have to switch between mouse and keyboard all the time... see screencast 4 : http://live.gnome.org/GnomeShell/Screencasts

And if you don't remember the name of the programm or don't enter a good keyword, you'll be stuck. That's just wrong.

I switched my father to ubuntu a long time ago, but with that new gnome he sure will return under windows... but I'll install him Kubuntu ;)

oliver said...

Regarding the Icon Jumble On The Desktop: from my experience the Desktop is simply the most prominent folder that is always available. In every File Dialog it is listed at the side, and there are lots of button (eg. in Nautilus) to open it. So saving a file to the desktop is simply the easiest way.

This might change if the Zeitgeist stuff is added: I could imagine that people get used to not "store a downloaded file someplace visible", because they can find it in the (prominently-placed?) Zeitgeist window, as recently-added file. Dunno if people could get accustomed to that, but I have the habit of saving files to the Desktop myself and would like to have a better alternative.

Btw. how about making the desktop the Zeitgeist window? Some people already organize their desktop by drawing areas on the background wallpaper and arranging icons there... Maybe Zeitgeist could automatically create these areas (by topic, or one for every day of the week), and display the matching files there! The desktop would be automatically cleaned and still have all important files, including the latest download!

Maybe this is just the usual late-night euphoria, but right now I think this is an awesome idea :-)

[Btw. this is the 10th try now... The comment form on this blog totally and utterly fails. I tried with various browsers, and either the post is lost after submit, or a captcha image is displayed but the text field is hidden. I never thought a comment system could be that broken.]

Staz said...

I don't understand why you mix Clutter and Java toegether, appart from the fact that they are bot h used in Gnome Shell they are not really related. Clutter is "just" a library. Written in C and which can be used in javascript but also other langage (e.g. python)

Also the main point of Gnome 3.0 is to drop all the deprecated stuff and move the plateform forward. I doesn't seem like there is a clear consensus on wether or not it will use Gnome Shell.

But you do point some interesting issues (even if I don't agree much with the part again javascript)

PS : I can't use your captcha in Firefox btw, the entry box to enter it is hidden and unaccessible. In konqueror it's hidden but you can mouse scroll to it. And the box is way to small. If you really want comment you may want to fix that.

Denis Cheremisov said...

Gnome-shell really sucks. Ugly, slow and inconvenient. I have no idea how they suppose to make it usable, I don't see any way to do it incrementally, it's initially faulty way in user experience.

John Baptist said...

I think the GNOME developers got tired of essentially just copying MacOS, which is, I can imagine, a pretty depressing enterprise. So they decided to do something "outside the box," which in theory I encourage, although the videos I've seen of Gnome-Shell look horrible. I wouldn't use it. It's complicated and confusing. It seems that in their rush to copy MacOS, GNOME developers have forgotten the underlying Mac credo: simplify, simplify.

The thing we should _really_ be copying from MacOS are the elegant application packaging system, wherein all applications are self-contained in their own directories, rather than spread out of /usr/share/icons, /usr/bin, /usr/share/man, /etc/default, etc. If every program existed in a self-contained directory, it would eliminate the need for links/shortcuts/.desktop files (which is really a silly, confusing kludge anyway) and would even partly eliminate the need for the array of Linux packaging systems (deb, rpm, etc). Unfortunately, a change of that kind is a huge undertaking and would break a lot of things, whereas anyone can come up with a half-baked UI on top of a more fundamentally flawed system.

Which is all a verbose way of saying, I agree. And I do think that a Quicksilver/GnomeDo-like UI is the way to go, especially as that would play in nicely with a tag-based file system, which I also think is the way to go.

ali65 said...

Tools which are available for that language will make that language win. (I know this was said already).

I wonder what IDE and what Unit Test/Test Automation Framework the Gnome team has selected to work with. How about Release Control and Dependency Management solution? Git is an excellent SCM, but that is only one of the many tools what is needed for project of this size.

Kaj-Ivar said...

First of all, thank you for saying all this. I appreciate it when people say what they think.

Personally, I absolutely love Gnome Shell. It looks very nice, and it speeds up my way of doing everyday computer tasks, by being able to select and browse the programs which are currently open in an improved manner. The activities-menu is also easy and fast to use, especially with the drag-and-drop feature between menu and desktop.

I agree with some of your arguments. When you say there's a lot of wasted space, I completely agree. For example, when I have only two desktops open (which happens often), HALF of my screen is simply black, with nothing on it, when I open the activities window.

Furthermore, I agree with the language problem. Vala, for example, would fit better in the Gnome philosophy. But here, I don't know the real reasons for Gnome using Javascript.

On the other hand, I don't agree when you say it will be far too difficult for non-technical users. Is this some prejudice of tech guys who think non-tech people will never be able to adapt themselves to new interfaces? Or is it just because everyone is so afraid for the unknown? If someone is even a little bit open, they will be able to accept differences. My mother, for example, who is as non-technical as one can get, moved easily from Internet Explorer to Chrome lately. You might say it is just a minor change, but still. Now, a couple of months ago, my sister's Windows installation crashed. Fortunately, I had already installed Ubuntu before on her laptop, so she could start using Linux right away, while she was waiting for me to reinstall Windows for her. Well, I never did. After explaining her a few things, she managed to use Ubuntu for everything, and she is know extremely happy with this change of OS. And, is this still a small adaptation? I don't think so. If someone can survive an OS change, why couldn't he survive a new and improved desktop look?

Moreover, we don't want Gnome to become exactly like Windows: we aren't going to copy and reproduce every good mac feature without even modifying it. Of course, when something is better on Mac (like the Spotlight), we can try to develop something with the same possibilities, while still being unique.

Best regards,

Kaj-Ivar

ray1claw said...

Hell I agree! Gnome Shell sucks to the core.

All your reasons are credible in my book. But the major reason for me not liking the new gnome-shell is a very basic one : Flexibility.
When I turned over to the open side and installed linux over windoze, the one thing that really inspired me to do so was that the interface was as customised as one would want it to be. The beginners or people who resist change could keep the default 2-panel setup, but others could well put anything anywhere they pleased. Spawn as many panels you want. Put anything on any panel. Make the panels look sexy by putting in transparency and/or a background image. You name it. And the cherry on the icing was that if you dont like how a certain DE looks or feels, just f**kin change it to something that fits you better. Such customizability is not possible with Windows OR Mac OS.

Installing the Gnome-Shell made me seriously mad when I couldn't even right click on the single panel it had to access some functionality (talk about features). And yes, zooming out everytime for the overlay mode really pissed me off too because that constant zooming in and out even for switching between applications made me lose focus on what I was doing in the first place.

@Kaj-Ivar : There are a majority of people in this world like the ones that the author describes. And then, there are other kinds of people as well. Designing a DE that caters to all of them is a difficult task and the interface designer should consider ergonomics coupled with intelligent usage of every single pixel available . This is more important than it seems. People who resist change can survive an OS change - but only if they really have to. Like you sister for example, she was expecting you to install Windows back onto her machine, but you didn't do it. So you sort of forced the linux desktop down her throat, and she really appreciated that afterwards. But every single person does not have the need or want to be bound to an alien OS/interface/environment intentionally and most people dont have evangelists like you around them to force them out. Besides, the job of a truly open and flexible interface should be to allow the user to access the same functionality in several different ways, such as opening a file using the file manager or the terminal or gnome-do or sometimes using the open dialog in firefox. It all gets the same job done, and the users are happy in doing it their way and not the OS's way.

Flexibility is one gripe I have against Mac OS, because in order to maintain consistency they strictly force the UI design onto their users making it either their way or the highway. Thats one of the gazillion reasons I replaced it with ubuntu months after I bought a new MBP.

The moral of the story is, the OS should adapt to the user and NOT the other way around. If the user is naive (which in most cases the user is), smart & cool default interfaces settings should be chosen.

Regards

ray1claw

ReinoutS said...

If you want to discuss these issues with the developers, there's no better opportunity for that than the GUADEC conference, July 26-30 in The Hague, NL. See www.guadec.org.

Inconexo said...

My major problem with Gnome Shell is that I didn't find a good way to quickly switching applications. Alt+Tab action didn't bring me the last application, so it forced me to navigate to find it. And too much zoom in and zoom out made me dizzy.

CC said...

well, gnome shell looks bad from a newbie point of view. I currently use gnome with compiz and I use compiz to avoid video tearing. It has no effects, just the stock one provided as default and a few enhancements to speed the refresh and vsync. I even keep the default icons and also switched the theme to windows me from gnome-look. it's simple and it works just like my windows did but way way better. It's not cluttered. Sometimes i tweak but I always end up coming back to the really stock look. gnome shell will either grow on new users but it won't grow on me.

Anonymous said...

There is one thing I really do not understand in usability testing and this is why the typical target is the 'new user'.
It feels like the new user is someone who has never used a computer before. The new user has not seen Windows, the new user has not seen MacOS, nothing. The fact is that most people who will use Gnome 3 are people who have used Gnome 2 before, or at least some other user interface be it Windows 7 or Mac OS. I don't understand the need to constantly invent new UI paradigms. The ones that have stuck with us have done so probably because they work.

The first hypothesis about the UI that is supposed to be verified in GnomeShell usability tests (http://live.gnome.org/GnomeShell/Design/UsabilityTesting/PhaseI) is the following:

1. A persistent window list is distracting to the user. A user will be less distracted if the window list is not always visible on the screen.

How about another hypothesis:

1a. A user would prefer to be able to switch between running applications with just one click instead of two clicks

The taskbar is one of the best achievements for desktop UI design, I remember how much of a difference it made when moving from Windows 3.11 to 95.
The decision to get rid of the taskbar is similar only to Microsoft's decision to get rid of the application menus and replace them with a loosely structured collection of icons (the ribbon UI)

Anonymous said...

hi

generic cialis said...

In principle, a good happen, support the views of the author

Anonymous said...

Personally, the thing that is making me the most trouble in the current Gnome Shell (or at least on my build of the current code) is switching between apps. I'm used to the bottom panel, but switching with L_Alt+Tab will be probably faster once I get used to it.
Oh wait, the Super Key switch between overview and the app. :D

https://webstats.gnome.org/GnomeShell/CheatSheet

Anyway, I'd leave judging for when they'll make a public stable release.

Anishi Ganatra said...

Great post here. Such useful and also informative post and like to share with my embedded design service provider team who are working at product development company. I am sure this informative post is helpful for them.

Post a Comment