Monday, May 17, 2010

Re-Thinking the Desktop

I realize that right off the bat, that title may seem off putting. What with all the work that Gnome has been doing with Gnome-Shell, and with Ayatana tearing away at UNE and UI in general (for Ubuntu, that is), it seems more or less redundant to try and re-think anything. That is, after all, what every body else is doing.

But none the less, here I am, giving it a go.

The very first thing that comes to mind as an issue with the desktop is that you can only really do one thing at a time. Now bear with me, I'm not one of those people that thinks you need all fullscreen apps all the time. Doing one thing at a time might need two windows of Nautilus, 3 documents, a PDF, GIMP, a browser with 10 tabs, and a terminal. Doing one thing at a time involves referencing other documents, navigating, looking at sizes, researching, but all centered around your task. I certainly don't try to tag MP3's manually while I'm writing a paper. Those are two totally different things, and theres no way to do them both at once. But for plenty of things, like playing music or opening a single file, you don't need a whole new interface to open up.

Instead, there are a number of activities that shouldn't ever need a full interface, but do. For instance downloading new mail in evolution, or picking a new playlist in Rhythmbox. Now, these are things which are partially controlled in the new Ubuntu panel applets, but are still rather inconsistent. But still, the idea is present. There are some things that you want to be able to look and easily see, like if you have new messages, or what time it is, or how much battery you have left. But there are plenty of things that you can't see easily, and plenty of things that you can see easily that are of little to no use.

Menu Bars

For instance, for almost every single application on the desktop, you get a series of menus. For instance, in Nautilus, you get File, Edit, View, Go, Bookmarks, and Help. These have literally got to be the worst collection of menus ever invented. I get that these are pretty standard, but its a complete and utter idiotic interface design to use any amount of space (even if its just 10x1000) for a series of menus that put the important functions multiple clicks away, and hidden among a series of much less important functions. There is so much overlap, its absurd. Meanwhile, Chrome uses "Control the Current Page" and "Customize and Control Chrome." These options actually make sense.

Lets look at another application, the terminal. File, Edit, View, Terminal, and Help. File? What file? There is no file open. Lets click it, and I see this:

Ok, so there is no File open, but clicking it gives me Open Terminal, Open Tab, new profile, save contents, and close. You know what, those all sound like Terminal controls, not File controls. Does it really make sense to have a File menu entry for a window with absolutely no actual file open? Especially considering if I do open a file in the Terminal, the controls for the file are within the terminal, not on the menu bar.

How about this Edit menu?

Oh, ok, edit. Edit what? Uh. Well. I guess copying and pasting is editing. Selecting all is editing-ish. But wait, what? Profiles? Keyboard shortcuts? Am I editing the document or am i changing program settings? What exactly am I editing? Anything that the developers throw in here? Nautilus isn't much better with the edit menu:

The usual cut, copy, paste, select. Invert selection.... gosh, even these don't really make sense when you think about it. These aren't edit commands, these are File commands. Move, copy to, move to, move to trash... These are not editing anything at all, these are moving Files around. File management.

This is just a basic overview of what I'm sure you're all familiar with. We have these menubars that we are trained to turn to with our every need, and yet none of them actually make sense. We just go there cause we're trained to go there.

But... the menus...

Yeah, I know. They're there, they feel stuck there. But really, they make no sense for the majority of things contained within them. I'm not advocating a reorganization, bouncing things around here and there.

I say we jsut get rid of the menubars. They're stupid, they're repetitive, and with the exception of expansive apps like Gimp, they're just taking up space. Heres what I think we should do instead.

  • Pull out things that are actually pertinent to what you are doing, for one category. These include your basic save, save as, print, new window, create folder, new message, that sort of thing. Put it in a button menu, call it options or commands or something.
  • Put things like select all, move to, delete, in the context menu and not in a toolbar.
  • Everything else, view options and the preference menu launcher under a different button, called configure or something. Two square buttons for the majority of important tasks.

Then suddenly you get this:

(click through to see what I'm actually talking about. :D)

Let me draw your attention to the wrench I added, stolen from Chrome. There you get all of your save, print, new window, create, all that. Things that are actual actions, things that cause events.

Meanwhile, in the little gear bit thing, you get basically everything currently under the view menu (besides the zoom and three view options already covered in the buttons and slider of Nautilus-Elementary), the help contents and about, Backgrounds, terminal size options, all that sort of things.

The terminals 5 and Nautilus' 6 menus crushed down into two menus, along with whats in the context menu. Cleaner. Meaner. More-Sensier. (yeah, I made up a word.

What about more complex apps?

Well, with things like Gimp, theres a ton more stuff in the menus that would not be so easily crushed into two menus. But all of Gimp is a graphic Editor, so an edit menu seems... redundant. Theres better ways to sort that stuff into categories that makes more sense.

Some apps do this already. Rhythmbox, for example, has Music, Edit, View, Control, Help. But even then, control duplicates the actual interface itself, Help can be hidden in the Configure menu, as can all the edit options and view, while your import commands and new playlists in that Wrench 'Options' menu.

Uh... I hate this

Understandable. :D

But for many of the programs we use on a daily basis, what we basically have is a skin over the top of a very complex terminal system. Its just a ui to something we wouldn't otherwise understand. We do this because there are some things that make sense to be able to visualize and see easily so we can understand. So why do we then crap on that and make it frustrating again?

I don't think that this will change the world and cause everybody to put it in default Ubuntu. I really don't. But I would like to start putting work towards packaging up apps with a modded appearance and control mechanism, similar to Nautilus-Elementary. But obviously first theres work to be done in figuring out a whole lot of details. So, I challenge you to pick some applications, write down all the contents of the Menu Bar, and see what makes sense and what doesn't. Lets start making some rules, and then we can see about putting them in action.

Edit: Heres a quick mockup of GCalc

Friday, May 7, 2010

Taking Notes and To-Do Lists

Its really difficult for me to actually bother use to-do lists or notes, because I simply have never found a system that really works as well as I need it to. When it comes to software notes or To-Do, either it takes to long to punch in tasks, its a cluttered interface, or I can't get at my information on every device. I am, in case you hadn't noticed, very picky about what does and what doesn't work for me. Its rare for me to see an app that really makes me go "Wow!" and unfortunately, I haven't found a notes or a to-do app that works for me.

What I Use

First of all, why am I grouping these two things together? To-do lists and Notes may overlap, but they are not the same. Not at all. Yet the need they both often service is the same. We have things that we need to remember, so we write them down. The problem is that sometimes, its an assignment for school that needs to be done by a certain date. Sometimes its a quote from a book. Sometimes its a schedule for an event, or a band you hear about. Sometimes its a story idea, or a reminder to send a check. The problem is really trying to find some sort of interface that works for all of these ideas; loose ideas, and notes tied to specific dates.

Right now, I use both Tomboy and GTGnome!. Unfortunately, neither really works all the way I need it to. With GTG, there is a significant level of tags implemented, but unfortunately, the sorting heirarchy is unclear and when tasks are marked as done, deleted, or dismissed, I just get confused. And really, I'm not dumb. Its just confusing. The fact that I must add a faux-task in order to create some categories makes it worse. I like the due date and start date, I like that I can add as many notes or subtasks that I like. I don't just want to write "paper due," I want to hash out a topic, or a brief outline, or link to notes, or whatever. I like that I can do this, I don't like that I can't hide it underneath a header of school, work, or personal, but instead its all together. My primary use for GTG is for longer term things that have a specific due date.

On the other side, I've got Tomboy hidden in the widget layer. This is what I use for a number of different things, like writing quick reminders, anything that pops into my head, outlines and ideas for blog posts here or at OMG!Ubuntu!, school assignments, books I want to read. I have a note on their named ToDo, and another named Home. This shows the really problem. There is a system of hyperlinks to navigate, which works great for some things, but causes problems if I don't name things complicated enough names and they just show up in the content of my other notes (like if I have a note names Ideas, linking to notes named 1, 2, 3, 4, they can only be used once). This makes it difficult to get down what I need, because I have to always think of a name original enough to keep it clean, but also simple enough to easily link and remember where it is. Again, hierarchy is an issue, as all notes are given equal weight. While Tomboy has a Search all notes window, which includes the ability to sort notes into notebooks, its again awkward. Why sort my notes into different notebooks, when it really does nothing? It doesn't change labeling, hierarchy, appearance, or anything else when I assign a note to a notebook. So instead I just make my own from an imagined layout and by hyperlinking to my own directories.

Where They Fall Short

The biggest problem with taking notes or keeping to-do lists in GTG and Tomboy is that HyperLinks and tags, while very neat and useful for some things, fall woefully short of helping the user visualize his tasks and notes. The problem is not that the features present are not good, its that there are more features which could easily enhance the experience.

First, lets look at Tomboy. Its fantastically freeing to just create notes, left and right, and link to those notes from any other notes that I feel like linking from. This is a wonderfully fantastic feature. However, the weal implementation of notebooks does little more then organize the Search All Notes dialogue, if, of course, you bother actually sorting it. Anything more then 20 unsorted notes, or 20 in each category, leads to it being far to unwieldy to actually use. Especially given that. within the Search All Notes dialogue, all notes are given equal weight, it is very difficult to use Tomboy for complex note keeping or task organization. If I have a random personal idea for a story and I file it in my Personal notebook, it carries just as much weight as important ToDo lists. There comes a point that this becomes to difficult to actually made use of. Add this to the fact that the search all notes in cumbersome, just kinda bugs me.

Getting Things Gnome!
On the other side of things, GTG was pretty fantastic the first time I used it. I typed in my weeks to-do list, all my assignments and research things and all that. I forced myself to open it every time I was on my computer, and I forced myself to check things off, add notes, and link to Tomboy notes (which, by the way, is totally fantastic). But the useful feeling quickly seemed to wear off. Not that its horrible or anything. But all I have to do is type my things into Google Calender instead of GTG, and suddenly I have all my schedules neatly packaged and accessible on any computer, in the clock applet in gnome, on my iPod touch, on my phone, email, sms, windows, everything accessible. Neither GTG nor Tomboy really allow for that kind of accessibility, which is really truly necessary for real life to-do lists. To make GTG more then just a weekly check list that must be updated manually, I would love to see better tie in with other apps. I like it, its just tedious to type my stuff into multiple programs based on whether or not I think its worth the time to do so.

Now, for both of these, its not a matter of bugs or issues, its basic functionality. I could point out some issues (like Tomboys refusal to properly start with the same notes open and not the search all notes, or GTG's awkward evolution syncing) but those are not the point I'm trying to get across.

Road Map

Here's what I wish these apps were. (Note, these are extreme generalizations, across both apps. These are not meant so much as attacks on the developers, so much as what I think the gnome desktop needs from such a category of apps as notes and to-do lists, so that people can make use of them easily)

Full integration with just about everything - Let GTG sync with Google Calender, both ways. This is by far the feature that I want most. I, simply put, will not recommend GTG to any of the people that I've been prodding into Ubuntu until it has this feature, because I do my best to assure them that Ubuntu will make their lives easier, not more difficult. I will not recommend that they install an app that will require them to retype everything they have to do for whatever period of time, which is then inaccessible from their phones, iPods, other computers, etc. GTG is great as a workstation task list (which I still use it for) but kinda sucky when it comes to full out life-task planning. I would love to be able to tag GTG tasks in some way that would add them to my Gcal, on the date start and due. Not every task needs to be pulled both ways, selective sync would definitely be the best option.
Tomboy, meanwhile, could greatly benefit with something that may seem a bit crazy, but hear me out. Twitter integration (or Sign up for a new account, make it private, log in via Tomboy, and then post anything on the account from your cell or whatever mobile (or someone elses) and then Tomboy watches that account, and creates new notes based on what shows up there. Pure win (at least, IMHO). This means when I'm watching a movie and I think "whats that other movie this actors in?" I tweet myself the note, which pops up on my desktop. Or if I need milk, bam. Or I'm at the store and I see a good price on something and I want to store it to compare to internet prices, there. Or if I'm at a pawn shop... the list goes on.
Now, you could just do this with twitter, in general. But I really would love the ability to have Tomboy live through UbuntuOne for full device sync for this sort of note taking. It would easily take the role of non-browser version of Evernote.
In addition to both of those options, theres a multitude of other integration options available (evolution, other computers, better syncing, dropbox, phone, clock applet). I want them, and theres to many to list here. But integrate them everywhere!

Heirarchy - People don't give the concept of Heirarchy and Categories nearly enough credit. In fact, far too often you see lots of categories where its not helpful (like inbox's in email programs. I want to see whats new, not hunt through ever folder. Some stuff I might want to manually hide, but not 20 different folders!) and then when it is helpful, its nowhere to be found. Tomboy is a great example of just barely starting. I went over earlier how the slightness of the application of the concept of notebooks, but it only applies in the search window, nowhere else. Yes, I want to link to any of my notes from anywhere. But I don't want to have to open the menu to hunt through everything every time. Instead, I think it should work more like this:

I click on tomboy. Instead of a random generation of whatever notes out of however many I have, I want to see 4 options. School, Personal, Work, Blog (or whatever, totally user defined). Clicking that brings up a whole selection of notes in that category, which would be like Projects or whatever, but could really just behave as standard notes with hyperlinks. These would bring me to my standard notes. Meanwhile, non-notebook sorted notes would be constant. So, in application, I could have a 'to-do' list which would be constant, and I could click personal, giving me 4 directories of my personal notes (totally defined by me), or click work, and get my work projects, or any of the other notebooks I have set up, but the 'to-do' note stays put. Hyperlinking stays the same, can be linked anywhere, but then it actually behaves like a notebook. If I grab a work notebook from my shelf, I don't want to have to flip through all my story ideas, or blog outlines, or random notes to self about looking up '80s movies. I want my work notes, accessible through hierarchies of projects.

It should be noted, by the way, that I hide Tomboy on the widget layer, and like to have a whole bunch open at a time.

The same basic concept could be applied to GTG, but with vastly different end use. Mostly I want to be able to organize without creating dummy tasks that could accidentally be deleted.

Full User Configuration - This is my simplest point. I'm no programmer, so I don't know how hard it is to do, but leave the choice to the user. I know using plug ins suck, but let the user turn on or off the different features. If someone doesn't want google sync, make sure you can turn it off, all the way, hide the button, everything. If they just want ridiculously light note-keeping, let them turn off all the notebook features. Leave it to the user to decide how to use it, but give them the tools to do it how they want to.

Giant Disclaimer:

I love these apps, and am so thankful that the developers have created such great programs, usable for free and open sourced. Totally rad. I wish I had the programming chops to help (still learning... slowly) do some of the things I've flapped my jaws about, but I don't. But that doesn't mean I can't say I want it, right? :D