open source stuff

The Vision of KDE-Telepathy: Part 3 – The Implementation

Posted by grundleborg on April 3, 2011

This article is the final part in a series of 3 articles (Part 1, Part 2) covering the vision and high-level design decisions of the KDE-Telepathy project. It is highly recommended that you read Part 1 and Part 2 of this series before this part, as it won’t make as much sense without them.

Now that Nepomuk has been identified as the solution to our problem, we should address how to implement KDE-Telepathy with that in mind. The diagram below shows very roughly the architecture of our system.

The Telepathy Framework interfaces with Nepomuk, and the user facing applications interface with Nepomuk. This allows Telepathy data, such as presence and message history, to be consumed by applications which know nothing about Telepathy, simply by retrieving the data from Nepomuk. There are two areas in which infrastructure must be developed: between Telepathy and Nepomuk (Service Side) and between Nepomuk and the User Facing Applications (Client Side).

Service Side Infrastructure

The main component on the service-side (between upstream Telepathy and Nepomuk) is the Telepathy Nepomuk Service. This is a daemon running in the background that is responsible for keeping all the basic Telepathy data synchronised into Nepomuk (including your own presence status, and your server-side buddy lists and their presence statuses etc). This service ensures that Nepomuk always holds up to date and accurate data from Telepathy.

Client Side Infrastructure

On the client side, although applications can access the Telepathy data directly from Nepomuk, a library, telepathy-kde (still in the early stages of development) exists whose purpose is to abstract away much of the complexity of writing applications that are Telepathy aware. Its purpose is to provide easy to use classes, models and UI widgets for contact lists, starting and handling channels, text/voice/video chat UI components and everything else commonly needed for adding Communication and Collaboration features to KDE applications, correctly integrated with Nepomuk.

Of course, there are many other components to the Telepathy-KDE project, Telepathy being a DBus centric framework leads to a large number of separate components (a topic for another blog post some day), but only those components directly related to the use of Nepomuk have been presented here.

11 Responses to “The Vision of KDE-Telepathy: Part 3 – The Implementation”

  1. CTown said

    Nice work on integrating Nepomuk. Hopefully this will cause other projects to use it (especially non-KDE projects). As you mentioned in your last post, the more Nepomuk is used the more useful it becomes. But is it safe for everything to dump its data in Nepomuk, can ONE program end up using ALL of Nepomuk’s data with malicious intent.

    • grundleborg said

      Security-wise, if a user’s account is compromised by a malicious program, then all this data is easily accessible anyway. So, although Nepomuk might make it slightly easier to write a malicious program once the account is compromised, even without Nepomuk a compromised account is still a security failure. With the current way desktop linux systems work, there’s not really anything we can do about it. Some phone operating systems have come up with interesting ways of changing this approach, but until we see these widely adopted on the desktop, there’s not a lot we can do really.

      • damian said

        What about giving the option of encripting the database like kwallet does?, so any app that uses nepomuk data will ask for password(that password can be in kwallet too), I know it will be more cpu heavy, but it’s just as encrypted hard-drives and they are used a lot.
        So even if the user security is compromised, they can’t access the database without password.

  2. TheBlackCat said

    Nice to see nepomuk support being integrated. What about things like your contacts? Will these be shared with programs like akonadi? That is, will you be able to have a single contact that includes both that person’s akonadi-related contact information and his or her telepathy-related contact information?

    • grundleborg said

      That’s the idea, yes. Once both Telepathy and KDE PIM support Nepomuk, this is exactly what will happen.

      • TheBlackCat said

        That is good to hear. How will the UI for this work?

      • grundleborg said

        I don’t yet know 🙂

      • BSmith1012 said

        kaddressbook would seem like the best solution if you’re going to be using nepomuk and akonadi. It was the first of the new kdepim applications to be released and its quite stable by now. Using it to integrate and combine email contacts, instant messenger contacts, and social networking contacts, etc. is something I would definitely look forward to having.

  3. Is it possible for me to go ahead and use kde-telepathy to, say, write a Plasma frontend (buddy list, chat dialog, for say, google talk) ?

    • grundleborg said

      It’s getting there, although we haven’t got as far as a stable library for doing that stuff – but this is what we plan. Of course, it wouldn’t be for google talk but for all protocols telepathy supports – remember it is an abstraction layer afterall.

  4. bsmith1012 said

    After seeing your blog posts I had an idea about coming up with a new instant messaging GUI. The Kopete sidepanel window works well, but if everything is going to be integrated into the desktop, you could create a new powerful widget interface that would be more seamlessly available without having to start and stop a program, deal with a window, or have another icon in the systray. Here’s my idea and mockups, please check them out and let me know what you think! Thanks, and great work!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: