[Telepathy] New channel request/announcement/dispatch interfaces
Simon McVittie
simon.mcvittie at collabora.co.uk
Thu Mar 20 06:28:19 PDT 2008
I'm currently working on replacing large parts of the Telepathy spec
core - following on from MessageParts and DeliveryReporting (which could
be called "Text channel 2.0"), I'm now rethinking the
RequestChannel/NewChannel API. This will also naturally feed into work
on a ChannelDispatcher API that can be implemented by Mission Control
(and hopefully other implementations, like Decibel).
My work so far is at <http://monkey.collabora.co.uk/tp-spec-smcv-requests/>.
The central issues with the current mechanisms are:
* channels identified by properties other than handle type and handle are
second-class citizens
- nickname when joining a MUC
(https://bugs.freedesktop.org/show_bug.cgi?id=13348)
- server when doing a room list on XMPP
(https://bugs.freedesktop.org/show_bug.cgi?id=13346)
- XMPP message threading (unique per (contact, thread-ID) tuple)
- SIP dialogs/call-IDs associating text messages (similar to XMPP
message threading, I think?)
* we want to signal additional properties at channel-creation time, to
minimize the risk of them getting lost
- incoming/outgoing channel (good for logging)
- initiator of a call
(partly addresses https://bugs.freedesktop.org/show_bug.cgi?id=14606)
* file transfers and Tubes are hard to dispatch correctly with the current APIs
- we should turn them into channels - but then we need a way to
associate tubes with the chatroom/text channel they're attached to
Rob and I have come up with the following design:
* channels are not necessarily unique per (channel type, handle type,
handle) any more - necessary for proper support of XMPP message threads
and "call IDs"/dialogs on SIP text messages, and very useful for
collaborative apps using Tubes on the desktop
* channels can be grouped somehow (this is necessary for Tubes and probably
useful for file transfers)
* grouped channels that open at the same time are signalled together
* grouped channels are dispatched together (this is necessary for OLPC
(if they ever use MC, which I'd like) and for collaborative apps using
Tubes on the desktop)
* channels are announced with an a{sv} of (D-Bus core) properties, including
handle type, handle, channel type, ... but potentially also others
- only properties which are immutable can be mentioned, to avoid races
- this reduces the amount of bootstrapping necessary to go from an
announcement to a channel with all its properties (fewer round trips)
* capabilities interface is extended to catch up
I'll try to expand on this in future emails.
Simon
More information about the Telepathy
mailing list