mirror of
https://github.com/moparisthebest/xeps
synced 2024-11-24 18:22:24 -05:00
208 lines
8.2 KiB
XML
208 lines
8.2 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<!DOCTYPE xep SYSTEM 'xep.dtd' [
|
|
<!ENTITY % ents SYSTEM 'xep.ent'>
|
|
%ents;
|
|
]>
|
|
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
|
|
<?xml-stylesheet type="text/css" href="xmpp.css"?>
|
|
<xep>
|
|
<header>
|
|
<title>Mediated Information eXchange (MIX): Co-existence with MUC</title>
|
|
<abstract>This document defines an extension to Mediated Information eXchange (MIX) specified in XEP-0369. It specifies how MIX and MUC can be operated together. </abstract>
|
|
&LEGALNOTICE;
|
|
<number>0408</number>
|
|
<status>Deferred</status>
|
|
<type>Standards Track</type>
|
|
<sig>Standards</sig>
|
|
<approver>Council</approver>
|
|
<dependencies>
|
|
<spec>XMPP Core</spec>
|
|
<spec>XMPP IM</spec>
|
|
<spec>XEP-0004</spec>
|
|
<spec>XEP-0030</spec>
|
|
<spec>XEP-0054</spec>
|
|
<spec>XEP-0060</spec>
|
|
<spec>XEP-0084</spec>
|
|
<spec>XEP-0128</spec>
|
|
<spec>XEP-0198</spec>
|
|
<spec>XEP-0292</spec>
|
|
<spec>XEP-0297</spec>
|
|
<spec>XEP-0313</spec>
|
|
<spec>XEP-0372</spec>
|
|
</dependencies>
|
|
<supersedes/>
|
|
<supersededby/>
|
|
<shortname>MIX-MUC</shortname>
|
|
&ksmithisode;
|
|
&skille;
|
|
<revision>
|
|
<version>0.1.0</version>
|
|
<date>2018-05-21</date>
|
|
<initials>sek</initials>
|
|
<remark><p>
|
|
Split out from MIX 0.10.0;
|
|
</p></remark>
|
|
</revision>
|
|
|
|
</header>
|
|
<section1 topic='Introduction' anchor='intro'>
|
|
<p>The Mediated Information eXchange (MIX) protocol framework and core capabilities are specified in &xep0369; (MIX-CORE).
|
|
MIX can be used independently of &xep0045; (MUC).
|
|
</p>
|
|
<p>
|
|
It may be desirable to operate a service that provides MIX and MUC together. This specification specifies three options for achieving this.
|
|
</p>
|
|
</section1>
|
|
|
|
|
|
|
|
|
|
|
|
<section1 topic="Supporting MIX and MUC together" anchor="mix-and-muc-together">
|
|
<p>
|
|
If both MIX and MUC are implemented, three approaches are noted.
|
|
</p>
|
|
<ol>
|
|
<li>Entirely separate MIX and MUC implementation, with MIX and MUC using separate domains and MIX channels being completely separate from MUC rooms.</li>
|
|
<li>Fully integrated MIX and MUC implementation, with MIX and MUC sharing a single domain and rooms/channels equivalent.</li>
|
|
<li>Partially integrated MIX and MUC implementation, with MIX and MUC using separate domains, but all rooms/channel are common. This means that each MIX channel will have MUC room of the same name and same participants. </li>
|
|
</ol>
|
|
<p>The fully integrated approach would be transparent to clients. The following example shows how a service that supports MIX and MUC in a fully integrated manner would respond following the specification of &xep0369;:</p>
|
|
<example caption="Client uses Disco to show fully integrated MIX and MUC support" ><![CDATA[
|
|
<iq from='hag66@shakespeare.example/UUID-c8y/1573'
|
|
id='lx09df27'
|
|
to='mix.shakespeare.example'
|
|
type='get'>
|
|
<query xmlns='http://jabber.org/protocol/disco#info'>
|
|
</iq>
|
|
|
|
<iq from='mix.shakespeare.example'
|
|
id='lx09df27'
|
|
to='hag66@shakespeare.example/UUID-c8y/1573'
|
|
type='result'>
|
|
<query xmlns='http://jabber.org/protocol/disco#info'>
|
|
<identity
|
|
category='conference'
|
|
name='Shakespearean Chat Service'
|
|
type='text'/>
|
|
<feature var='urn:xmpp:mix:core:0'/>
|
|
<feature var='http://jabber.org/protocol/muc'/>
|
|
<feature var='urn:xmpp:mix:core:0#searchable'>
|
|
</query>
|
|
</iq>
|
|
]]></example>
|
|
<p>In the fully integrated service item discovery on the MIX/MUC service determines a list of channels. The protocol used for this is the same in MUC and MIX. Discovery actions on a channel in MIX MUST use 'node=mix' attribute in the discovery which will lead to the return of MIX channel specific information, as mandated for this discovery in &xep0369;. If is not set, MUC room specific information is returned.
|
|
</p>
|
|
<p>For the partially integrated service, MIX servers will reference the associated MUC server and MUC servers will reference the associated MIX service. This will allow a client that only support MUC or only supports MIX to find the right server if it is given a reference to the other one. For a client that supports both MUC and MIX, it will enable the client to select its preferred service.
|
|
For a MIX client, it will also be useful to know the MUC service, so that this information can be shared with a MUC client invitation.
|
|
The following example shows how a MIX server identifies the associated MUC server. Note that MUC MUST NOT be advertized as a feature:
|
|
|
|
</p>
|
|
<example caption="Client uses Disco to find MUC server assocated with MIX server" ><![CDATA[
|
|
<iq from='hag66@shakespeare.example/UUID-c8y/1573'
|
|
id='lx09df27'
|
|
to='mix.shakespeare.example'
|
|
type='get'>
|
|
<query xmlns='http://jabber.org/protocol/disco#info'>
|
|
</iq>
|
|
|
|
<iq from='mix.shakespeare.example'
|
|
id='lx09df27'
|
|
to='hag66@shakespeare.example/UUID-c8y/1573'
|
|
type='result'>
|
|
<query xmlns='http://jabber.org/protocol/disco#info'>
|
|
<identity
|
|
category='conference'
|
|
name='Shakespearean Chat Service'
|
|
type='text'/>
|
|
<feature var='urn:xmpp:mix:core:0'/>
|
|
<x xmlns='jabber:x:data' type='result'>
|
|
<field var='FORM_TYPE' type='hidden'>
|
|
<value>urn:xmpp:mix:muc:0#muc-mirror</value>
|
|
</field>
|
|
<field var='muc-mirror'
|
|
type='jid-single'
|
|
label='Location of MUC mirror service'>
|
|
<value>chat.shakespeare.example</value>
|
|
</field>
|
|
</x>
|
|
</query>
|
|
</iq>
|
|
]]></example>
|
|
<p>The result is returned in an extended disco results in a form whose type value is 'urn:xmpp:mix:muc:0#muc-mirror'. The field with var='muc-mirror' is the value of which is the mirrored MUC domain's JID. </p>
|
|
<p>Similarly, a MUC service can advertise an associated MIX doming. The following example shows discovery of a MUC domain. Note that MIX MUST NOT be advertized as a feature</p>
|
|
<example caption="Client uses Disco to find MIX server assocated with MUC server" ><![CDATA[
|
|
<iq from='hag66@shakespeare.example/UUID-c8y/1573'
|
|
id='lx09df27'
|
|
to='mix.shakespeare.example'
|
|
type='get'>
|
|
<query xmlns='http://jabber.org/protocol/disco#info'>
|
|
</iq>
|
|
|
|
<iq from='chat.shakespeare.example'
|
|
id='lx09df27'
|
|
to='hag66@shakespeare.example/UUID-c8y/1573'
|
|
type='result'>
|
|
<query xmlns='http://jabber.org/protocol/disco#info'>
|
|
<identity
|
|
category='conference'
|
|
name='Shakespearean Chat Service'
|
|
type='text'/>
|
|
<feature var='http://jabber.org/protocol/muc'/>
|
|
<x xmlns='jabber:x:data' type='result'>
|
|
<field var='FORM_TYPE' type='hidden'>
|
|
<value>urn:xmpp:mix:muc:0#mix-mirror</value>
|
|
</field>
|
|
<field var='mix-mirror'
|
|
type='jid-single'
|
|
label='Location of MUC mirror service'>
|
|
<value>mix.shakespeare.example</value>
|
|
</field>
|
|
</x>
|
|
</query>
|
|
</iq>
|
|
]]></example>
|
|
<p>The result is returned in an extended disco results in a form whose type value is 'urn:xmpp:mix:muc:0#mux-mirror'. The field with var='mix-mirror' is the value of which is the mirrored MIX domain's JID. </p>
|
|
<section2 topic="Choosing Which Invite to Send" anchor="mix-muc-invite-choice">
|
|
<p>
|
|
Where a client supports MUC and MIX and has determined that for a channel that the server also supports a MUC room, the client has a choice as to which type of invite to send. This SHOULD be done by determining if the client support MIX using the mechanism specified in
|
|
&xep0369;. If the client supports MIX a MIX invite SHOULD be sent.
|
|
</p>
|
|
</section2>
|
|
|
|
</section1>
|
|
|
|
|
|
<section1 topic='Internationalization Considerations' anchor='i18n'>
|
|
<p>See considerations in &xep0369;.
|
|
</p>
|
|
|
|
</section1>
|
|
|
|
<section1 topic='Security Considerations' anchor='security'>
|
|
<p>See considerations in &xep0369;.</p>
|
|
|
|
<p>
|
|
When converting a 1:1 conversation to a channel there is potential to expose sensitive information and to present invalid information.
|
|
</p>
|
|
|
|
</section1>
|
|
|
|
<section1 topic='IANA Considerations' anchor='iana'>
|
|
<p>None.</p>
|
|
</section1>
|
|
|
|
<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
|
|
<p>The urn:xmpp:mix namespace needs to be registered.</p>
|
|
</section1>
|
|
|
|
<section1 topic='XML Schema' anchor='schema'>
|
|
<p>To be supplied when MIX progresses to proposed standard.</p>
|
|
</section1>
|
|
|
|
<section1 topic='Acknowledgements' anchor='ack'>
|
|
<p>See &xep0369; for a list of contributors to the MIX Family of specifications.</p>
|
|
</section1>
|
|
|
|
</xep>
|