diff --git a/extensions/Channel_Interface_Conference.xml b/extensions/Channel_Interface_Conference.xml
new file mode 100644
index 0000000..af3e627
--- /dev/null
+++ b/extensions/Channel_Interface_Conference.xml
@@ -0,0 +1,400 @@
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA. An interface for multi-user conference channels that can "continue
+ from" one or more individual channels. This interface addresses freedesktop.org bug
+ #24906 (GSM-compatible conference calls) and bug
+ #24939 (upgrading calls and chats to multi-user).
+ See those bugs for rationale and use cases. Examples of usage: Active and held GSM calls C1, C2 can be merged into a single
+ channel Cn with the Conference interface, by calling
+ An XMPP 1-1 conversation C1 can be continued in a newly created
+ multi-user chatroom Cn by calling
+ An XMPP 1-1 conversation C1 can be continued in a specified
+ multi-user chatroom by calling
+ Either of the XMPP cases could work for Call channels, to
+ upgrade from 1-1 Jingle to multi-user Muji. Any of the XMPP cases
+ could in principle work for link-local XMPP (XEP-0174). The underlying switchboard representing an MSN 1-1 conversation C1
+ with a contact X can be moved to a representation as a nameless
+ chatroom, Cn, to which more contacts can be invited, by calling
+ XMPP and MSN do not natively have a concept of merging two or more
+ channels C1, C2... into one channel, Cn. However, the GSM-style
+ merging API can be supported on XMPP and MSN, as an API short-cut
+ for upgrading C1 into a conference Cn (which invites the
+ TargetHandle of C1 into Cn), then immediately inviting the
+ TargetHandle of C2, the TargetHandle of C3, etc. into Cn as well. With a suitable change of terminology, Skype has behaviour similar
+ to MSN. The In the GSM case, the Conference's Group interface MAY have
+ channel-specific handles, to reflect the fact that the identities of
+ the participants might not be known - it can be possible to know that
+ there is another participant in the Conference, but not know who
+ they are.
+ [FIXME: fact check from GSM gurus needed]
+ In the XMPP case, the Conference's Group interface SHOULD have
+ channel-specific handles, to reflect the fact that the participants
+ have MUC-specific identities, and the user might also be able to see
+ their global identities, or not. In most other cases, including MSN and link-local XMPP, the
+ Conference's Group interface SHOULD NOT have channel-specific
+ handles, since users' identities are always visible. Connection managers implementing channels with this interface
+ MUST NOT allow the object paths of channels that could be merged
+ into a Conference to be re-used, unless the channel re-using the
+ object path is equivalent to the channel that previously used it. If you upgrade some channels into a conference, and then close
+ the original channels, For instance, on protocols where you can only have
+ zero or one 1-1 text channels with Emily at one time, it would
+ be OK to re-use the same object path for every 1-1 text channel
+ with Emily; but on protocols where this is not true, it would
+ be misleading. The individual This property MUST NOT be requestable.
+ [FIXME: or would it be better for this one, and not IC, to be
+ requestable?]
+ Change notification is via the
+ Emitted when a new channel is added to the value of
+ Emitted when a channel is removed from the value of
+ [FIXME: relative ordering of this vs. Closed? Do we
+ care?] The initial value of This property SHOULD be requestable. Omitting it from a request is
+ equivalent to providing it with an empty list as value. Requests
+ where its value has at least two elements SHOULD be expected to
+ succeed on any implementation of this interface. Whether a request with 0 or 1 elements in the list will succeed is
+ indicated by In GSM, a pair of calls can be merged into a conference. In XMPP
+ and MSN, you can create a new chatroom, or upgrade one 1-1 channel
+ into a chatroom; however, on these protocols, it is also possible
+ to fake GSM-style merging by upgrading the first channel, then
+ inviting the targets of all the other channels into it. If possible, the In Jingle, nothing special will happen to merged calls. UIs MAY
+ automatically place calls on hold before merging them, if that is
+ the desired behaviour; this SHOULD always work. Not doing
+ an implicit hold/unhold seems to preserve least-astonishment. [FIXME: check whether ring supports faking Hold on both
+ channels, as it probably should: see #24906 comment 6]
+ In GSM, the calls that are merged go into a state similar to
+ Hold, but they cannot be unheld, only split from the conference
+ call using Depending on the protocol, it might be signalled to remote users
+ that this channel is a continuation of all the requested channels,
+ or that it is only a continuation of the first channel in the
+ list. In MSN, the conference steals the underlying switchboard (protocol
+ construct) from one of its component channels, so the conference
+ appears to remote users to be a continuation of that channel and no
+ other. The connection manager has to make some arbitrary choice, so
+ we arbitrarily mandate that it SHOULD choose the first channel in
+ the list as the one to continue. This property is immutable. A list of additional contacts invited to this conference when it
+ was created. This property SHOULD be requestable, and appear in the allowed
+ properties in If included in a request, the given contacts are automatically
+ invited into the new channel, as if they had been added with
+ This is a simple convenience API for the common case that a UI
+ upgrades a 1-1 chat to a multi-user chat solely in order to invite
+ someone else to participate. At most one of InitialInviteeHandles and InitialInviteeIDs may
+ appear in each request. If the local user was not the initiator of this channel, the
+ This property is immutable. A list of additional contacts invited to this conference when it
+ was created. This property SHOULD be requestable, as an alternative to
+ At most one of InitialInviteeHandles and InitialInviteeIDs may
+ appear in each request. When a channel is created, the values of InitialInviteeHandles and
+ InitialInviteeIDs MUST correspond to each other. This property is immutable. The message that was sent to the
+ This property SHOULD be requestable, and appear in the allowed
+ properties in This allows invitations with a message to be sent when using
+ If the local user was not the initiator of this channel, the
+ message with which they were invited (if any) SHOULD appear in the
+ value of this property. This property is immutable. [FIXME: needs a better name; or perhaps it could be implied
+ by InitialInviteeHandles being requestable in XMPP/MSN but not in
+ GSM?] If true, requests with This property SHOULD appear in Putting this in In XMPP, you can request a channel of type ROOM without
+ incorporating any 1-1 chats at all - indeed, this is the normal
+ way to do it - or as a continuation of a single 1-1 chat, and then
+ invite other people in later. The sense of this property is a bit awkward, but it avoids making it
+ an anti-capability. If the sense were inverted, then its presence in
+ RequestableChannelClasses would imply that the protocol lacks
+ a feature; as it stands, it is additive. (Contrast with
+ If false, In GSM, you can only make a conference call by merging at least
+ two channels.
+ [FIXME: the CM could conceivably fake it, but that would be
+ rather nasty]
+ CreateChannel({...ChannelType: ...Call,
+ ...
+ which returns Cn.CreateChannel({...ChannelType: ...Text,
+ ...
+ which returns Cn.CreateChannel({...ChannelType: ...Text, ...HandleType: ROOM,
+ ...TargetID: 'telepathy@conf.example.com',
+ ...
+ which returns a Conference channel.CreateChannel({...ChannelType: ...Text,
+ ...
+ which returns Cn. C1 SHOULD remain open, with no underlying
+ switchboard attached. If X establishes a new switchboard with the
+ local user, C1 SHOULD pick up that switchboard rather than letting
+ it create a new channel.
+ [FIXME: should it?]
+ Similarly, if the local user sends a message in C1, then
+ a new switchboard to X should be created and associated with C1.