2016-11-01 21:52:57 -04:00
|
|
|
<?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'?>
|
|
|
|
<xep>
|
|
|
|
<header>
|
|
|
|
<title>Spoiler messages</title>
|
|
|
|
<abstract>
|
|
|
|
This specification defines an XMPP protocol extension that provides a
|
|
|
|
method for indicating a message is a spoiler and should be displayed as
|
|
|
|
such.
|
|
|
|
</abstract>
|
|
|
|
&LEGALNOTICE;
|
|
|
|
<number>xxxx</number>
|
|
|
|
<status>ProtoXEP</status>
|
|
|
|
<type>Standards Track</type>
|
|
|
|
<sig>Standards</sig>
|
|
|
|
<approver>Council</approver>
|
|
|
|
<dependencies>
|
|
|
|
<spec>XMPP Core</spec>
|
|
|
|
</dependencies>
|
|
|
|
<supersedes/>
|
|
|
|
<supersededby/>
|
|
|
|
<shortname>NOT_YET_ASSIGNED</shortname>
|
|
|
|
<author>
|
|
|
|
<firstname>Severino</firstname>
|
|
|
|
<surname>Ferrer de la Peñita</surname>
|
|
|
|
<email>soul@blastersklan.com</email>
|
|
|
|
<jid>soul@blastersklan.com</jid>
|
|
|
|
</author>
|
|
|
|
<author>
|
|
|
|
<firstname>Xavier</firstname>
|
|
|
|
<surname>Ferrer de la Peñita</surname>
|
|
|
|
<email>vaulor@openmailbox.org</email>
|
|
|
|
<jid>vaulor@blastersklan.com</jid>
|
|
|
|
</author>
|
|
|
|
<revision>
|
|
|
|
<version>0.0.1</version>
|
|
|
|
<date>2016-10-31</date>
|
2016-11-01 22:22:46 -04:00
|
|
|
<initials>sfp, xfp</initials>
|
2016-11-01 21:52:57 -04:00
|
|
|
<remark><p>First draft.</p></remark>
|
|
|
|
</revision>
|
|
|
|
</header>
|
|
|
|
<section1 topic='Introduction' anchor='intro'>
|
|
|
|
<p>
|
|
|
|
Sometimes, people have the need to send large texts related to the current
|
|
|
|
topic but because of their length, make it hard to follow the conversation
|
|
|
|
(specially on mobile devices). On other occasions, people may want to
|
|
|
|
discuss or just make a little quick comment related to a film or a book in
|
|
|
|
a conversation with multiple people that may or may not know the plot.
|
|
|
|
Also, every now and then, people may want to send a private message (in
|
|
|
|
the sense that people near the receiver must not be able to read) or
|
|
|
|
inline images to someone is known is in a public enviroment like
|
|
|
|
libraries, coffehouses, bars, etc.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
This specification defines a way to indicate message's content does not
|
|
|
|
have to be displayed until receiver requests to do so.
|
|
|
|
</p>
|
|
|
|
</section1>
|
|
|
|
<section1 topic='Discovering support' anchor='disco'>
|
|
|
|
<p>
|
|
|
|
If a client implements spoiler messages, it MUST specify the
|
|
|
|
'urn:xmpp:spoiler:0' feature in its service discovery information
|
|
|
|
features as specified in &xep0030; and the Entity Capabilities profile
|
|
|
|
specified in &xep0115;.
|
|
|
|
</p>
|
|
|
|
<example caption='Client requests information about a chat partner's client'><![CDATA[
|
|
|
|
<iq type='get'
|
|
|
|
from='romeo@montague.net/orchard'
|
|
|
|
id='disco1'>
|
|
|
|
<query xmlns='http://jabber.org/protocol/disco#info'/>
|
|
|
|
</iq>]]></example>
|
|
|
|
<example caption='Partner's client advertises support for spoiler messages'><![CDATA[
|
|
|
|
<iq type='result'
|
|
|
|
to='romeo@montague.net/orchard'
|
|
|
|
from='montague.net'
|
|
|
|
id='disco1'>
|
|
|
|
<query xmlns='http://jabber.org/protocol/disco#info'>
|
|
|
|
…
|
|
|
|
<feature var='urn:xmpp:spoiler:0'/>
|
|
|
|
…
|
|
|
|
</query>
|
|
|
|
</iq>]]></example>
|
|
|
|
</section1>
|
|
|
|
<section1 topic='Use Cases' anchor='usecases'>
|
|
|
|
<p>
|
|
|
|
Messages user wants to be sent as spoilers, MUST contain an
|
|
|
|
<spoiler> element qualified by the 'urn:xmpp:spoiler:0' namespace
|
|
|
|
and optionally, <spoiler> elements may possess a 'hint' attribute
|
|
|
|
that warns about the topic of the spoiler message.
|
|
|
|
</p>
|
|
|
|
<example caption='User sends a spoiler message without the hint attribute'><![CDATA[
|
|
|
|
<message to='romeo@montague.net/orchard' from='juliet@capulet.net/balcony' id='spoiler1'>
|
|
|
|
<body>This is a very long message so I'm going to hide inside a spoiler [...] </body>
|
|
|
|
<spoiler xmlns='urn:xmpp:spoiler:0'/>
|
|
|
|
</message>
|
|
|
|
]]></example>
|
|
|
|
<example caption='User sends a spoiler message with the hint attribute'><![CDATA[
|
|
|
|
<message to='romeo@montague.net/orchard' from='juliet@capulet.net/balcony' id='spoiler2'>
|
|
|
|
<body>And at the end of the story, both of them die! It is so tragic!</body>
|
|
|
|
<spoiler hint='Love story end' xmlns='urn:xmpp:spoiler:0'/>
|
|
|
|
</message>
|
|
|
|
]]></example>
|
|
|
|
</section1>
|
|
|
|
<section1 topic='Business Rules' anchor='rules'>
|
|
|
|
<p>
|
|
|
|
It MUST be clear a message is in fact a spoiler and its content MUST only
|
|
|
|
be displayed upon user's request.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Clients MAY provide a way to display spoilers always uncovered, without
|
|
|
|
the need of interaction by the user (e.g. in the client's settings).
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Clients SHOULD display spoiler's hint, if any, before showing message's
|
|
|
|
content.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Clients MAY display spoiler's hint even after showing message's content
|
|
|
|
(e.g. as a header or title of the message).
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Users SHOULD be able to uncover or hide a spoiler message at will,
|
|
|
|
anytime.
|
|
|
|
</p>
|
|
|
|
</section1>
|
|
|
|
<section1 topic='Security Considerations' anchor='security'>
|
|
|
|
<p>
|
|
|
|
This document introduces no additional security considerations above and
|
|
|
|
beyond those defined in the documents on which it depends.
|
|
|
|
</p>
|
|
|
|
</section1>
|
|
|
|
<section1 topic='IANA Considerations' anchor='iana'>
|
|
|
|
<p>This document requires no interaction with &IANA;.</p>
|
|
|
|
</section1>
|
|
|
|
<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
|
|
|
|
<section2 topic='Protocol Namespaces' anchor='registrar-ns'>
|
|
|
|
<p>This specification defines the following XML namespace:</p>
|
|
|
|
<ul>
|
|
|
|
<li>'urn:xmpp:spoiler:0'</li>
|
|
|
|
</ul>
|
|
|
|
<p>
|
|
|
|
Upon advancement of this specification to draft status, the ®ISTRAR;
|
|
|
|
shall include the foregoing namespaces in its registry of protocol
|
|
|
|
namespaces &NAMESPACES; and in its disco features registry
|
|
|
|
&DISCOFEATURES; as defined in &xep0030;.
|
|
|
|
</p>
|
|
|
|
<code caption='Registration'><![CDATA[
|
|
|
|
<var>
|
|
|
|
<name>urn:xmpp:spoiler:0</name>
|
|
|
|
<desc>Indicates that a message should be hidden by default.</desc>
|
|
|
|
<doc>xxxx</doc>
|
|
|
|
</var>
|
|
|
|
]]></code>
|
|
|
|
</section2>
|
|
|
|
</section1>
|
|
|
|
<section1 topic='XML Schema' anchor='schema'>
|
|
|
|
<code><![CDATA[
|
|
|
|
<?xml version='1.0' encoding='UTF-8'?>
|
|
|
|
|
|
|
|
<xs:schema
|
|
|
|
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
|
|
|
targetNamespace='urn:xmpp:spoiler:0'
|
|
|
|
xmlns='urn:xmpp:spoiler:0'
|
|
|
|
elementFormDefault='qualified'>
|
|
|
|
|
|
|
|
<xs:element name='spoiler'>
|
|
|
|
<xs:complexType>
|
|
|
|
<xs:simpleContent>
|
|
|
|
<xs:extension base='xs:string'>
|
|
|
|
<xs:attribute name='hint' type='xs:string'/>
|
|
|
|
</xs:extension>
|
|
|
|
</xs:simpleContent>
|
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
|
|
|
|
|
|
|
|
</xs:schema>
|
|
|
|
]]></code>
|
|
|
|
</section1>
|
|
|
|
</xep>
|