path: root/docs
diff options
authorWill Thompson <>2010-10-26 16:22:06 +0100
committerWill Thompson <>2010-10-26 17:21:18 +0100
commit885b33c2a7a9e60dd999184c9f342ffc8e02b06c (patch)
tree3cc762e9c2e9b2bbc9b15dc39adf3a42f78d8bbb /docs
parentfcf7256b321939d73fac8ae53daa6c817b0ab574 (diff)
Add a summary of how tube caps work.
I just typed this out in an email, and thought it worth saving it somewhere. Reviewed-by: Jonny Lamb <>
Diffstat (limited to 'docs')
2 files changed, 42 insertions, 0 deletions
diff --git a/docs/ b/docs/
index 3e3dae900..485c2d8b0 100644
--- a/docs/
+++ b/docs/
@@ -13,6 +13,7 @@ html_DATA = \
$( \
$(html_DATA:.html=.xml) \
+ tube-caps.txt \
xep.dtd \
xep.ent \
xep.xsd \
diff --git a/docs/tube-caps.txt b/docs/tube-caps.txt
new file mode 100644
index 000000000..e00c74a2f
--- /dev/null
+++ b/docs/tube-caps.txt
@@ -0,0 +1,41 @@
+Tubes are meant to allow arbitrary applications to communicate with your IM
+contacts. To know whether it's possible to start a StreamTube or DBusTube
+channel with a contact, we need to know whether they support tubes at all:
+Gabble advertises the capability ""
+(NS_TUBES) for that.
+But we also need to know whether, for example, Bob has an application that can
+handle VNC stream tubes (for Share My Desktop). At the XMPP level, that's
+implemented as advertising
+Gabble knows how to translate between this representation and the
+representation used on D-Bus.
+For XMPP → Telepathy, it translates
+"$foo" into the channel
+ { ChannelType: StreamTube,
+ StreamTube.Service: $foo,
+ }
+In the other direction, it looks through the channel classes passed to
+ContactCapabilities.UpdateCapabilities and performs the reverse translation to
+figure out what to advertise on XMPP.
+Mission Control calls UpdateCapabilities by basically concatenating every
+installed or running client's HandlerChannelFilter property. So if you have a
+client installed that says it can handle
+ { ChannelType: StreamTube,
+ StreamTube.Service: "vnc",
+ }
+MC relays that fact to Gabble, and Gabble can advertise the right
+Thus, Gabble doesn't need to know anything at all about the possible
+applications that can be built on tubes to be able to advertise support for