[Telepathy] GSoC Idea: XEP-0030 in GTG: Collaborative Getting Things GNOME

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Thu Mar 29 00:48:26 PDT 2012

Le Wednesday 28 March 2012 à 18:29 +0200, Izidor Matušov a écrit :
> Hallo,

Hi Izidor,

> my name is Izidor and I am wannabe GSoC student for Getting Things 
> GNOME! - a ToDO list app for GNOME. I would like to add to GTG sharing 
> of tasks between users over XMPP. I don't want to create my own protocol 
> because:
>    * I was enchanted on this year FOSDEM by XMPP folks and BuddyCloud 
> social network powered by XEP-0030 PubSub
>    * Many people has already XMPP. You don't need to add all your 
> colleagues to GTG. They would be there thanks to your rooster.
>    * I don't like reinventing the wheel and would rather concentrate on 
> higher levels - UI, polishing user experience.

That makes a lot of sense to me; I'm not a PubSub expert but I'm pretty
sure it's flexible enough to fit your needs.

> I skimmed XEP-0030 standard as guys from BuddyCloud have done and it 
> should satisfy most of my needs. The rest could be solved on server side 
> by business logic.

So you are planning to use a server side XMPP plugin as well?

> I am kind of new in Telepathy and so far was able to get list of my 
> online contacts over DBus after couple hours. :-) 

Make sure to use telepathy-glib's client side API, it will make your
life much easier. Thanks to the GObject introspection you can use it in
Python as well; see examples/client/python for some examples.

> I would like to ask 
> about the current state of Telepathy Gabble: Could it solve my needs? 
> What parts would I need to patch to have required features?

Yes, you'll have to write a Gabble plugin (called sidecars) which will
implement a new D-Bus API that you'll use in GTG to access/modify the
I'm not a sidecar expert but IIRC we have a simple skeleton you could
start with. Will?

Note that Wocky (the XMPP library used by Gabble) already has some
pubsub code. You may have to extend it depending of your needs though.

> [GTG required features follow]
> *Get the list of enabled XMPP accounts*
> to choose for user which ones she wants to use

Very easy to do using TpAccountManager.

> *Make those accounts go online although empathy is not running*
> GTG should depend on Empathy if it is running or not

Do you really want to connect the account yourself? That may be tricky
if user connects to IM manually while GTG is running. Should you
disconnect the account when exiting GTG or not?

Note that now you can be connected to IM without having Empathy running
(using Shell's user menu).

> *Create a new PubSub node given the server and XMPP account*

> *Subscribe to a PubSub node on given server and given XMPP account*
> I assume this would create a new DBus path for that combination of node, 
> server, XMPP account.
> *To have a signal for publish notification in DBus for given PubSub node*
> With or without payload based on server
> *Be able to retrieve item payload if notification is without payload"
> *Be able to create a new item, update item or delete item given the node*
> *Be able to receive all items given the node*
> This is for startup of the client. It would be performance improvement 
> if it would be possible through XEP-0312: PubSub Since
> *Be able to manage affilations of given PubSub node*:
> So far we don't want to have big permission models. Users could add 
> other users as Owners (to add friends of their friends) or as outcaster 
> (you don't belong to our project anymore).
> I would like to use 'whitelist access mode' on the server to manage 
> permissions to read tasks.
> Is that possible to do with Telepathy Gabble? How would you solve this?

All of this should be done in your Gabble plugin using Wocky.

> Thanks for your time,

Good luck with your project, I'd love to have such feature!


More information about the telepathy mailing list