On the sad state of PIM for nerds

How do you do your Personal Information Management? Or, more specific: How do you organize your contacts over multiple devices, how do you organize your calendar, todo lists, notes, wiki, diary, browser bookmarks, shopping list, mails, news feeds,…

Do you use Google for all this? Maybe you do. Don’t you want to uncouple from Google? Well, then… I have to tell you about the sad state of PIM for nerds.

If you want to organize your personal information without google and host everything on your own, you will soon meet tools like owncloud, emacs orgmode or similar tools. Sadly, all these things are not what I want. OwnCloud is getting more buggy with every release and it is already slow as hell. orgmode needs emacs, which is a huge tool itself and you have to learn a whole new ecosystem. If you are a vim user like me, you don’t want to use emacs.

But I’m not talking about editors here. I’m talking about PIM tools. What I do right now: Owncloud with khard, khal, vdirsyncer for contacts and calendar organization. As said, OwnCloud is buggy and sometimes calendar entries cannot be synced to all my devices. On Android, I use Apps to sync my contacts and calendar as well, and they fail as well, sometimes.

I use taskwarrior, which has a sync server available. Sadly, it doesn’t work yet on NixOS, but well, that’s my issue and I’m working on a solution. Nevertheless, the Android client (Mirakel) is badly supported and does not work that good as well.

For news, I use ttrss, which works fine and the appropriate Android App works good, too, so no issue here. For a Wiki, I use Gollum, which works but is a bit annoying to use because it is not that customizable. I do not use note-taking tools at all, because they simply suck. There’s no good note-taking tool available for commandline use which integrates with the other tools. Mails work fine with mutt, of course, but they cannot be integrated in the wiki, todolist tools or the other tools I just mentioned. I do not use browser bookmarks at all, because there is no CLI tool available for them. Same goes for shopping lists.

What I want

What I want is simple: One tool, which integrates

  • Personal wiki
  • Personal todolist
  • Personal notes
  • Personal mail indexing
  • Personal Calendars
  • Personal Contact management
  • Personal News Feeds (RSS/Atom mostly)
  • Personal Bookmarks
  • Personal Shopping list
  • Personal Diary

in the following ways:

  • I can use whatever
    • text editor
    • mail reader, sender, receiver
    • rss reader I want to use
  • I can synchronize everything to all devices, including Android smartphones or my Toaster
  • Everything is done with open standards. Means
    • vcard for contacts
    • ical for calendar
    • markdown for
    • wiki
    • notes
    • diary
    • shopping list
    • maybe YAML for todolist
    • mbox or Maildir for mails
    • normal Atom/RSS for news stuff
    • for bookmarks, YAML or JSON would be appropriate, I guess.
  • I can access all my data in the system with a text editor, if I have to
  • a clean and polished (+fast) Android Application to access and modify this data.
  • I can move/link data from one system to another. For example:
    • I can link an Email from my notes
    • I can link a entry from my RSS, notes, calendars to (for example) my Wiki
    • I can send a shopping list from my mail client to a contact and attach a calendar entry which links to the shopping list
    • … and so on
  • All the things are encrypted (optionally)

As everything should be plain text, git would be fine for synchronization. The sync should be decentralized at least, so I don’t have to host a server at home and cannot sync if I’m on the go. A web-hosted entity should be optional and so should be a web interface. Having a web-UI like owncloud has is nice, but not that critical for me. A full encryption of the content would be nice as well, but would be kinda hard for the Android devices, at least if the device gets lost. Anyways, my drives are encrypted and that should be enough for the first step.

It is, for me, really important that these tools interact well with eachother. The feature that I can send a mail to a contact and attach for example a shopping list, which itself has a calendar entry (which gets attached as well, if I want to), is a real point for me. Same goes for attaching a RSS entry to a wiki article or todo item.

Another requirement would be that the tool is fast and stable, of course. Open Source (and at best also free software) would be a crucial point to me as well. GPLv2 would be the thing.

Do it yourself, then!

Well, developing such a tool would be a monstrous huge amount of work. I’d love to have time for all this, especially as student. But I think I have not. I have a lot of opinions how such a tool should work and also a lot of ideas how to solve a certain problem which may arise, though I absolutely have no time to do this.

I, personally, would develop such a tool in Rust. Simply because it gives you so much power to your hands while remaining a really fast language in manner of execution speed (speaking of zero-cost abstractions here). Though, there would be the need for a lot of external libraries, for example for git, vcard, ical, yaml, json, markdown, configuration parsing, etc etc. While some of these things might be available already, others are clearly not.

Sadly, such a tool is not available. Maybe I can find time until I’m 35 years old to develop such a thing. Maybe someone else has done so until then. Maybe I just inspired you to develop it? Would be neat!