This commit is contained in:
stpeter 2011-04-20 10:28:07 -06:00
parent 93e3c72256
commit c5510443f0
1 changed files with 189 additions and 8 deletions

View File

@ -10,7 +10,7 @@
<abstract>This specification defines a method for microblogging over XMPP.</abstract>
&LEGALNOTICE;
<number>0277</number>
<status>Deferred</status>
<status>Experimental</status>
<type>Standards Track</type>
<sig>None</sig>
<approver>Council</approver>
@ -20,6 +20,19 @@
<shortname>NOT YET ASSIGNED</shortname>
&stpeter;
&hildjj;
<author>
<firstname>Valérian</firstname>
<surname>Saliou</surname>
<email>vanaryon@gmail.com</email>
<jid>vanaryon@jappix.com</jid>
<uri>http://vanaryon.eu/</uri>
</author>
<revision>
<version>0.2</version>
<date>2011-04-20</date>
<initials>vs</initials>
<remark><p>Added file attachment and commenting features; updated XML namespaces in examples.</p></remark>
</revision>
<revision>
<version>0.1</version>
<date>2010-01-27</date>
@ -50,7 +63,7 @@
<section2 topic='Location' anchor='location'>
<p>A person's microblog SHOULD be located at a personal eventing (PEP) node whose name is "urn:xmpp:microblog:0" but MAY be located at a generic publish-subscribe node that is not attached to a user's IM account. For instance, if the Shakespearean character Romeo has a JabberID of &lt;romeo@montague.lit&gt; then his microblog would be located at that JID with a node of "urn:xmpp:microblog:0". Outside of native XMPP systems, this node can be referred to as the following XMPP URI (the ":" character from the namespace URN is percent-encoded in the query component; see &rfc5122; and &rfc3986;).</p>
<code><![CDATA[
xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog
xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Amicroblog%3A0
]]></code>
<p>Naturally, this node can be discovered by contacting romeo@montague.lit directly using &xep0030;.</p>
</section2>
@ -80,6 +93,7 @@ xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog
<updated>2008-05-08T18:30:02Z</updated>
<author>
<name>Romeo Montague</name>
<uri>xmpp:romeo@montague.lit</uri>
</author>
</source>
<title>hanging out at the Caf&amp;#233; Napolitano</title>
@ -87,7 +101,7 @@ xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog
type='text/html'
href='http://montague.lit/romeo/posts/1cb57d9c-1c46-11dd-838c-001143d5d5db'/>
<link rel='alternate'
href='xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog;item=1cb57d9c-1c46-11dd-838c-001143d5d5db'/>
href='xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Amicroblog%3A0;item=1cb57d9c-1c46-11dd-838c-001143d5d5db'/>
<id>tag:montague.lit,2008-05-08T18:30:02Z:posts-1cb57d9c-1c46-11dd-838c-001143d5d5db</id>
<published>2008-05-08T18:30:02Z</published>
<updated>2008-05-08T18:30:02Z</updated>
@ -116,6 +130,7 @@ xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog
<updated>2008-05-08T18:30:02Z</updated>
<author>
<name>Romeo Montague</name>
<uri>xmpp:romeo@montague.lit</uri>
</author>
</source>
<title>hanging out at the Caf&amp;#233; Napolitano</title>
@ -123,7 +138,7 @@ xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog
type='text/html'
href='http://montague.lit/romeo/posts/1cb57d9c-1c46-11dd-838c-001143d5d5db'/>
<link rel='alternate'
href='xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog;item=1cb57d9c-1c46-11dd-838c-001143d5d5db'/>
href='xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Amicroblog%3A0;item=1cb57d9c-1c46-11dd-838c-001143d5d5db'/>
<id>tag:montague.lit,2008-05-08T18:30:02Z:posts-1cb57d9c-1c46-11dd-838c-001143d5d5db</id>
<published>2008-05-08T18:30:02Z</published>
<updated>2008-05-08T18:30:02Z</updated>
@ -154,6 +169,7 @@ xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog
<updated>2008-05-08T18:31:21Z</updated>
<author>
<name>Benvolio Montague</name>
<uri>xmpp:romeo@montague.lit</uri>
</author>
</source>
<title>@romeo cappuccino this late in the day?</title>
@ -162,9 +178,9 @@ xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog
href='http://montague.lit/benvolio/posts/c4145006-1c53-11dd-b2d5-000bcd82471e'/>
<link rel='alternate'
href='xmpp:benvolio@montague.lit?;
node=urn%3Axmpp%3Atmp%3Amicroblog;
node=urn%3Axmpp%3Amicroblog%3A0;
item=c4145006-1c53-11dd-b2d5-000bcd82471e'/>
<id>tag:montague.lit,2008-05-08T18:31:21Z:posts-c4145006-1c53-11dd-b2d5-000bcd82471e'</id>
<id>tag:montague.lit,2008-05-08T18:31:21Z:posts-c4145006-1c53-11dd-b2d5-000bcd82471e</id>
<published>2008-05-08T18:31:21Z</published>
<updated>2008-05-08T18:31:21Z</updated>
<thr:in-reply-to
@ -173,7 +189,7 @@ xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog
href='http://montague.lit/romeo/posts/1cb57d9c-1c46-11dd-838c-001143d5d5db'/>
<thr:in-reply-to
ref='tag:montague.lit,2008-05-08T18:30:02Z:posts-1cb57d9c-1c46-11dd-838c-001143d5d5db'
href='xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog;item=1cb57d9c-1c46-11dd-838c-001143d5d5db'/>
href='xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Amicroblog%3A0;item=1cb57d9c-1c46-11dd-838c-001143d5d5db'/>
</entry>
</item>
</publish>
@ -182,6 +198,171 @@ xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog
]]></example>
<p>Assuming that Romeo has also shared presence with Benvolio and has advertised support for "urn:xmpp:microblog:0+notify", he will receive the reply that Benvolio sent.</p>
</section2>
<section2 topic='Repeating a Post' anchor='repeat'>
<p>When Benvolio wants to repeat a Romeo's post, his client publishes the same post under a different name. But to be able to track the repeated post original author, Benvolio's client MAY use two specific &lt;author /&gt; child nodes, &lt;name /&gt; and &lt;uri /&gt;, containing, respectively, the name of the original post author, and his XMPP URI (JID).</p>
<p>If a comments link is present (see the <link url='#comments_node'>Comments node</link> section of this document), the client SHOULD repeat it to keep the same discussion about the post.</p>
<example caption="Repeating a Post"><![CDATA[
<iq from='benvolio@montague.lit/mobile'
id='pub2'
to='benvolio@montague.lit'
type='set'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='urn:xmpp:microblog:0'>
<item id='1re57d3c-1q46-11dd-748r-024943d2d5rt'>
<entry xmlns='http://www.w3.org/2005/Atom'>
<source>
<title>Benvolio&amp;apos;s Microblog</title>
<link href='http://montague.lit/benvolio'/>
<id>tag:montague.lit,2008:home</id>
<updated>2008-05-08T18:30:02Z</updated>
<author>
<name>Romeo Montague</name>
<uri>xmpp:romeo@montague.lit</uri>
</author>
</source>
<title>hanging out at the Caf&amp;#233; Napolitano</title>
<link rel='alternate'
type='text/html'
href='http://montague.lit/benvolio/posts/1re57d3c-1q46-11dd-748r-024943d2d5rt'/>
<link rel='alternate'
href='xmpp:benvolio@montague.lit?;node=urn%3Axmpp%3Amicroblog%3A0;item=1re57d3c-1q46-11dd-748r-024943d2d5rt'/>
<id>tag:montague.lit,2008-05-08T18:31:21Z:posts-1re57d3c-1q46-11dd-748r-024943d2d5rt</id>
<published>2008-05-08T18:30:02Z</published>
<updated>2008-05-08T18:32:02Z</updated>
</entry>
</item>
</publish>
</pubsub>
</iq>
]]></example>
<p>Thus, a different author JID value lets the client know the microblog item has been repeated from another one.</p>
</section2>
<section2 topic='Attaching files to a Post' anchor='attach'>
<p>Romeo might want to attach some files, such as pictures of his last vacations, or documents he wants to share. For each file to publish, Romeo's client MUST add a &lt;link /&gt; element. The "href" and "rel" attributes MUST be added; the "title", "type" and "length" ones MIGHT be added.</p>
<example caption="Attaching some files to a Post"><![CDATA[
<iq from='romeo@montague.lit/pda'
id='pub3'
to='romeo@montague.lit'
type='set'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='urn:xmpp:microblog:0'>
<item id='1df87v1q-2d12-43se-761w-318790d3g1sq'>
<entry xmlns='http://www.w3.org/2005/Atom'>
<source>
<title>Romeo&amp;apos;s Microblog</title>
<link href='http://montague.lit/romeo'/>
<id>tag:montague.lit,2008:home</id>
<updated>2008-05-08T18:35:02Z</updated>
<author>
<name>Romeo Montague</name>
<uri>xmpp:romeo@montague.lit</uri>
</author>
</source>
<title>Beautiful Eiffel Tower!</title>
<link rel='alternate'
type='text/html'
href='http://montague.lit/romeo/posts/1df87v1q-2d12-43se-761w-318790d3g1sq'/>
<link rel='alternate'
href='xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Amicroblog%3A0;item=1df87v1q-2d12-43se-761w-318790d3g1sq'/>
<link rel='enclosure'
title='Head in the clouds'
type='image/jpeg'
length='156732'
href='http://montague.lit/romeo/files/uei8327hdz12.jpg'>
<link xmlns='urn:xmpp:microblog:0'
rel='self'
title='thumb'
type='image/jpeg'
length='31723'
href='http://montague.lit/romeo/files/uei8327hdz12_thumb.jpg'/>
</link>
<link rel='enclosure'
title='Trip report'
type='application/pdf'
length='67123'
href='http://montague.lit/romeo/files/82he1oh2084s.pdf'/>
<id>tag:montague.lit,2008-05-08T18:35:02Z:posts-1df87v1q-2d12-43se-761w-318790d3g1sq</id>
<published>2008-05-08T18:35:02Z</published>
<updated>2008-05-08T18:35:02Z</updated>
</entry>
</item>
</publish>
</pubsub>
</iq>
]]></example>
<p>If client can generate some thumbnails images of the attached file (for pictures, videos or documents), it MAY create one or more &lt;link /&gt; sub-elements to the parent file &lt;link /&gt; element. It MUST set "xmlns" attribute to "urn:xmpp:microblog:0"; "rel" attribute to "self"; "title" attribute to "thumb"; "href" to the path of the thumbnail image. It SHOULD also have a "type" attribute specifying the thumbnail file MIME type.</p>
</section2>
</section1>
<section1 topic='Comments' anchor='comments'>
<p>Juliet and Benvolio may want to discuss about latest Romeo's post. Romeo's client MIGHT add a <link /> element to the PubSub item. The element MUST have "rel", "title" and "href" attributes, where "rel" MUST have the "related" value; "title" MUST have the "comments" value; "href" MUST be an XMPP URI (see &rfc5122; and &rfc3986;).</p>
<section2 topic='Comments node' anchor='comments_node'>
<p>We assume Romeo's client first created a comments node (named "urn:xmpp:microblog:0:comments:hash", where "hash" is a client-side generated random hash), with defaults "pubsub#access_model" and "pubsub#publish_model" privacy settings (see &xep0060; for node creation and configuration).</p>
<example caption="Adding a comments link to a Post"><![CDATA[
<iq from='romeo@montague.lit/pda'
id='pub4'
to='romeo@montague.lit'
type='set'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='urn:xmpp:microblog:0'>
<item id='2ze57d9c-1c46-21df-830c-002143d3d2qgf'>
<entry xmlns='http://www.w3.org/2005/Atom'>
<source>
<title>Romeo&amp;apos;s Microblog</title>
<link href='http://montague.lit/romeo'/>
<id>tag:montague.lit,2008:home</id>
<updated>2008-05-08T18:30:02Z</updated>
<author>
<name>Romeo Montague</name>
<uri>xmpp:romeo@montague.lit</uri>
</author>
</source>
<title>hanging out at the Caf&amp;#233; Napolitano</title>
<link rel='alternate'
type='text/html'
href='http://montague.lit/romeo/posts/2ze57d9c-1c46-21df-830c-002143d3d2qgf'/>
<link rel='alternate'
href='xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Amicroblog%3A0;item=2ze57d9c-1c46-21df-830c-002143d3d2qgf'/>
<link rel='related'
title='comments'
href='xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Amicroblog%3A0%3Acomments%3Add88c9bc58886fce0049ed050df0c5f2'/>
<id>tag:montague.lit,2008-05-08T18:38:02Z:posts-2ze57d9c-1c46-21df-830c-002143d3d2qgf</id>
<published>2008-05-08T18:38:02Z</published>
<updated>2008-05-08T18:38:02Z</updated>
</entry>
</item>
</publish>
</pubsub>
</iq>
]]></example>
</section2>
<section2 topic='Adding a comment' anchor='comment_add'>
<p>If Juliet wants to comment Romeo's latest post, her client MUST then send a new Atom entry to the defined PubSub node.</p>
<example caption="Adding a comment to a comments node"><![CDATA[
<iq from='juliet@capulet.lit/pc'
id='comment1'
to='juliet@capulet.lit'
type='set'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='urn:xmpp:microblog:0:comments:dd88c9bc58886fce0049ed050df0c5f2'>
<item id='b2106a80de39ef5ec6b8f7b69cb610c2'>
<entry xmlns='http://www.w3.org/2005/Atom'>
<source>
<author>
<name>Juliet Capulet</name>
<uri>xmpp:juliet@capulet.lit</uri>
</author>
</source>
<title>She is so pretty!</title>
<published>2008-05-08T18:39:02Z</published>
</entry>
</item>
</publish>
</pubsub>
</iq>
]]></example>
<p>If Benvolio wants to retrieve the comments node, his client will send a standard PubSub stanza to request all items (see &xep0060; for all items retrieving).</p>
</section2>
</section1>
<section1 topic='Message Body' anchor='body'>
@ -201,7 +382,7 @@ xmpp:romeo@montague.lit?;node=urn%3Axmpp%3Atmp%3Amicroblog
</section1>
<section1 topic='XML Schema' anchor='schema'>
<p>This specification re-uses the schema for the Atom content format, i.e., the 'http://www.w3.org/2005/Atom' namespace.</p>
<p>This specification re-uses the schema for the Atom content format, i.e., the 'http://www.w3.org/2005/Atom' namespace (see <cite>RFC 4287</cite>).</p>
</section1>
<section1 topic='Acknowledgements' anchor='ack'>