79 lines
6.4 KiB
Raw Normal View History

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE xep SYSTEM 'xep.dtd' [
<!ENTITY % ents SYSTEM "xep.ent">
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<title>Conferencing SIG</title>
<abstract>A proposal for a Jabber Interest Group that will discuss the protocol for implementing many-to-many communications.</abstract>
<type>SIG Proposal</type>
<remark>Changed Status to Obsolete per approval of XEP-0019.</remark>
<remark>Initial version</remark>
<section1 topic='Introduction'>
<p>The following proposal is for the formation of a Jabber Interest Group that will create a new conferencing protocol, as well as create additional functionality and standardize communications on top of said conferencing protocol.</p>
<section1 topic='Base conferencing protocol'>
<p>The initial task of the Conferencing SIG will be to propose a Jabber Conferencing specification that will solve various problems which exist in the current "groupchat" specification. This specification is meant to be a foundation for additional functionality; it defines the framework needed to provide additional features, without requiring changes to the framework specification itself. There is also to be a certain amount of feature-negotiation included; the conferencing service can define what features can be declared for a room, both as optional and required client features for room participation.</p>
<p>The framework's scope consists of the following minimum functionality:</p>
<li>Browsing a list of public rooms</li>
<li>Finding a public room based on search parameters</li>
<li>Creating new rooms</li>
<li>Destroying rooms</li>
<li>Entering existing rooms</li>
<li>Altering functionality of a room</li>
<li>Querying a room for public information</li>
<li>Sending and accepting invitations to a room</li>
<li>Changing a participant's nickname within a room</li>
<li>Discovering and changing features on a running room</li>
<li>Changing a participant's status within a room</li>
<li>Sending a message to a room or a specific participant within a room</li>
<p>In addition to these basic functions, we can imagine numerous different types of conferencing features; for example, hidden rooms created on the fly for discussions between a Jabber user and their friends or co-workers, transports providing access to similar foreign systems such as IRC, additional client functionality such as shared-location (URL/Co-browsing) and whiteboarding, and so on. There might also be requirements for security levels (for instance, normal participant, moderator, and room admin). Additional information may also be conveyed to users about one another, such as a user's real Jabber ID. Room entry or participation within a discussion might also have restrictions on some systems.</p>
<p>The framework protocol is meant to provide a basis for designing these additional features. Some features, such as co-browsing, could be implemented entirely client-side; others may require significant logic within the conferencing implementation. In addition, some features may be optional for participation within a room, while other features could be required in order for a client to participate within a room.</p>
<section1 topic='Justification for new Conferencing protocol'>
<p>While the current "groupchat" specification is rather simple to implement, it is rather inflexible and cannot easily be extended; specifically, it has the following disadvantages:</p>
<li>There is no control over how you enter a room - for instance, you can not specify a password for entering a password-protected room.</li>
<li>There is no way to create a room without entering it, and no way to tell the state of the room without being a participant within it. This means among other things that a client can not transparently use groupchat for starting multi-user chats.</li>
<li>Changes in room state are often conveyed via text messages rather than XML. Among other things, this limits the display of messages to the English language and limits a client author's freedom in displaying this information.</li>
<li>A Participant's entry into a room is abstracted from their real Jabber account in both the old and new protocols; however, "groupchat" provides no way of tracking users across nickname changes or across sessions within a conference room.</li>
<li>The "groupchat" protocol has no way of performing feature negotiation (e.g., specifying the additional protocol elements needed to participate in a room, or optionally allowed from participants within a room). If there were participants with clients sending custom data through the room (such as XHTML or whiteboarding), you would receive that information even without your client being able to support it, and have no way of distinguishing altered behavior due to additional features of a "groupchat" implementation.</li>
<p>This new conferencing protocol will be designed to solve these problems.</p>
<p>Because of the prevalence of the existing "groupchat" specification for multi-user chats, a long conversion process is anticipated. A server implementation which supports both protocols will simply not allow "groupchat"-only clients to participate in rooms with required features.</p>
<section1 topic='Continuing Development'>
<p>As listed above, there is a fairly large number of features that could be developed on top of a well-designed framework. The Conferencing SIG will first be established to develop a framework, with features mainly being compared against the framework for feasibility of implementation. After a proposal has been formalized as a specification, the SIG will become a group for discussing and proposing new features, and for formally specifying those features.</p>