Most of the time within KDE I discuss things which are either already out there or in a design/ mockup stage, because those are the points where either I notice problems or developers have questions for me. From time to time, however, I just do a little “thinking outside the box” to come up with new ideas, or “visions” (no, not the “If you have visions, you should call your doctor” kind). One of the things that come to my mind every time I discuss anything related to communication is: With all the information federation stuff we have in KDE (Nepomuk, KPeople, Akonadi, …), we should be able to unify the communication with the same person across different communication media. There are at least three scenarios I have in mind here:

Scenario 1:

I have an idea which I’m eager to tell Àlex about (because Àlex is usually my go-to person for crazy ideas). I don’t want to open several applications first just to check whether he’s online on GTalk or IRC, I just want my message to reach him as fast as possible. In this situation, I want a system where I can just say “Give me the best way to reach Àlex right now” (where “best” is based on both availability and my preference for certain communication media).

Scenario 2:

I read an email by someone on a mailing list. I feel that I have to discuss the content of that mail with the author, but I assume that having the whole discussion on the mailing list may produce too much noise on the list and just annoy people. Therefore I decide to continue the discussion via instant messaging. During our private discussion, we realize that a few more people should be involved, but we still want our discussion to happen on a synchronous communication medium, so we decide to continue it on IRC. After we’ve reached a conclusion on IRC, we post the conclusion in a reply to the mailing list. Later on, I want to review the whole discussion. In this situation, I’d like a history of the discussion which aggregates the original mail, the IM log, IRC log and the final mail.

Scenario 3:

I am looking for that file David sent me a few weeks ago. I don’t remember its exact name or whether he sent it to me via mail, Jabber or IRC, I just know that it was a few weeks ago and that it was from David, and I want to find it easily just based on that information.

Solutions

All three of those scenarios may sound like rainbows and unicorns at first, but they are not that far-fetched, and the basic technology to give me what I want in them is already there. Therefore, last week at the KDE PIM sprint in Brno I talked to some of the people who could make the features I’d need in those scenarios happen: David Edmundson and Martin Klapetek from KDE Telepathy, Christian Mollekopf from KDE PIM and Vishesh Handa from Nepomuk. David told me that for Scenario 1, they are already “50% there”: A contact list which shows you in which communication media a person is currently available (powered by KPeople, of course) is already being developed, so the most important part for that is already happening. The “give me the preferred communication medium at this moment” part still has to be done. That part doesn’t have such a high priority to me, though, because if you have all communication media in one place, including the person’s current availability in each of them, manually selecting your preferred medium is easy to do.

For scenario 2, more still needs to happen. Currently neither IM nor chat logs are stored in Nepomuk, so it cannot connect them to a person. According to Vishesh, Nepomuk isn’t a good place to store whole logs, but it should still be able to link logs stored externally to people, so that logs from conversations with one person which are spread over various sources may be aggregated somewhere. Plus, all the clients used for the conversation need to support KPeople. KDE Telepathy uses it already, KDE PIM support is currently being developed, and David told me that people from Konversation are looking to integrate KPeople as well. This means that least if you use these applications for your communication, you should be able to get your aggregated logs at some point. Another problem here is that conversations nowadays are spread not only across different logfiles on the same device, but across devices as well. We would definitely want to support a conversation started on a PC and continued on the smartphone. With emails this is not a problem if one uses IMAP. With IRC it works if one uses a client/server system like Quassel, which is more of a power user thing, though. For IM, it depends: Facebook, for example, has an API for accessing the logs stored on their servers, but of course with everything stored on a server somewhere in the US, you have a privacy problem. This problem is not easy to solve, but we agreed that we do not want to synchronize locally saved logs. So if you want cross-device logs but still limit privacy problems, you’d have to e.g. use a Jabber/XMPP server you trust and have it store your logs.

For scenario 3, Nepomuk has to be able to link each file received from a person to that person. Vishesh told me that it “kind of” works for some cases already, but still needs more work. And we need the UI to search for files by person, of course. We all agreed that all three scenarios are something we should aim to solve, now the next step is an actual plan of action to implement the stuff that’s still missing.

So, dear readers, what do you think of all this? Do the scenarios sound realistic to you? Would you find it helpful if the aforementioned solutions were available in these scenarios? What additional scenarios can you think of with respect to unified communication?