%ents; ]>
Buddycloud Channels This document describes a profile and conventions for usage of the PubSub protocol in the context of a new type of communication. This XMPP Extension Protocol is copyright (c) 1999 - 2014 by the XMPP Standards Foundation (XSF). Permission is hereby granted, free of charge, to any person obtaining a copy of this specification (the "Specification"), to make use of the Specification without restriction, including without limitation the rights to implement the Specification in a software program, deploy the Specification in a network service, and copy, modify, merge, publish, translate, distribute, sublicense, or sell copies of the Specification, and to permit persons to whom the Specification is furnished to do so, subject to the condition that the foregoing copyright notice and this permission notice shall be included in all copies or substantial portions of the Specification. Unless separate permission is granted, modified works that are redistributed shall not contain misleading information regarding the authors, title, number, or publisher of the Specification, and shall not claim endorsement of the modified works by the authors, any organization or project to which the authors belong, or the XMPP Standards Foundation. ## NOTE WELL: This Specification is provided on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. In no event shall the XMPP Standards Foundation or the authors of this Specification be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the Specification or the implementation, deployment, or other use of the Specification. ## In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall the XMPP Standards Foundation or any author of this Specification be liable for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising out of the use or inability to use the Specification (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if the XMPP Standards Foundation or such author has been advised of the possibility of such damages. This XMPP Extension Protocol has been contributed in full conformance with the XSF's Intellectual Property Rights Policy (a copy of which may be found at < http://www.xmpp.org/extensions/ipr-policy.shtml > or obtained by writing to XSF, P.O. Box 1641, Denver, CO 80201 USA). xxxx ProtoXEP Standards Track Standards Council XMPP Core XEP-0059 XEP-0060 XEP-0313 XEP-0255 XEP-0107 NOT_YET_ASSIGNED Simon Tennant simon@buddycloud.com simon@buddycloud.com Ashley Ward ashley.ward@surevine.com ashley.ward@surevine.com Lloyd Watkin lloyd@evilprofessor.co.uk lloyd@evilprofessor.co.uk 0.0.1 2014-01-29 sdt

First draft.

Buddycloud is a collection of servers, running as XMPP components that enable rich, federated communications for groups and individual users. users uses and groups. Buddycloud builds on XMPP's native federation and pub-sub principles to connect to and synchronise updates with other Buddycloud servers.

Channels are a bundle of pub-sub nodes that have the same owner, folllowers and access permissions. There are two types of channel: user channels (named after the user's JID), for example romeo@montagu.lit) and topic channels, for example balcony-speeches@topics.montague.lit) which are owned by the channel creator. Content posted into channels is automatically synchronised to the correct followers on other Buddycloud servers.

Service discovery happens per domain, and is a multi step process.

To discover the channels component for a domain, the entity first sends an items discovery request to the domain to discover all the available components.

]]>

The server replies with the list of available components, along with their associated JIDs.

]]>

The entity then iterates through the <item/> elements, sending an info discovery request to each jid.

]]>

Each component replies with its identity. The channels component has an identity of category 'pubsub' and type 'channels'.

A domain MUST only host one component with an identity of category 'pubsub' and type 'channels'.

]]>

Buddycloud components can also be discovered using a DNS SRV record formatted as follows.

In the case of conflicting answers, the DNS result is authoritative. This permits domain owners to run Buddycloud on domains on "chat only" domains such as google hosted apps.

Upon connection to the buddycloud server a user should send a register stanza.

]]>

The register request creates the user's personal channels on first use and has the additional benefit of creating additional new channel nodes as they become available on the server (e.g. 'status' node, 'geoloc' nodes).