Archive for the ‘Telepathy’ Category

A while ago I wrote about the Realtime Communication project – to integrate the power of Telepathy into KDE. I thought it was probably time to write a little update, so without further delay, here’s a screenshot of the Contacts List.

So, what’s new?

Icons indicating the presence status of contacts

Groups! These are synchronised with the server where the IM protocol supports it.

Meta contacts – these are not fully implemented yet, but the little + signs next to each contact in the list show they are partially there. At the moment, fake meta contacts are created for all contacts, but support is nearly complete for real metacontacts where the user has indicated two contacts belong to the same person.

Meta contacts in particular are exciting because they use Nepomuk’s PIMO ontology, meaning that they are accessible not just to Instant Messaging applications, but can be used by any Nepomuk enabled app.

That’s all for today, but hopefully I’ll have more exciting stuff to report on soon (no promises, because I’m planning on writing unit tests for what we have so far before I implement any more new features).

Hello World! It’s been a long time since I last wrote anything here, and for that I’m sorry. The autumn was consumed by university work, and the last few weeks I’ve been discreetly coding and writing to get everything ready for this announcement. Anyway, without further irrelevance, let me present the KDE Real-time Communication and Collaboration Project. You’ve probably heard me blathering about Telepathy before, but now for the first time we have a coherent plan for world domination, concocted by Abner Silva, Matt Rogers and myself (with help from many other people).

Provide infrastructure for collaborative features in KDE SC applications.

So, if any of this interests you, we’d love your help. Hop in to #kde-telepathy on freenode IRC, or join our mailing list.

And, while you’re at it, why not take a look at our code so far.

The Code So Far…

Warning: this is highly experimental code which may cause all kinds of side effects, especially the Nepomuk related stuff, which is likely to make a complete mess of your Nepomuk database, so use with care.

If you’ve read the above warning and want to take a look at what we’ve done so far, here are some instructions. For the first phase of this project, our attentions are focused on building Telepathy based components for basic IM usage on top of the existing Kopete codebase. So far, you can create an account (Jabber is the only kind tested, so expect minor bugs with other protocols), set its presence and see a list of your contacts. Not the most exciting stuff ever, but with this core stuff in place, more features should arrive very soon.

Prerequisites

You need recent telepathy-mission-control-5, telepathy-gabble and telepathy-qt4. Best to install these from your distribution. If telepathy-qt4 is not provided, or older than 0.2.0, then download the source here.

You can run it by calling telepathy-integration-daemon on the command line.

Contact List App

Finally, in order to see our contact list, we need a contact list app installed. Currently, this is in the very early stages of development, but you can at least see a list of contacts in it (although you can’t interact with that list yet). Source code is at:

It’s quite a few weeks since I promised I’d write a guide to trying out the Kopete Telepathy plugin, but better late than never…

The current state of the code is as follows:

1-1 text chat using telepathy-gabble (jabber/xmpp/google talk) is the only form of communication implemented.

This is still very much playground-quality software, so expect it to be full of bugs and crashes. However, it is now mature enough that I’d really appreciate reports for any bugs you find (Please report them to bugs.kde.org product ‘Telepathy’ and component ‘kopete-protocol-telepathy’). Only yesterday did a bug where messages were sent to the wrong people come to light, so be careful what you say until it’s more stable!

Prerequisites (compile in this order, or use distro packages where available):

Last week was, yet again, a busy week for Telepathy/KDE. The Kopete Telepathy plugin continues to mature, and is now only about 3 showstopper bugs short of being ready for testing. So, look forward to a blog post later this week detailing how to take it for a spin.

I’m really busy at the moment, and don’t really want to drag myself away from coding for too long, so here’s a quick list of last weeks progress:

Kopete Telepathy plugin now doesn’t lose any messages you send during the first couple of seconds of a chat (while telepathy code is still setting up).

Many other small bugs fixed in Kopete Telepathy plugin.

The Telepathy Account Management KCM now has a nice custom UI (which is a lot friendlier than the autogenerated one) for Gabble/Jabber accounts (which I expect will be the most common ones for testing with, since Gabble is by far the most full-featured Telepathy Connection Manager).

Lots of refactoring and code reduction and tidyup to start the accounts KCM and Kopete Telepathy plugin down the long road to being ready for kdereview 🙂

And, as always, I’m not the only person working on Telepathy/KDE. Some (but by no means all) of the other things going on last week were:

Matteo Nardi submitted a couple more patches to the Acocunts KCM, this time making the Protocol selection a bit nicer when adding an account by easing user interaction with the widget and making common protocol names localisable.

Abner has pretty much finished the 0.1 version of the stunning new presence plasmoid (more on that soon).

I’ll probably be back again mid-week with some (finally!) details of how to try out telepathy in KDE (warning, extremely pre-alpha software!!!).

A week has gone by, and not only am I here writing again like I promised last Monday, but I even managed to blog once in between! So, what has been going on in the last week in Telepathy land?

Telepathy Junior Jobs

The biggest success of last week for me was the Telepathy Junior Jobs. I blogged about them last Wednesday, and already, two new contributors have submitted patches for five of the nine JJs. However, there are still some left if you want to get involved!

Telepathy Accounts KCM

The Account Management UI is looking a lot nicer, and now supports removing accounts, among other things contributed by the new folks. Thanks for the patches Matteo Nardi and Lorenzo Masini 🙂

The Add Account Assistant now fully supports plugins for custom user interfaces for different protocols/connection managers (falling back to the autogenerated generic UI when no custom plugin is available).

Common parameter names in the autogenerated UI are now translatable (allowing for a best attempt at localisation in the generic UI).

Editing accounts is partially implemented. I should finish this early this week.

Lots of finishing touches to come this week, and it should be safe for use by early-adopters by next Monday!

That’s all for this weekly update. I should be back again later this week, or else next Monday with another update.

The work to integrate Telepathy in KDE has been progressing well for a number of months now, and it is finally reaching the stage where you don’t need to be a Telepathy ninja or someone with a lot of spare time and patience to be able to contribute. So, if real-time communication and collaboration is something that excites and interests you, and you’d like a way to get started without having to take on a huge and complex task, I have something just for you:

In the spirit of Junior Jobs throughout KDE, these are relatively small tasks that can be accomplished without needing an in-depth knowledge of a huge codebase. The perfect way to get started in KDE or Telepathy/KDE. We’re regularly filing new Junior Jobs on bugzilla, so there should be plenty to choose from. If you want to take on a task, please leave a comment on the bug saying you’re working on it, and drop by to #kde-telepathy on Freenode IRC if you need any help. If you’ve never contributed code to KDE before, Junior Jobs are a great way to get started, and if you’re already a contributor, they are a good way to get acquainted with a new section of the codebase.

In yet another probably-doomed attempt to write regularly about my KDE work, I’m going to try writing a weekly update every Monday on what I was working on the previous week. Lets see how long this lasts. (My bet is on 2 weeks).

Since this is the first one, and I’ve been back from GCDS for two weeks, I’ll cover the progress of both weeks.

Kopete’s Telepathy Plugin

There is a protocol plugin for Kopete that allows Telepathy accounts to be added to it as if it were just another protocol. It has existed for years, but has never quite been in working order. I’ve been working on this for the last two weeks, and now it is approaching being usable.

The Contact List works (with some basic management features like add/delete contacts, but not others like approving presence subscription requests).

Accounts are stored in the central Telepathy Account Manager daemon. However, only accounts added to the Account Manager through Kopete’s Add Account Assistant are accepted by Kopete (not if they are already in the Account Manager from some other source)

Channels are dispatched and handled through the central Telepathy Channel Dispatcher daemon, allowing you to have text chats with your contacts.

The Add/Edit Account pages are still horrible, but I’m going to integrate the Add Account Assistant from the KCM which I’ll describe below once it is ready.

Telepathy Account Management KCM

In the flying-car future of deep Telepathy integration with KDE, there should be one central UI which takes care of adding/editing/removing instant messaging accounts. This will exist in the form of a KCM Module (which can be invoked by any application wanting a “Add Account” button in its UI). In order to reduce code duplication, it is being designed so that classes from it can be reused with a minimum of effort in Kopete for the Telepathy protocol plugin’s account management features.

Features that have been implemented so far include:

Display a list of valid and invalid Telepathy Accounts.

Checkbox to enable/disable Accounts and show their icons (Thanks to Matteo Nardi for the patch)

I’m writing this on the plane back from Freiburg, and the Nepomuk Coding sprint. It’s a beautiful town (except late at night during the weekend, but anyway…) and well worth visiting again (hopefully there’ll be a Nepomuk Sprint 2010).

Now to the important details. As I often seem to at these kind of events, I find myself leaving with less code written than I arrived with. However, when put in context, this is no bad thing. Nepomuk is a new technology, and is not entirely straight forward for a newcomer to understand. I arrived with intentions of integrating Telepathy with Nepomuk, but with little clue how to actually do this. And the results: I know understand enough about how Nepomuk works to make a plan, and start coding on integrating with Telepathy (unfortunately most of the code I wrote in the few days beforehand with this aim turns out to be so wrong it’s best just to throw it away and start again).

There are two ways in which Telepathy will be integrated with Nepomuk. One is the fairly obvious case of storing metadata about your IM buddies. Some examples of this might be: the last time they were seen online or the geolocation at which they were last online using the Location interface of Telepathy). I’d love to hear any more suggestions of metadata that it might be good to store on your instant messaging and VoIP contacts (please use the comments section at the end).

The second integration point is a little different. It concerns the idea of metacontacts. Users of IM clients such as Kopete are probably familiar with the idea that you can group two buddies on different protocols, who are the same person in real-life, together as one metacontact. I intend to implement this for Telepathy applications’ contact lists using Nepomuk to store the relation between the different buddies. The advantage of doing this is that not just your IM client, but any Nepomuk enabled application can see this relationship.

So, that’s my rather superficial hand-wavy summary of the plans that came out of the Nepomuk sprint for Telepathy. I hope to write again soon to provide a mercilessly technical explanation of how all this will/is being implemented.

Finally, I’d just like to say thank you very much to Sebastian Trueg who did such a great job of organising this sprint.

I haven’t written anything for a couple of months now for the same reason that I haven’t committed any code. Exams. Now they’re over it’s back to hacking. But just because I haven’t been working on Telepathy/KDE for a while doesn’t mean that nothing has been done (obviously).

The underlying TelepathyQt4 library on which all our work is based has progressed a lot, gaining support for requesting channels from the Channel Dispatcher, gaining the Client interfaces and going through what will almost certainly be the last major API redesign before it goes stable. These two advances mean that it is now possible to work on Telepathy client applications in Qt/KDE without having to play an endless game of API catch-up.

There are also two summer of code projects progressing nicely:
– George Kiagiadakis (gkiagia)’s workonKCall is really exciting… I can’t wait to take part in my first video conference using KDE software!
– Kaushik Saurabh (roide) is also making great progress on his Conversation Logging Framework for KDE (while not entirely a Telepathy project, it goes without saying that the two will be integrated).

And now to the future… to Friday. I’ll be at the Nepomuk Sprint in Freiburg working on integrating instant messaging buddies with the address book and the semantic desktop. I’m not yet exactly sure how this will be done, but I’ll be spending the next 2 days up until the sprint getting that nailed down, and then coding madly once I get there. I really hope there can be something photogenic as a result, since libraries provide very limited picture-potential for this blog.

A couple of weeks ago, I started an attempt to give regular updates on what’s going on with Telepathy development in KDE. Unfortunately, I’ve fallen behind already (thanks to a insanely busy fortnight), but hopefully I can catch up, so here’s a list of what’s going on at the moment:

Porting of existing Telepathy stuff in KDE to use the new library, telepathy-qt4.

Number one is annoying but necessary. Although it doesn’t get us any closer to having full-blown Telepathy awesomeness in KDE, it needs to be done. The old telepathy-qt library (and tapioca-qt, which it was used in conjunction with) is unmaintained and seriously showing its age. It also has a horrible flaw – it is a synchronous API. Although synchronous API’s are nice to work with, they end up driving you mad in a situation where many API calls require slow network roundtrips behind the scenes. The result was slow applications with regularly blocking GUI’s. eugh. telepathy-qt4 is a new library that is currently under heavy development. It is fully asynchronous and designed with future extensibility in mind. Its got a fair way to go yet, but given the current pace of development that shouldn’t be long in terms of time. So, back to how this affects KDE. We are porting all existing Telepathy stuff inside KDE to use this new library.

On point number two, Siraj Razick has done some great work on the Presence plasma applet and dataengine. They now allow you to set your presence as well as show it. The presence applet is still rather ugly, but work is ongoing to make it truly beautiful. Expect an update with pictures as soon as this work is complete.

Number three: Dariusz Mikulski (Polish only) has been working to bring the bit-rotted Telepathy plugin for Kopete up to date. Work is progressing fast with that – last time I tried it, I could create accounts, and bring them on and offline, and see my buddies list. Again, expect more updates on that as it evolves, hopefully with screenshots too next time.

So, in summary – lots going on, lots of busy people, but still loads more to do. And just in case you missed my post last week – if all this sounds really cool, why not join in the fun by applying for a Google Summer of Code project.

[Disclaimer: This blog post talks about applications that are incomplete and not available in released versions of KDE – in other words – the stuff being talked about here may break or disappear at any time… you have been warned]