Go forward in time to November 2008.
The ever-excellent blog of the Permaculture Research Institute of Australia links to a fantastic documentary on an individual's human footprint: how much you consume and produce throughout your life.
A couple of days ago we were finally able to move our bedroom to the second story of our house. It's interesting how a change of environment modifies your habits. While our old bedroom was on the south-west corner of the house, so it only ever got direct sunlight in the afternoon, the new bedroom has windows facing the north-east and we get all the early morning sunlight. The result is that now we are waking up automatically between 6:30 and 7:00, instead of at 9:00 due to Luciana clamoring for attention.
One small bug in this setup is that the bedroom gets little direct sunlight in the afternoon, so it cools down and the roof can't radiate heat during the night. Fortunately, a little insulation in the windows and good bed-covers fix the problem — one of the advantages of living inside the tropics :)
Everyday file management at the user experience hackfest
During the user experience hackfest I was part of the team that brainstormed about how to make file management easier. My other team-mates were Sebastian Faubel, Máirín Duffy, Garret LeSage, and Matthew Paul Thomas.
It is useful to think of file management as two different-but-related problems: dealing with your everyday files ("what I am working on"), and dealing with your archived files ("what I did in the past"). For now I'll write about the first problem.
Dealing with your everyday files
My talk at GUADEC, Document-centric GNOME, explained a few of the problems that cause people to have a lot of trouble when dealing with their everyday files or other data.
People have a hard time finding the files they worked on recently ("my homework paper that I was typing last Monday"). When you start up your computer, you get a desktop with some scattered icons which are probably not the files you are interested in. If you work on a physical desk with physical items like paper notebooks and pens, your stuff remains where you left it: you can just go back to your desk and resume work immediately.
Programs do not provide any sort of help in actually finding the files you are interested in. Let's consider a very common workflow: download an image from a web site, make some modifications to it, and attach it to an e-mail. When you do "save image as" in your web browser, it will default to ~/Downloads or even ~/Desktop. When you do "file/open" in the GIMP, it will default to the last directory you used in the GIMP, even if it was from days ago (on my machine right now, the GIMP defaulted to look at files from ~/src/some-random-directory). Finally, Evolution's "insert attachment" defaults also to the last directory you used in Evolution (~/.ssh for me right now, since I mailed my public key to someone yesterday). The end result is that your workflow gets shattered to pieces, as programs try to be helpful within themselves, but they totally fail at being helpful within your workflow.
So, programs contribute to having files scattered around everywhere, and there is no easy way to look at everything together.
The journal
It is useful to think of your working set of data. This is the stuff that you have been working on recently: documents that you typed, photos that you edited, e-mails that you sent, web sites that you researched. People have a reasonably good memory of when they did things recently. "I started typing my homework last Monday, because I knew it was due on my Thursday class". "I mailed you that photo two weeks ago, right after my birthday party".
A few years ago I started to maintain a big text file in which I keep a journal of what I do during the day. October 23 2008: filed bug #12345 about blah blah; mailed someone@foo.com about this and that; started ~/Documents/SomeProject/important-file.odt. I can search through that text file really easily to find when I did something, to remind me of bugs I was dealing with, to find important files which I don't want to lose. Sometimes I put in annotations there ("paid the electrical bill on the bank's web site, with transaction number 1234"), or very specific things that I need to do over the next few days (somewhat like an ad-hoc to-do list).
Similarly, different people in many professions keep journals or log books of their work. It is very useful to be able to look at your journal later, to remind yourself of related things that you were doing around any particular time.
OLPC announced the XO Journal some time ago. It shows you a timeline with all the work you do on your laptop: it is a computer-generated version of the journal I keep in a hand-written text file.
On the hackfest we took the mock-ups that I showed during GUADEC and improved them to make them more useful.
The journal shows a timeline of the files you have worked on, e-mails that you have written, web sites that you have visited, IM conversations that you have had. We can implement this gradually, starting with the RecentFiles infrastructure we already have, and then writing little providers for the other data sources.
The journal lets you put hand-written annotations at convenient spots, like "phoned my mom about her vampire costume" or "paid the bills with transaction number 123".
You can "pin" items in the journal, or mark them with a star, so that they will also be displayed in a fixed place for "starred items". This way you can anchor important things so that you don't have to hunt for them in the timeline.
You can create documents directly from the journal. Consider this case from the physical world: you get an idea, grab your paper notebook, open it to the first available page, and write something about your idea. Or you do a small sketch. Then you close your notebook. If what you scribbled is not very important, you'll just leave it in the notebook and forget about it. But if it turns out to be good stuff that you want to keep around, you'll tear out that sheet of paper and put it in a "good place": a stack of papers for a particular project, or a folder or binder if you are really organized. The point is that you can start creating stuff without having to think in advance of a place to put it. You can just keep your stuff in the journal until you think of a good place for it (and when you move it to a folder, you can still access the files from the journal, of course).
Finally, the journal needs to be really easy to access. Since it is your "holding tray" of things that you are working on, you want to be able to access the journal without moving away all of your windows or hunting for it in your cluttered desktop. The mock-up proposes using a tab on the edge of the screen. The tab is normally hidden so that it does not obstruct your work. If you move the mouse to the edge of the screen, the tab appears and you can click on it to slide out the journal window. This scheme may change based on the ideas from the window management team. Fortunately, the position of the journal is easy to change: give me a parent window and I'll move the world.
Implementation
I started implementing the journal as a Nautilus extension (see my previous post about this for screenshots and source code).
However, Seif Lotfy has a much more complete implementation of the journal in the form of the Mayanna Timeline. Mayanna is the maintained version of Gimmie, and a lot of good work has been going into it.
Seif and I have been talking about how to proceed. It seems that we'll reuse his data providers for the timeline or journal, and rewrite the layout/view code to make it really fast and lean. In particular, I'm pretty interested in looking at the layout code from the Nemo file manager.
Stay tuned
I'll write about the second problem with file management over the next few days: how to deal with your archived files. Sebastian, Máirín, and Garrett have excellent ideas in this space.
On the GUI Hackfest we talked about a lot of ideas for file management, including the Journal that I described during GUADEC. The journal view is now a work-in-progress; here is a quick screenshot:
There is no behavior right now (you can't click or anything); the journal just scrolls. In the end this will not live in a normal framed window, but rather in a tab on the side of the screen or some other place that is easy to access.
You can play with this in the Gitorious repository for Nautilus; look in the document-centric branch.
I've just released Mortadelo 0.3, the graphical, systemwide version of strace. You can use Mortadelo to examine the system calls from all your processes.
Source tarball: mortadelo-0.3.tar.gz
Git repository: git clone git://gitorious.org/mortadelo/mainline.git mortadelo
Go backward in time to September 2008.
Federico Mena-Quintero <federico@gnome.org> Thu 2008/Oct/02 12:59:53 CDT