I have been on a quest to find the perfect Personal Information Manager (PIM) application for a while, so far, without any success. That must sound weird, since that there are hundreds of applications who brand themselves as “PIM”s. These applications range from the traditional Outlook clones to hackers-galore self-contained wikis-on-a-stick. IMHO, they all share one thing in common: They have no understanding of what is “Personal Information” and what is exactly the thing they should manage.
So what should a PIM application do? I follow the GTD spirit on this one. Your most valuable resource is time. Therefore a PIM should help you manage your time. A good PIM should help you save time.
Here is my list of time-related functions that a PIM should fulfill:
- Receiving mails. Most of the tasks, to-do’s, scheduling request and other information flows nowadays into your e-mail inbox.
- Sending mails. Likewise, the result of many of your tasks nowadays is sending an e-mail. Waiting for a result or delegating a task is usually done through e-mail too. This function should include an address book.
- Events and appointments. The PIM should keep track of your “hard schedule” like events with specific time and place, including recurrences. It should also alert you on time.
- TODO. The PIM should list your immediate tasks, by due date and priority.
- RSS. Nowadays, site summaries are similar to incoming mail.
Up to here it is more-or-less what every Outlook-clone would supply, but it is only the first part of the requirements. The second part is about putting those tasks in context. Wiki-PIMs, like D-cubed or GTDTiddly, offer many of these functions, but Outlook-clones do not.
- Projects. A single task, like “Upload media to web site” is not very informative. The whole picture might be that it must be preceeded by “Receive media from graphic designer” and followed by “Notify web admin on changes”. A PIM should be able to group tasks to project and sub-projects, assign dependencies between tasks, and show the current tasks – I.e, tasks with no pending dependencies.
- Links. Wouldn’t it be nice if the task “Upload media to web site” has links to the media files and the web site’s FTP? Similarly, “Notify web admin” should have a mail-to link to the admin, etc.
- Tags and criteria. Does this task requires a car or an on-line connection? Is it urgent or optional? Do I have to bring it to the next meeting with the boss? Is it something to do with work, home or hobbies? A PIM should have a way to filter between “Call client, urgent!” and “Plant carrots in garden, someday”.
- Tickles and references. Two important GTD concepts. Some things are important, but not doable right now. You can plant things in the garden only in the spring, so you need to re-consider garden works a month from now. Likewise, “New rules for submitting applications” is not something that you can do, but it is important to store, in case you’ll have to submit one.
I could go on with more context-related functions that most PIMs do not supply, but there is also a third group: Non-functional requirements that most PIMs fail to withstand, especially Wiki-PIMs.
- Accessability. A PIM should be the swap-out of your brain, and as such, it must be conveniently accessible at all times. It must be within “an arm’s reach”. In a software context, it means that no more then a couple of key strokes should bring you from anywhere in your compurer, including other applications, to the main PIM functions. This requirement is crucial: If you update your PIM sporadically, it quickly becomes irrelevant and even misleading.
- In your face. Smart PIM alerts and reminders are useless if they are tucked away inside some messy screen of a separate application. They should be on your desktop, or an equivalent place. Alerts must pop up. Coloring an event in red as overdue half-an-hour after you were supposed to be there is useless.
- Perspectives. Sometimes you need to see mail-tasks-and-news for today, sometime to focus on a single project, and sometime to see all pending tasks. A PIM must be able to arrange and save this sort of queries.
So how can one get such an application?
- Write from scratch. Roll your own PIM. A plugins-based application with flexible GUI comes to mind. The only problem is that it is a rather monumental project.
- Hack it together. This is more-or-less what I do when I need to refresh my hacker’s skills: Try to integrate PIM-related applications by using a good deal of hack-o-rama. I use Thunderbird+Sunbird for classic PIM functions, ThinkRock for projects and context and conky to put things on my desktop. I made a hack so that conky will display ThinkRock’s current actions, which is rather cool. I still need to figure out a way to import e-mails into ThinkRock (probably some script) and how to make it all accessible (Maybe Gnome-Do + Hacking ThinkRock’s sources, good thing it’s open-source). It makes my computer nicer then other machines, but sometimes I wonder if writing from scratch is not better.
- File-system PIM. That can be the hacking project from open-source heaven: Make your file system store your personal information. After all, Unix file systems support links, and all applications can access it. Getmail can drop-load your e-mails into a directory, and good-old grep-sed-n’-awk can take care of filtering and querying. The main problem is that you can’t store calendar events on a file system, especially not recurring. Anyone volunteers to write TimeFS?
Drop a line if you have any idea on this topic – Maybe it will be another step in the PIM quest!

Guy, here’s my hacked together version:
http://hacksushi.com/2009/02/22/sync-contacts-calendar-and-tasks-with-linux-and-the-iphone/
It’s not exactly pretty, but it works well for me and I do use the GTD methodology.
I’m hoping Zimbra will have a more elegant solution in the near future.