Wednesday, June 11, 2008

The Target Audience

The Chandler project describes their target users as being "knowledge workers"; people who routinely manipulate bodies of knowledge. My target users are a bit different. The people I am aiming at are the people who have many irons in the fire, who may have many large areas of life that are being managed.
  • They have multiple projects, multiple agendas, multiple calendars.
  • They have promises to make and track in many areas.
  • They have ongoing conversations to be managed.
  • They have more than one team that they are tracking or dealing with.
  • They're often sharing information with small 2 to 50 person sized groups
This doesn't mean that this will not be of use to people with less diverse and busy lives. But my goal is to make that kind of lifestyle instantly manageable.

Monday, June 9, 2008

Things that work.

Before I gave you this list of what didn't work for me from the existing applications. Now I would like to give you an idea of what I have found that seems to work well or has promise for the future.

As I mentioned in the previous post, Chandler appears to have the best thought out model of the domain. Anyone looking at designing anything in the domain should take a very close look at their requirements and analysis of the domain.

The apparently defunct Aethera project (it looks like they stopped work on it in 2005) introduced me to sub-tasks which I think are a very good idea. TaskCoach also seems to have looked seriously at the subtask issue.

The discontinued ECCO tool comes close to how I want to handle metadata. My wife introduced me to its ability to link ad hoc metadata to presentation or reports in a way that makes information about a schedule accessible at the drop of a hat. I think that the handling of tagging and categorization will be critical to creating an application worth switching to.

There was a DOS e-mail client called Coordinator that allowed you to track the state of conversations in e-mail. It took some discipline to use but gave back a large amount of benefit.

Thursday, June 5, 2008

Tagging and Categorization

When categories are not under your control, they are tags.

What I mean by that is if you are importing contacts from someone else AND you have no access to the definition of the categories the contacts are, in effect, being brought in with what appears to be ad-hoc tags associated with them.

This also applies if you are importing and exporting to and from another PIM.

Technology Choices

The cross-platform GUI toolkit

There are two technologies that I consider fairly obvious for this work. the first is the cross-platform GUI toolkit. As far as I can tell, there are really only two contenders out there. The first is QT and the other is the Eclipse RCP. I am planning to use the RCP simply because it does much more out-of-the-box and it is written in Java, which I am far more fluent in nowadays than C++ or C ( besides, I never had a great love of tracking memory allocations).

There are some downsides, especially speed of start up and memory footprint.

pros: Well known, decent performance on most systems, designed for exactly this.

cons: A large memory footprint, a serious learning curve, and potentially slow startup.

The persistent storage

The second technology is what to use for the persistent store. This is a little less obvious, because there are more choices and a lot more variation within the choices. To start with the biggest issue is whether or not to use a relational database. relational databases are very good at what they do and have very well known scaling and programming issues. if I decided to go with Hibernate or JPA I would have a wealth of technical support at my fingertips from their very active user base. The downside is that for managing hierarchical metadata the relational database is not a great choice. In effect, I would be using the relational database for something it's not really designed to model. It could certainly be done using Hibernate or JPA but there would be a perceptible cost in design to fit, maintenance time, deployment issues, and possibly performance.

Since the problem I am dealing with deals with relatively small numbers of objects, intricately linked, it makes sense to go with an object database such as db4o. I looked at several, but db4o's defaults fit in well with my intention to keep things as simple as possible.

I am very interested in any thoughts people have about modeling hierarchical relationships with their preferred databases.

pros: Very natural fit for object persistence. Uses annotations and very simple defaults to make things work. Less resource intensive than most relational databases.

cons: Not as well known or as understood as relational databases. It also has a smaller user community.

Wednesday, June 4, 2008

PIMs, PIMs, Everywhere

Currently I am using Thunderbird with the calendar plugin as my PIM. It has all the basics and is cross platform even though it has none of the other features I want. In addition I can synch it up to scheduleworld so I have a central repository for my contacts and calendars.

Looking at whats out there right now these are the cross platform (web ones are mentioned separately) ones that I have found and why I have ruled them out so far:

1. The apparently defunct Aethera project Clunky to use but solid.

2. The very ambitious Chandler Project Lots of really great analysis of the domain, some great UI ideas, implementation is clunky, slow and not ready for prime time.

3. Citadel. Server side implementation with Web interface. Very complete and solid in many areas.

4. Haystack Seems interesting but I could never keep the semantic concepts from intruding on actually getting work done. I recently went back to the site and was unable to find the Haystack application to see if it had improved.

5. KDE PIM Toolset I have a soft spot in my heart for the KDE Pim tools. Many of them do things well and quickly and have the most common operations eassily accesisble. But again what they are modeling is a less comprehensive model then I am looking for and the metadata model is very limited.

6. NomadPIM This does what it does very well and has all the basics. It even allows tasks to be categorized easily. The use of special views and perspectives is very utilitarian. The base domain model is again a very small subset of what I am looking for.

7. TaskCoach Some great Ideas and UI concepts. Unfortunately it is really only focused on task management.

There are more Web PIMs (inherently multiplatform) then cross platform
standalone applications. Unfortunately I haven't seen any that allow for
disconnected operation. I don't want my schedule to be held hostage by the
vagaries of net connections.

I would recommend that anyone looking at what is current start with:

Monday, June 2, 2008

Why this blog.

1. Simple or single
2. uni-directional

1. The act of leaping, jumping, or dancing.
2. Discontinuous movement, transition, or development; advancement by leaps.

I ended up starting this blog as a clearing house/focal point for
ideas for a PIM (Personal Information Manager) I am writing.

Your reaction may be somewhat underwhelmed. I don't blame you. The net is littered with the bodies of half finished PIMs, each created by someone who wasn't satisfied with the current state-of-the-art.

The bottom line for me is that the current PIMs that I have looked at don't do what I want, and where I want and when I want. And I have looked. I spent 2 years looking and trying out demo versions, etc. No luck. It got to the point where my wife finally asked

When are you going to admit you are going to have to write it?

I did resist the temptation. Really, truly. I didn't want to be known as an engineer that succumbed to the "not invented here" syndrome.

But finally, I gave in.

So what are the things that I need that I have not found so far?

1. It has to run on multiple platforms. I use both Windows and Linux routinely and I don't see that changing anytime soon. This rules out a large number of Windows only applications.

2. It has to support multiple calendars but a single set of events. An
example of this is the eight schedules I maintain at home. I have a calendar for myself, a calendar for my wife, my kids calendar, my ex-wife's calendar, my work calendar, and several calendars for organizations that I donate my time to. If there is an event on my kids calendar that I plan to go to I would like to be able to simply put it on my calendar and then when I move the time of the event on one calendar it shows up correctly moved on the other.

3. It has to support scripting and template of events. I would like to be able to do something like schedule myself to lead an event that I have done several times before and automatically have items added to my task list and time scheduled in the weeks to come for preparation. In fact it's scheduling backwards from the point of the event.

4. It has to support the ability to both tag (assign ad hoc metadata to an object) as well as categorize things in hierarchical user-defined taxonomies.

5. The relationships between communities, events, notes, and tasks should be recordable and navigable. For example, I should be able to associate Projects with communities so that when I am working on a task in that project I have easy/instant access to the e-mail addresses of that associated community.

6. It has to be able to track conversations. For example, if I am heading up a team and I make a request I would like to be able to track and a glance and know how many people have responded, how many have accepted the request, how many have declined the request, and maybe even how many have come back with an alternative suggestion.

7. It has to be able to synch to mobile devices and web services (google, scheduleworld, etc..)

8. Free or low cost (< $150)

Last of all, the user interface should be fast and pertinent. It should be easy
to quickly capture information from a user so that it can be triaged later. Easy things should be trivial to do, difficult things should be easy.

So far, I have not found what I'm looking for. The Chandler project comes the closest. I think that the Chandler project has produced the quintessential domain data model for a PIM. Unfortunately, I find that personally, the user interface renders many tasks unusable or unintuitive. In addition I find that how I model the process of working with the data seems antithetical to the Chandler model.

That's all for now. Please feel free to respond with comments. I would love to hear about PIMs that you think meet these criteria. It is quite possible that I missed the PIM I am looking for.