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:
(Picture from Flickr)
Here is a picture of KDE 4:
(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!
(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.
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.