mirror of https://github.com/moparisthebest/xeps
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
219 lines
8.6 KiB
219 lines
8.6 KiB
<?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.2.0</version> |
|
<date>2021-03-09</date> |
|
<initials>@mathieui</initials> |
|
<remark><p>Fix reference to MIX-CORE namespaces</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.1.1</version> |
|
<date>2020-12-01</date> |
|
<initials>gh/@mathieui</initials> |
|
<remark>Fix minor XML formatting issues</remark> |
|
</revision> |
|
<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:1'/> |
|
<feature var='http://jabber.org/protocol/muc'/> |
|
<feature var='urn:xmpp:mix:core:1#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:1'/> |
|
<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>
|
|
|