Rockets are Improvements

I've been meaning to write something like this for a good long while. I finally got off reddit and decided to actually write this after a seemingly harmless comment on identi.ca uninentionally led to a large, charged discussion and probably one of the longest discussions ever on identi.ca. In fact, it even contributed to setting a record for the most dents per day.

And now for something completely different: a list of small improvements Linux (or rather, GNOME) could benefit from.

Linux is pretty awesome. I use it exclusively on all my computers an have converted almost all of my family and many of my friends into Linux users. While Linux is easy-to-use and powerful, it could stand a few improvements.

As always, there is a cautionary disclaimer: these are my views and ideas. Please do not nitpick and try not to offer the same old FOSS answers (do it yourself, you have the code, this stuff works fine, your idea is dumb, etc.) I'm not going to try and go into implementation details. These are just little ideas that could help improve the GNOME desktop (and maybe KDE, XFCE, etc.)

I also know that Blogger has a habit of swallowing up comments. I'm sorry, but there is nothing I can do. You should type your comment up in your text editor of choice and keep trying. I want to hear your comments and your ideas.

Universal Shortcut for the opening the Preferences dialog



In almost every app, the preferences dialog is located under Edit > Preferences. I've grown to expect this from GNOME apps and I like that it's always in the same place. If it's not too much to ask, could every app have a standard shortcut to open the Preferences dialog? Just as Control+W closes the current document, Control+O opens a document, and Control+Q closes an app, there should be a standard shortcut for opening the Preferences dialog. Little things like this would go a long way towards making the desktop consistent and easy-to-use.

Lock Screen in GNOME Power Manager



This just seems like the developer accidentally forgot that option.

Using GNOME's Power Mangement tool, my laptop automatically goes into Suspend whenever I close the screen and it's on battery power. However, there is no option to make the laptop simple Lock Screen when the lid is closed and I am on AC power.

I also think that we should be able to set any command we want to be run when the lid closes or the power button is pressed while on AC power or battery power, but I'll settle for just adding the Lock Screen option.

NOTE: If I can, I might try to submit a patch for this. Someone with more experience with the GNOME codebase can do it instead if they would like.

Video tutorials on how to use the desktop



Most computer users do no understand anything on their desktop. They don't understand what minimizing and closing windows mean. Many don't know the difference between their OS, their wordprocessor, their search engine, and their browser.

A set of video tutorials (Apple and Microsoft do similar things) that show the basics of the desktop, showcase nifty features or effects, and clarify computer jargon would hopefully educate a few users and take away that fear of Linux being unfamiliar or difficult to learn.

There could be a YouTube channel or something.

Possible video subjects:
  • how to open applications

  • show examples of different desktop hardware (tower, monitor, keyboard, mouse, etc.)

  • how to connect to the internet (wireless, etc.)

  • how to close, minimize, and manage applications and the difference between close and minimize

  • what FLOSS is

  • how to configure basic things around the desktop (background, theme, etc.)

  • how to change one's password (the simple GUI way)

  • Virtual desktops

  • how to install, remove, upgrade applications, and add repositories (distros would have to take care of this one)


This is just a small list to get ideas churning.

A GTK+ Sidebar widget



This is something I've wanted for a while. One thing that has been severely lacking in GNOME is sidebars. Every app has to write it's own generic sidebar-type widget. It's silly and it's re-inventing the wheel. It's a waste of time. Having a simple GTK+ widget for generic sidebars would make writing apps a lot easier.

A sidebar would be a treeview with categories and items. This sidebar class would take care of the boring things (initalizing treestores and stuff) as well as providing simple, useful functions. Something simple like this would make it quicker and easier to leverage consistent sidebar functionality in GNOME apps without having to write repetitive boilerplate code.

I've begun writing a PyGTK widget for this, but I'd need to read more docs and more code before I attempt writing a C/Vala version.

Sidebars have a lot of potential as UI elements and it would be a shame if they didn't get any love. A GTK+ Sidebar widgets would help standardize sidebars accross applications and also give themeres the ability to specify a different look for sidebars and a different look for regular treeviews.

Revamped Places bar in Nautilus



Leveraging the GTK+ Sidebar widget I just mentioned, it would be nice if all volumes were under a Volumes category and all Network places (and devices located using Zeroconf, etc.) were under a Network category.

Nautilus also has the ability to bookmark places. In a web browser, users have the ability to put a bookmark in a folder and nest that folder in a folder and etc. It would be nice to extend that functionality to Nautilus bookmarks using categories in the sidebar.

Convert to... in the right-click menu in Nautilus



When right-clicking something in Nautilus, one can do a variety of things: delete the item, move it to the trash, open it with a specific application, and view properties. One useful thing to add to that list would be a menu for Converting to a specific filetype.

Converting files in Linux is needlessly difficult, usually involving a wide variety of command line tools and gui apps. A while back, there were a set of scripts on gnome-look.org that provided functionality similar to what I'm describing.

For example, when right-clicking a JPEG, I could convert it to PNG, or when right-clicking a DOC, I could convert it to ODF. This could also be used when selecting multiple files.

Send to in Nautilus should be changed into a menu



Send to (also on the right-click menu) should be changed into a menu of items, rather than a launcher for a dialog.

Categories in the Appearances manager



When I'm scrolling through the list of my backgrounds, everything is all mixed up. I'd like to be able to organize them into categories like Abstract, Nature, Anime, CG, Family, or whatever else I feel like.

The same goes for themes. Where it shows the overview of your themes, I'd like to be able to categorize the Light, Dark, Development, Compact, and otherwise.

View files by access time in Nautilus



Many users are baffled by the file system and can't remember where they saved a document or what they named it. All they remember was the general subject and that they were working on it last Wednesday. Just as we have Icon View, List View, and Compact View in Nautilus, we could have a view called Time View. Something similar to Codename Nemo, but a bit more polished up and simplified.

View files by place accessed



Going along with the previous idea, it would even cooler if we could leverage GNOME's new geolocation features and display files organized by where they were accessed.

Seperate Evolution into multiple applications



Evolution is the email client that can. It does calendaring, schedules, contact management, tasks, newsgroups, emails, and more. Before anyone recommends switching to Thunderbird or Claws Mail, I've tried them. I prefer Evolution.

Evolution also has a slightly confusing UI (admittedly, it's easier to set up and configure than most) and it's widgets seem off compared to the rest of the desktop. For instance, the treeview headers don't match the rest of the desktop and the New button has a strange background. I know this because almost every theme on GNOME-Look (including my own themes) have to apply workarounds.

The UNIX philosophy is "do one thing and do it well" (or so I've heard). Evolution should be split up into multiple apps like so:
  • a mail client for handling email, feeds, and newsgroups

  • an app for managing contacts (IM contacts, Google contacts, mail contacts, etc. all in one place)

  • a calendaring app

  • a tasks/GTD app (like Getting Things GNOME!)


Evolution's information is stored in a common backend (evolution-data-server or something), so all we need is new GUIs (maybe not all, but you get my point).

Just because they're separated, that does not mean that the email app cannot leverage contact data or the calendaring app cannot communicate with the tasks app. They can fetch the appropriate data from the central data storage or use D-Bus to get the information. Due to their separation, I would be able to switch out a single app for another and still expect all of them to work or remove one altogether because I do not need that type of functionality (a LiveCD distro might like this).

Metacity borders



The 1 or 2 pixel borders on each side of the window common on most metacity themes is a waste of space and quite annoying. The Metacity themes from my Cool Suite is X-Colors Lite with smaller borders and a few other changes. Try switching between the regular X-Colors Lite and the Cool Breeze/Grass Metacity and you'll see what I mean.

The padding on Metacity borders is unneccesary and does not help the user in anyway (as far as I can tell). Taking these borders away is a very simple thing to do, and not doing it wastes screenspace and perpetuates the big look in GNOME.

New, futuristic/modern theme



While I understand this is silly, looks are a big factor in how GNOME and Linux are perceived. I know people are going to say that themers are already making themes and that I should go make my own, but most of the latest themes just mix widgets from clearlooks, murrina, and aurora with a custom options (not that that's bad). I'm guilty of it too. The pixmap themes are still bad (riddled with bugs and generally ugly or mac/aero ripoffs)

Clearlooks and Murrine are pretty great, and there are some pretty amazing themes built off them. However, I think GNOME needs something new. Something futuristic and cool. We need a theme that's so good that other Operating Systems and DEs will be ripping off the look. Just like we see tons of Mac and Aero ripoffs on GNOME-Look, people should want to imitate and clone this.

We need a sleek, compact theme that makes users feel like they're flying rocket-jet aimed at the future (Ok, that was silly). Something with space and rockets and smooth shiny things. The point of the matters is that we need something new.

KDE 4 has their Appeal and Oxygen projects, and so far they have come out with something that looks pretty good. GNOME needs to be fueled with that same passion for a aesthetically pleasing UI.

GNOME needs a visual presence that is recognizable from thumbnails, screenshots, and when passing by/glancing at someone's screen. Something that screams they are using GNOME and it has to be good. People should look at it and immediately think, "Wow. I want that."

Section in summary: We need a new theme, icon set, metacity, and set of backgrounds. Think: sleek, sexy, modern, futuristic, space, rockets, and compact. Think eyecandy, but better. Usability + Eyecandy + Functionality = Computing heaven

So, if you survived this article...


Please post a comment with your thoughts and ideas. As I said earlier, I know Blogger is buggy with regard to comments, but there is nothing I can do. Type it up in a text editor (so you don't have to retype the comment gets eaten up), and try again. Also, please reddit, digg, tweet, dent, and spread this article around. I wrote this article to get ideas and thoughts churning and flowing in the minds of users and developers.

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.