summaryrefslogtreecommitdiff
path: root/docs/clique.xml
blob: b4f2066ea8e43a0c5bc272fe3f2ee62259590ba8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep>
<header>
  <title>Clique - link-local chat rooms</title>
  <abstract>A protocol for serverless link-local multi-user chat over
    reliable multicast.</abstract>
  <legal>Copyright (c) 2007 Collabora Limited. This document may be
    distributed under the same terms as the Telepathy specification.</legal>
  <number>proto-clique</number>
  <status>ProtoXEP</status>
  <type>Extension</type>
  <sig>Standards</sig>
  <approver>Telepathy project</approver>
  <dependencies>
    <spec>XMPP Core</spec>
    <spec>XEP-0174</spec>
  </dependencies>
  <supersedes/>
  <supersededby/>
  <shortname>NOT YET ASSIGNED</shortname>
  <author>
    <firstname>Simon</firstname>
    <surname>McVittie</surname>
    <email>simon.mcvittie@collabora.co.uk</email>
    <jid>simon.mcvittie@collabora.co.uk</jid>
  </author>
  <revision>
    <version>0.0.1</version>
    <date>2007-09-26</date>
    <initials>smcv</initials>
    <remark><p>First draft.</p></remark>
  </revision>
</header>
<section1 topic='Introduction' anchor='intro'>
  <p>Clique is an extension of XEP-0174 to support multi-user chat.</p>
</section1>
<section1 topic='Requirements' anchor='reqs'>
  <p>STRONGLY RECOMMENDED.</p>
</section1>
<section1 topic='Glossary' anchor='glossary'>
  <p>OPTIONAL.</p>
</section1>
<section1 topic='Use Cases' anchor='usecases'>
  <section2 topic='Inviting a contact to a room'>
    <code>
      <![CDATA[
      <!-- Sent via TCP from crone1@desktop to hecate@broom -->
      <message from='crone1@desktop' to='hecate@broom'>
        <x xmlns='http://telepathy.freedesktop.org/xmpp/ll/room-invitation'>
          <invite protocol='rmulticast'>
            <roomname>Witchcraft</roomname>
            <address>224.0.0.66</address>
            <port>13251</port>
            <!-- reason is optional -->
            <reason>We need to plot Macbeth's doom, but the XMPP server is
              down</reason>
          </invite>
        </x>
        <!-- for compatibility with legacy clients -->
        <body>You got a chatroom invitation</body>
      </message>
      ]]>
    </code>
  </section2>
</section1>
<section1 topic='Business Rules' anchor='rules'>
  <p>OPTIONAL.</p>
</section1>
<section1 topic='Implementation Notes' anchor='impl'>
  <p>OPTIONAL.</p>
</section1>
<section1 topic='Internationalization Considerations' anchor='i18n'>
  <p>OPTIONAL.</p>
</section1>
<section1 topic='Security Considerations' anchor='security'>
  <p>REQUIRED.</p>
</section1>
<section1 topic='IANA Considerations' anchor='iana'>
  <p>REQUIRED.</p>
</section1>
<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
  <p>None.</p>
</section1>
<section1 topic='XML Schema' anchor='schema'>
  <code>
    <![CDATA[
    <!-- FIXME: the namespace should be
    http://telepathy.freedesktop.org/xmpp/protocol/ll/muc/ or something -->
    <xs:schema
    xmlns:xs='http://www.w3.org/2001/XMLSchema'
      targetNamespace='http://telepathy.freedesktop.org/xmpp/ll/room-invitation'
      xmlns='http://telepathy.freedesktop.org/xmpp/ll/room-invitation'
      elementFormDefault='qualified'>

      <!-- LLMUC invitation. Sent over the IM socket -->

      <xs:element name='x'>
        <xs:complexType>
          <xs:choice>
            <xs:element ref='invite'/>
          </xs:choice>
        </xs:complexType>
      </xs:element>


      <xs:element name='invite'>
        <xs:complexType>

          <xs:attribute name='protocol' use='required'>
            <xs:simpleType>
              <xs:restriction base='xs:string'>
                <!-- Other values may be added in future -->
                <xs:enumeration value='rmulticast'/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>

          <xs:all>
            <xs:element name='roomname' type='xs:string'/>
            <xs:element name='reason' minOccurs='0' type='xs:string'/>

            <!-- Required for the 'rmulticast' protocol -->
            <xs:element name='address' type='xs:string'/>
            <xs:element name='port' type='xs:unsignedShort'/>

            <!-- In OLPC builds, <properties> with NS_OLPC_ACTIVITY_PROPS
              goes here -->
            <xs:any minOccurs='0' maxOccurs='unbounded' namespace='##other'>
          </xs:all>

        </xs:complexType>
      </xs:element>

    </xs:schema>
    ]]>
  </code>
</section1>
</xep>