diff --git a/xep-0001.xml b/xep-0001.xml index e553b7e0..d82db4e0 100644 --- a/xep-0001.xml +++ b/xep-0001.xml @@ -1,12 +1,12 @@ - + %ents; ]> - - + +
- Jabber Enhancement Proposals (JEPs) + XMPP Extension Protocols This document defines the standards process followed by the Jabber Software Foundation. &LEGALNOTICE; 0001 @@ -19,6 +19,12 @@ N/A &stpeter; + + 1.17 + 2006-10-04 + psa +

As approved by the members of the Jabber Software Foundation, changed Jabber Enhancement Proposal to XMPP Extension Protocol.

+
1.16 2006-06-23 @@ -71,7 +77,7 @@ 1.7 2003-04-11 psa -

Added status of Retracted; corrected several errors related to the Jabber Registrar.

+

Added status of Retracted; corrected several errors related to the XMPP Registrar.

1.6 @@ -83,7 +89,7 @@ 1.5 2002-10-29 psa -

Major revision based on experience. In addition to a reorganization of the content to improve the clarity of the presentation, changes include: (1) no anonymous authors; (2) proposal must be seconded by at least 5% of JSF members before being proposed for a Council vote; (3) clarification that the Council votes only on a particular revision of a JEP (e.g., version 1.3 when proceeding from Draft to Final); (4) added information about the "Call for Experience" phase before proceeding from Draft to Final; (5) added reference to RFC 2119; (6) added sections for security considerations, IANA considerations, and Jabber Registrar considerations. Approved by the JSF Board and Jabber Council on 2002-11-20.

+

Major revision based on experience. In addition to a reorganization of the content to improve the clarity of the presentation, changes include: (1) no anonymous authors; (2) proposal must be seconded by at least 5% of JSF members before being proposed for a Council vote; (3) clarification that the Council votes only on a particular revision of a JEP (e.g., version 1.3 when proceeding from Draft to Final); (4) added information about the "Call for Experience" phase before proceeding from Draft to Final; (5) added reference to RFC 2119; (6) added sections for security considerations, IANA considerations, and XMPP Registrar considerations. Approved by the JSF Board and Jabber Council on 2002-11-20.

1.4 @@ -129,98 +135,98 @@
-

The &JSF; adheres to an open standards process that enables interested parties to document existing protocols used within the Jabber/XMPP developer community and to submit proposals that define new protocols; with a few exceptions, Effectively the only such exceptions are protocols that were superseded by RFC 3920 and RFC 3921. such protocols can be considered extensions to the Extensible Messaging and Presence Protocol (XMPP) approved by the &IETF; in &xmppcore; and &xmppim;. Advancement through the JSF's standards process is subject to open discussion on public discussion lists and approval by a technical steering committee elected by the members of the JSF. The focal point of the process is a series of protocol specifications called Jabber Enhancement Proposals or JEPs. The JEP concept as exemplified in version 1.0 of this document (approved in July of 2001) was borrowed from the Python community (see PEP-1). Subsequent revisions have been based on the Jabber/XMPP developer community's experience with the JEP process, as well as insights gleaned from the standards processes followed by the IETF (&rfc2026;), the &W3C; (&w3process;), and other standards development organizations. The nature of JEPs and the mechanisms for managing and advancing them within the Jabber Software Foundation's standards process are canonically described in the current document, which represents the first document in the JEP series.

+

The &JSF; adheres to an open standards process that enables interested parties to document existing protocols used within the Jabber/XMPP developer community and to submit proposals that define new protocols; with a few exceptions, Effectively the only such exceptions are protocols that were superseded by RFC 3920 and RFC 3921. such protocols can be considered extensions to the Extensible Messaging and Presence Protocol (XMPP) approved by the &IETF; in &xmppcore; and &xmppim;. Advancement through the JSF's standards process is subject to open discussion on public discussion lists and approval by a technical steering committee elected by the members of the JSF. The focal point of the process is a series of protocol specifications called XMPP Extension Protocols or XEPs. The JEP (now XEP) concept as exemplified in version 1.0 of this document (approved in July of 2001) was borrowed from the Python community (see PEP-1). Subsequent revisions have been based on the Jabber/XMPP developer community's experience with this standards process, as well as insights gleaned from the standards processes followed by the IETF (&rfc2026;), the &W3C; (&w3process;), and other standards development organizations. The nature of XMPP Extension Protocols and the mechanisms for managing and advancing them within the Jabber Software Foundation's standards process are canonically described in the current document, which represents the first document in the XEP series. The term "XEP" is normally pronounced "zepp".

The Jabber Software Foundation was founded in the year 2001 to openly document, safeguard, manage, and extend the wire protocols used within the Jabber/XMPP developer community. The work of the Jabber Software Foundation has several objectives:

  1. To produce practical, technically excellent solutions to important problems of real-time communication based on the set of streaming XML technologies known as Jabber/XMPP.
  2. -
  3. To document Jabber protocols and XMPP extensions in a clear, concise manner so that the task of implementing the protocols is straightforward.
  4. +
  5. To document XMPP extensions in a clear, concise manner so that the task of implementing the protocols is straightforward.
  6. To ensure interoperability among the disparate technologies used on Jabber/XMPP networks.
  7. To guarantee that any person or entity may implement the protocols without encumbrance.
  8. To work in an fair, open, objective manner.

The standards process specified herein has been developed and refined in order to meet these objectives.

- -

The five JEP types are described in the following sections.

-

The approving body for all Standards Track, Informational, Historical, and Humorous JEPs is the &COUNCIL;; the approving body for Procedural JEPs may be either the &BOARD; or the Jabber Council.

-

This document focuses primarily on Standards Track JEPs since they are the vehicle for defining new protocols, but also discusses the other JEP types.

+ +

The five XEP types are described in the following sections.

+

The approving body for all Standards Track, Informational, Historical, and Humorous XEPs is the &COUNCIL;; the approving body for Procedural XEPs may be either the &BOARD; or the XMPP Council.

+

This document focuses primarily on Standards Track XEPs since they are the vehicle for defining new protocols, but also discusses the other XEP types.

-

A Standards Track JEP defines one of the following:

+

A Standards Track XEP defines one of the following:

  1. A wire protocol intended to be used as a standard part of Jabber/XMPP technologies. - Note well that a protocol defined in a Standards Track JEP is not considered a full standard of the Jabber Software Foundation until it achieves a status of Final within the standards process defined herein (a Standards Track JEP that has achieved a status of Draft may be referred to as a Draft Standard; a Standards Track JEP that has a status of Experimental must not be referred to as a standard, but instead should be referred to as a work in progress). + Note well that a protocol defined in a Standards Track XEP is not considered a full standard of the Jabber Software Foundation until it achieves a status of Final within the standards process defined herein (a Standards Track XEP that has achieved a status of Draft may be referred to as a Draft Standard; a Standards Track XEP that has a status of Experimental must not be referred to as a standard, but instead should be referred to as a work in progress).
  2. -
  3. A protocol suite that determines conformance requirements (e.g., &jep0073;).
  4. +
  5. A protocol suite that determines conformance requirements (e.g., &xep0073;).
-

An Informational JEP defines one of the following:

+

An Informational XEP defines one of the following:

    -
  1. Best practices for protocol development (e.g., &jep0128;).
  2. -
  3. A usage profile for an existing protocol (e.g., &jep0126;).
  4. +
  5. Best practices for protocol development (e.g., &xep0128;).
  6. +
  7. A usage profile for an existing protocol (e.g., &xep0126;).
-

An Historical JEP documents a protocol that was developed before the JEP process was instituted, but that is still in use within the Jabber/XMPP developer community; such a JEP may or may not be obsoleted by a Standards Track JEP, or upgraded to Standards Track.

+

An Historical XEP documents a protocol that was developed before the JSF's standards process was instituted, but that is still in use within the Jabber/XMPP developer community; such a XEP may or may not be obsoleted by a Standards Track XEP, or upgraded to Standards Track.

-

A Humorous JEP attempts to be funny by defining a protocol that would never be used in the real world; such JEPs are usually published on April 1 and automatically have a status of Active.

+

A Humorous XEP attempts to be funny by defining a protocol that would never be used in the real world; such XEPs are usually published on April 1 and automatically have a status of Active.

-

A Procedural JEP defines a process or activity to be followed by the JSF, including JIG charters as specified by &jep0002;.

+

A Procedural XEP defines a process or activity to be followed by the JSF, including JIG charters as specified by &xep0002;.

-

The JSF welcomes and encourages the submission of protocols to the JSF's standards process. It is important to understand that private extensions to XMPP are also allowed. The JSF does not, and cannot, require such private extensions to be added to the public, official set of protocols recognized by the JSF. The processes and procedures in this document apply only to protocols that are submitted to the JSF, not to private protocol extensions used for custom functionality in particular applications. However, such private extensions must not be considered part of the protocols recognized by the JSF. Any individual or group of individuals may author a proposal and submit it to the JSF for consideration as a JEP, and there is no requirement that a JEP author shall be an elected member of the JSF. However, proposals to define official JSF protocols must be presented in the JEP format and must follow the rules defined herein. The JEP authoring and submission process is defined in &jep0143; (see also <http://www.jabber.org/jeps/submit.shtml>). All inquiries related to the JEP process, and all submissions, should be directed to the &EDITOR;.

-

Note well that JEP authors must transfer ownership of their protocols (but not implementations thereof) to the JSF. Refer to the &JSFIPR; for details. JEP authors must make sure that they have read, understood, and agreed to the JSF IPR Policy before submitting a proposal to the JEP Editor!

-

All proposals submitted to the JSF for consideration as JEPs must contain the following information:

+

The JSF welcomes and encourages the submission of protocols to the JSF's standards process. It is important to understand that private extensions to XMPP are also allowed. The JSF does not, and cannot, require such private extensions to be added to the public, official set of protocols recognized by the JSF. The processes and procedures in this document apply only to protocols that are submitted to the JSF, not to private protocol extensions used for custom functionality in particular applications. However, such private extensions must not be considered part of the protocols recognized by the JSF. Any individual or group of individuals may author a proposal and submit it to the JSF for consideration as a XEP, and there is no requirement that a XEP author shall be an elected member of the JSF. However, proposals to define official JSF protocols must be presented in the XEP format and must follow the rules defined herein. The authoring and submission process is defined in &xep0143; (see also <http://www.xmpp.org/extensions/submit.shtml>). All inquiries related to the JSF's standards process, and all submissions, should be directed to the &EDITOR;.

+

Note well that XEP authors must transfer ownership of their protocols (but not implementations thereof) to the JSF. Refer to the &JSFIPR; for details. XEP authors must make sure that they have read, understood, and agreed to the JSF IPR Policy before submitting a proposal to the XMPP Extensions Editor!

+

All proposals submitted to the JSF for consideration as XEPs must contain the following information:

  1. Legal Notice -- the legal notice must be exactly that which is specified in the JSF IPR Policy

  2. Author Information -- first name, last name, email address, and Jabber ID are all required and must be provided for all authors

-

Finally, Standards Track, Informational, and Historical JEPs must conform to &rfc2119; in the use of terminology regarding requirements levels.

+

Finally, Standards Track, Informational, and Historical XEPs must conform to &rfc2119; in the use of terminology regarding requirements levels.

-

The approving body for almost all JEPs is the Jabber Council; therefore, in order to be published as a JEP, a proposal must first be accepted by the Jabber Council (the only exceptions are certain kinds of Procedural JEPs, for which the approving body may be the JSF Board of Directors and which may be accepted for publication by the JEP Editor in consultation with the Board). Upon receiving a proposal, the JEP Editor shall do the following:

+

The approving body for almost all XEPs is the XMPP Council; therefore, in order to be published as a XEP, a proposal must first be accepted by the XMPP Council (the only exceptions are certain kinds of Procedural XEPs, for which the approving body may be the JSF Board of Directors and which may be accepted for publication by the XMPP Extensions Editor in consultation with the Board). Upon receiving a proposal, the XMPP Extensions Editor shall do the following:

  • ensure that its format is correct
  • -
  • publish it to <http://www.jabber.org/jeps/inbox/>
  • +
  • publish it to <http://www.xmpp.org/extensions/inbox/>
  • publicly announce its existence by sending a message to the discussion list of the &SJIG;
  • -
  • request acceptance of the proposal as a JEP by the Jabber Council
  • +
  • request acceptance of the proposal as a XEP by the XMPP Council
-

If no member of the Jabber Council objects to publication of the proposal within seven (7) days or at the next meeting of the Council, the JEP Editor shall accept it as a JEP. If objections are raised by the Council on the Standards-JIG list or in its meeting, the JEP author is encouraged to address the feedback of the Council and to submit a revised version of the proposal and/or confer with the JEP Editor or objecting Council member(s) regarding how to proceed.

-

If the proposal is accepted as a JEP, the JEP Editor shall do the following:

+

If no member of the XMPP Council objects to publication of the proposal within seven (7) days or at the next meeting of the Council, the XMPP Extensions Editor shall accept it as a XEP. If objections are raised by the Council on the Standards-JIG list or in its meeting, the XEP author is encouraged to address the feedback of the Council and to submit a revised version of the proposal and/or confer with the XMPP Extensions Editor or objecting Council member(s) regarding how to proceed.

+

If the proposal is accepted as a XEP, the XMPP Extensions Editor shall do the following:

  • assign it a number
  • specify an appropriate type
  • specify a status of Experimental
  • -
  • add it to source control JEPs are kept under source control in the 'jeps' module of the CVS repository maintained at the jabberstudio.org service. Instructions for accessing these files can be found at <http://www.jabberstudio.org/cvs.php>, and a web interface to these files is available at <http://www.jabberstudio.org/cgi-bin/viewcvs.cgi/jeps/>.
  • -
  • add tracking information to the JEPs database
  • -
  • publish version 0.1 of the JEP to the JSF website The canonical URL for accessing JEPs is <http://www.jabber.org/jeps/>.
  • -
  • publicly announce the existence of the JEP by sending a message to the Standards-JIG list
  • +
  • add it to source control XEPs are kept under source control in the 'xmpp' module and 'extensions' directory of the CVS repository maintained at the jabberstudio.org service. Instructions for accessing these files can be found at <http://www.jabberstudio.org/cvs.php>, and a web interface to these files is available at <http://www.jabberstudio.org/cgi-bin/viewcvs.cgi/xmpp/extensions/>.
  • +
  • add tracking information to the XEPs database
  • +
  • publish version 0.1 of the XEP to the xmpp.org website The canonical URL for accessing XMPP Extensions is <http://www.xmpp.org/extensions/>.
  • +
  • publicly announce the existence of the XEP by sending a message to the Standards-JIG list
-

Note well that no special criteria (other than acceptance by the Jabber Council and minimal formatting compliance) need to be met in order for a JEP to be granted a status of Experimental. The granting of Experimental status must not be construed as indicating any level of approval by the JSF, the Jabber Council, or the Jabber/XMPP developer community. Implementation of Experimental JEPs is encouraged in an exploratory fashion (e.g., in a proof of concept) in order to gain experience with and iteratively improve the protocol defined therein, but such implementations may not be appropriate for deployment in production systems.

+

Note well that no special criteria (other than acceptance by the XMPP Council and minimal formatting compliance) need to be met in order for a XEP to be granted a status of Experimental. The granting of Experimental status must not be construed as indicating any level of approval by the JSF, the XMPP Council, or the Jabber/XMPP developer community. Implementation of Experimental XEPs is encouraged in an exploratory fashion (e.g., in a proof of concept) in order to gain experience with and iteratively improve the protocol defined therein, but such implementations may not be appropriate for deployment in production systems.

-

Once a JEP is published, it becomes available for public discussion within the Standards JIG and the broader Jabber/XMPP developer community. The JEP author is responsible for collecting feedback from the Jabber/XMPP developer community during the life of the JEP and for incorporating such feedback into the proposal. In order to fully participate in discussion of the proposal, the JEP author should be subscribed to the Standards-JIG list, which is the primary venue for discussion of JEPs. Changes made based on feedback received by the JEP author must be captured in updated versions of the JEP (e.g., 0.2 after 0.1), each of which must be put under source control and subsequently published and announced by the JEP Editor.

-

If an Experimental JEP is inactive (i.e., no updated versions are published) for a period of six (6) months, the JEP Editor shall automatically change the status of the JEP to Deferred unless it is in the queue of JEPs under active consideration for advancement by the Jabber Council; upon submission of an updated version, the JEP Editor shall change the status back to Experimental.

+

Once a XEP is published, it becomes available for public discussion within the Standards JIG and the broader Jabber/XMPP developer community. The XEP author is responsible for collecting feedback from the Jabber/XMPP developer community during the life of the XEP and for incorporating such feedback into the proposal. In order to fully participate in discussion of the proposal, the XEP author should be subscribed to the Standards-JIG list, which is the primary venue for discussion of XMPP Extension Protocols. Changes made based on feedback received by the XEP author must be captured in updated versions of the XEP (e.g., 0.2 after 0.1), each of which must be put under source control and subsequently published and announced by the XMPP Extensions Editor.

+

If an Experimental XEP is inactive (i.e., no updated versions are published) for a period of six (6) months, the XMPP Extensions Editor shall automatically change the status of the XEP to Deferred unless it is in the queue of XEPs under active consideration for advancement by the XMPP Council; upon submission of an updated version, the XMPP Extensions Editor shall change the status back to Experimental.

-

Before an Experimental JEP may be proposed to the Jabber Council for advancement to Draft (Standards Track JEPs) or Active (Historical, Informational, and Procedural JEPs), the Jabber Council must agree that the JEP is ready to be considered for advancement. Once the Council so agrees, it shall instruct the JEP Editor to (1) change the status of the JEP from Experimental to Proposed and (2) issue a Last Call for open discussion on the Standards JIG list. The Last Call shall expire not less than 10 days after the date of issue.

-

Once the consensus of the Standards JIG has been incorporated into the JEP and all issues of substance raised during the Last Call have been addressed by the JEP author, the JEP Editor shall formally propose a specific revision of the JEP to the Jabber Council for its vote. If necessary, the JEP Editor may, at his discretion and in consultation with the Jabber Council, extend the Last Call or issue a new Last Call if the JEP requires further discussion.

-

Last Calls regarding Procedural JEPs for which the approving body is the JSF Board of Directors may be issued directly by the JEP Editor once instructed by the Board.

+

Before an Experimental XEP may be proposed to the XMPP Council for advancement to Draft (Standards Track XEPs) or Active (Historical, Informational, and Procedural XEPs), the XMPP Council must agree that the XEP is ready to be considered for advancement. Once the Council so agrees, it shall instruct the XMPP Extensions Editor to (1) change the status of the XEP from Experimental to Proposed and (2) issue a Last Call for open discussion on the Standards JIG list. The Last Call shall expire not less than 10 days after the date of issue.

+

Once the consensus of the Standards JIG has been incorporated into the XEP and all issues of substance raised during the Last Call have been addressed by the XEP author, the XMPP Extensions Editor shall formally propose a specific revision of the XEP to the XMPP Council for its vote. If necessary, the XMPP Extensions Editor may, at his discretion and in consultation with the XMPP Council, extend the Last Call or issue a new Last Call if the XEP requires further discussion.

+

Last Calls regarding Procedural XEPs for which the approving body is the JSF Board of Directors may be issued directly by the XMPP Extensions Editor once instructed by the Board.

-

After a JEP has been proposed to the Jabber Council, any change in its status shall be determined by a vote of the Jabber Council. All members of the Council must vote, with the possible values being +1 (approve), 0 (neutral), or -1 (disapprove, with reasons). A JEP shall not be advanced to the next stage in the approval process so long as any Council Member continues to vote -1; that Council Member's written concerns must be addressed in order for the JEP to advance. A majority of Council members must vote +1 in order for a JEP to advance. (Additional voting policies, such as voting periods and defaults if a member does not vote, may be set by the Jabber Council.) A vote of the Jabber Council is final and binding, although a JEP author is free to address the concerns of the Council and to resubmit the JEP for future consideration.

-

If the Jabber Council does not complete voting on a JEP before the end of its term, the JEP Editor shall issue a new Last Call on the Standards JIG list and the newly-elected Council shall vote anew on the JEP after completion of the Last Call. This provides an opportunity for any member of the previous Council who had voted -1 to voice his or her concerns in a public forum before the new Council votes on the JEP.

-

A vote of the Jabber Council applies only to the specific revision of the JEP that has been presented to it. Further revisions may need to be re-submitted for approval.

-

Any change in the status of a JEP must be announced on the Standards-JIG list by the JEP Editor. If a JEP advances to a status of Final, it shall be so announced and also published as one of the official JSF protocols A list of official JSF protocols is maintained at <http://www.jabber.org/protocol>. on the website of the Jabber Software Foundation.

-

Approval of Procedural JEPs for which the approving body is the JSF Board of Directors shall occur upon approval by the Board in accordance with the rules defined in the &BYLAWS;.

-

More detailed information about the approval process is provided below, including criteria for Standards Track JEPs and for Historical, Informational, and Procedural JEPs.

- -

The possible states for a Standards Track JEP are as follows:

+

After a XEP has been proposed to the XMPP Council, any change in its status shall be determined by a vote of the XMPP Council. All members of the Council must vote, with the possible values being +1 (approve), 0 (neutral), or -1 (disapprove, with reasons). A XEP shall not be advanced to the next stage in the approval process so long as any Council Member continues to vote -1; that Council Member's written concerns must be addressed in order for the XEP to advance. A majority of Council members must vote +1 in order for a XEP to advance. (Additional voting policies, such as voting periods and defaults if a member does not vote, may be set by the XMPP Council.) A vote of the XMPP Council is final and binding, although a XEP author is free to address the concerns of the Council and to resubmit the XEP for future consideration.

+

If the XMPP Council does not complete voting on a XEP before the end of its term, the XMPP Extensions Editor shall issue a new Last Call on the Standards JIG list and the newly-elected Council shall vote anew on the XEP after completion of the Last Call. This provides an opportunity for any member of the previous Council who had voted -1 to voice his or her concerns in a public forum before the new Council votes on the XEP.

+

A vote of the XMPP Council applies only to the specific revision of the XEP that has been presented to it. Further revisions may need to be re-submitted for approval.

+

Any change in the status of a XEP must be announced on the Standards-JIG list by the XMPP Extensions Editor. If a XEP advances to a status of Final, it shall be so announced and also published as one of the official JSF protocols A list of official JSF protocols is maintained at <http://www.xmpp.org/protocol>. on the website of the Jabber Software Foundation.

+

Approval of Procedural XEPs for which the approving body is the JSF Board of Directors shall occur upon approval by the Board in accordance with the rules defined in the &BYLAWS;.

+

More detailed information about the approval process is provided below, including criteria for Standards Track XEPs and for Historical, Informational, and Procedural XEPs.

+ +

The possible states for a Standards Track XEP are as follows:

+--> Retracted @@ -234,8 +240,8 @@ Experimental ----> Proposed ----> Draft ----> Final | | +-----------+---> Deprecated ---> Obsolete -

The ideal path is for a Standards Track JEP is to be advanced by the Jabber Council from Proposed to Draft to Final (the criteria for this advancement are described in the following paragraphs). However, an Experimental JEP shall be assigned a status of Deferred if it has not been updated in six (6) months (e.g., because of a lack of interest or because it depends on other specifications that have yet to move forward). In addition, rather than being advanced from Proposed to Draft, a Standards Track JEP may be voted to a status of Rejected if the Jabber Council deems it unacceptable. (Note that if a JEP is Deferred, the JEP Editor may at some point re-assign it to Experimental status, and that, even if a JEP is Rejected, it is retained in source control and on the Jabber Software Foundation website for future reference.) Finally, a JEP author may voluntarily remove an Experimental JEP from further consideration, resulting in a status of Retracted.

-

In order for a Standards Track JEP to advance from Proposed to Draft, it must:

+

The ideal path is for a Standards Track XEP is to be advanced by the XMPP Council from Proposed to Draft to Final (the criteria for this advancement are described in the following paragraphs). However, an Experimental XEP shall be assigned a status of Deferred if it has not been updated in six (6) months (e.g., because of a lack of interest or because it depends on other specifications that have yet to move forward). In addition, rather than being advanced from Proposed to Draft, a Standards Track XEP may be voted to a status of Rejected if the XMPP Council deems it unacceptable. (Note that if a XEP is Deferred, the XMPP Extensions Editor may at some point re-assign it to Experimental status, and that, even if a XEP is Rejected, it is retained in source control and on the Jabber Software Foundation website for future reference.) Finally, a XEP author may voluntarily remove an Experimental XEP from further consideration, resulting in a status of Retracted.

+

In order for a Standards Track XEP to advance from Proposed to Draft, it must:

  1. fill known gaps in Jabber/XMPP technologies or deficiencies with existing protocols
  2. be clearly described and accurately documented so that it can be understood and implemented by interested and knowledgeable members of the Jabber/XMPP developer community
  3. @@ -243,14 +249,14 @@ Experimental ----> Proposed ----> Draft ----> Final
  4. be generally stable and appropriate for further field experience
  5. have achieved rough consensus (though not necessarily unanimity) within the Standards JIG
  6. be formally defined by an XML schema
  7. -
  8. receive the requisite votes from the Jabber Council
  9. +
  10. receive the requisite votes from the XMPP Council
-

Elevation to Draft status (version 1.0) is a major advancement for the JEP, indicating a strong sense on the part of the Jabber Council and Jabber/XMPP developer community that the specification will be of lasting value. Since a Draft standard must be well-understood and must be known to be reasonably stable, it is relatively safe to use it as the basis for implementations and production deployments. However, note that because a Draft standard may still require additional field experience and may be subject to change based on such experience, mission-critical or large-scale implementations of the Draft standard may not be advisable (although every effort shall be made to ensure that any changes to a Draft JEP will be backwards-compatible with the 1.0 version). Note also that any changes to a Draft JEP must be provisionally published at <http://www.jabber.org/jeps/tmp/>, announced on the Standards-JIG mailing list, and formally approved by the Jabber Council before being officially published at the canonical URL for the JEP.

-

In order for a JEP to advance from Draft status to Final status (version 2.0), it must be shown to be stable and well-received by the Jabber/XMPP developer community. Before presenting a Draft standard to the Jabber Council for consideration as a Final standard, the JEP Editor shall issue a Call for Experience on the Standards-JIG list so that feedback can be gathered from those who have implemented the Draft standard (the Call for Experience shall expire not less than 14 days after the date of issue, and shall not be issued until at least 60 days have passed since advancement to Draft). In addition, at least two implementations of the JEP must exist, at least one of which must be free software (in accordance with the &GPL; or &LGPL;) or open-source software (in accordance with the definition provided by &OSI;). Until two implementations are produced, a Standards Track JEP shall retain a status of Draft. Once (1) two implementations have been presented to the Jabber Council, (2) feedback provided during the Call for Experience has been incorporated into the JEP, and (3) the JEP has been fully checked for accuracy, the status of the JEP may be changed to Final upon a vote of the Council.

-

Finally, a Standards Track JEP that has been granted a status of Final may be superseded by a future JEP approved by the Jabber Council. In such cases, the status of the earlier JEP shall be changed to Deprecated, possibly with an expiration date assigned by the Jabber Council (see the Expiration Dates section below). After a reasonable period of time or upon the passing of the expiration date, the status of the JEP shall be changed to Obsolete.

+

Elevation to Draft status (version 1.0) is a major advancement for the XEP, indicating a strong sense on the part of the XMPP Council and Jabber/XMPP developer community that the specification will be of lasting value. Since a Draft standard must be well-understood and must be known to be reasonably stable, it is relatively safe to use it as the basis for implementations and production deployments. However, note that because a Draft standard may still require additional field experience and may be subject to change based on such experience, mission-critical or large-scale implementations of the Draft standard may not be advisable (although every effort shall be made to ensure that any changes to a Draft XEP will be backwards-compatible with the 1.0 version). Note also that any changes to a Draft XEP must be provisionally published at <http://www.xmpp.org/extensions/tmp/>, announced on the Standards-JIG mailing list, and formally approved by the XMPP Council before being officially published at the canonical URL for the XEP.

+

In order for a XEP to advance from Draft status to Final status (version 2.0), it must be shown to be stable and well-received by the Jabber/XMPP developer community. Before presenting a Draft standard to the XMPP Council for consideration as a Final standard, the XMPP Extensions Editor shall issue a Call for Experience on the Standards-JIG list so that feedback can be gathered from those who have implemented the Draft standard (the Call for Experience shall expire not less than 14 days after the date of issue, and shall not be issued until at least 60 days have passed since advancement to Draft). In addition, at least two implementations of the XEP must exist, at least one of which must be free software (in accordance with the &GPL; or &LGPL;) or open-source software (in accordance with the definition provided by &OSI;). Until two implementations are produced, a Standards Track XEP shall retain a status of Draft. Once (1) two implementations have been presented to the XMPP Council, (2) feedback provided during the Call for Experience has been incorporated into the XEP, and (3) the XEP has been fully checked for accuracy, the status of the XEP may be changed to Final upon a vote of the Council.

+

Finally, a Standards Track XEP that has been granted a status of Final may be superseded by a future XEP approved by the XMPP Council. In such cases, the status of the earlier XEP shall be changed to Deprecated, possibly with an expiration date assigned by the XMPP Council (see the Expiration Dates section below). After a reasonable period of time or upon the passing of the expiration date, the status of the XEP shall be changed to Obsolete.

- -

The possible states for a Historical, Informational, or Procedural JEP are as follows:

+ +

The possible states for a Historical, Informational, or Procedural XEP are as follows:

+--> Retracted @@ -264,90 +270,90 @@ Experimental ----> Proposed ----> Active | +--> Deprecated --> Obsolete -

Because such JEPs do not seek to define standard protocols, in general they are less controversial and tend to proceed from Proposed to Active without controversy on a vote of the Jabber Council. However, some of these JEPs may be remanded from the Council to the JEP author and/or JEP Editor for revision in order to be suitable for advancement from Proposed to Active (e.g., documentation of protocols in use must be accurate and describe any existing security concerns). As with Standards Track JEPs, the JEP author may retract such a JEP when it is Experimental, and the Council may reject such a JEP when it is Proposed.

-

Once approved, Historical, Informational, and Procedural JEPs will have a status of Active. Such a JEP may be replaced by a new JEP on the same or a similar topic, thus rendering the earlier JEP out of date; in such cases, the earlier JEP shall be assigned a status of Deprecated (and eventually Obsolete) with a note specifying the superseding JEP.

-

The Jabber Council may, at its discretion, decide to convert an Historical JEP into a Standards Track JEP if the protocol defined in the JEP has been in long use, is deemed stable and uncontroversial, and is unlikely to be superseded by a newer protocol. The Historical JEP shall be treated in the same way as a Standards Track JEP that has a status of Experimental, beginning with the Proposal Process. If after the Last Call and voting by the Jabber Council the JEP is approved for advancement on the standards track, its type shall be changed to Standards Track and its status shall be changed to Draft.

+

Because such XEPs do not seek to define standard protocols, in general they are less controversial and tend to proceed from Proposed to Active without controversy on a vote of the XMPP Council. However, some of these XEPs may be remanded from the Council to the XEP author and/or XMPP Extensions Editor for revision in order to be suitable for advancement from Proposed to Active (e.g., documentation of protocols in use must be accurate and describe any existing security concerns). As with Standards Track XEPs, the XEP author may retract such a XEP when it is Experimental, and the Council may reject such a XEP when it is Proposed.

+

Once approved, Historical, Informational, and Procedural XEPs will have a status of Active. Such a XEP may be replaced by a new XEP on the same or a similar topic, thus rendering the earlier XEP out of date; in such cases, the earlier XEP shall be assigned a status of Deprecated (and eventually Obsolete) with a note specifying the superseding XEP.

+

The XMPP Council may, at its discretion, decide to convert an Historical XEP into a Standards Track XEP if the protocol defined in the XEP has been in long use, is deemed stable and uncontroversial, and is unlikely to be superseded by a newer protocol. The Historical XEP shall be treated in the same way as a Standards Track XEP that has a status of Experimental, beginning with the Proposal Process. If after the Last Call and voting by the XMPP Council the XEP is approved for advancement on the standards track, its type shall be changed to Standards Track and its status shall be changed to Draft.

- -

The possible states for a JEP are summarized in the following sections.

+ +

The possible states for a XEP are summarized in the following sections.

-

A JEP of any type is in the Experimental state after it has been accepted by the Jabber Council and published by the Jabber Software Foundation but before it has advanced within the standards process to a state of Active or Draft.

+

A XEP of any type is in the Experimental state after it has been accepted by the XMPP Council and published by the Jabber Software Foundation but before it has advanced within the standards process to a state of Active or Draft.

-

A JEP of any type is in the Proposed state while it is in Last Call or under consideration by the Jabber Council for advancement from Experimental to Draft or Active.

+

A XEP of any type is in the Proposed state while it is in Last Call or under consideration by the XMPP Council for advancement from Experimental to Draft or Active.

-

A Standards Track JEP is in the Draft state after it has undergone extensive discussion and technical review on the Standards-JIG list and has been voted forward on the standards track by the Jabber Council.

+

A Standards Track XEP is in the Draft state after it has undergone extensive discussion and technical review on the Standards-JIG list and has been voted forward on the standards track by the XMPP Council.

-

A Standards Track JEP is in the Final state after it has been in the Draft state for at least 60 days, has been implemented in at least two separate codebases, and has been voted forward on the standards track by the Jabber Council.

+

A Standards Track XEP is in the Final state after it has been in the Draft state for at least 60 days, has been implemented in at least two separate codebases, and has been voted forward on the standards track by the XMPP Council.

-

A JEP of any type other than Standards Track is advanced to a status of Active after it has been voted forward from Experimental by the Jabber Council.

+

A XEP of any type other than Standards Track is advanced to a status of Active after it has been voted forward from Experimental by the XMPP Council.

-

An Experimental JEP of any type is changed to the Deferred state if it has not been updated in six (6) months.

+

An Experimental XEP of any type is changed to the Deferred state if it has not been updated in six (6) months.

-

A JEP of any type is in the Retracted state if the authors have asked the JEP Editor to remove the JEP from further consideration in the JSF's standards process.

+

A XEP of any type is in the Retracted state if the authors have asked the XMPP Extensions Editor to remove the XEP from further consideration in the JSF's standards process.

-

A JEP of any type is in the Rejected state if the Jabber Council has deemed it unacceptable and has voted to not move it forward within the standards process.

+

A XEP of any type is in the Rejected state if the XMPP Council has deemed it unacceptable and has voted to not move it forward within the standards process.

-

A JEP of any type is in the Deprecated state if the Jabber Council has determined that the protocol defined therein is out of date and that new implementations are no longer encouraged (e.g., because it has been superseded by a more modern protocol).

+

A XEP of any type is in the Deprecated state if the XMPP Council has determined that the protocol defined therein is out of date and that new implementations are no longer encouraged (e.g., because it has been superseded by a more modern protocol).

-

A JEP of any type is changed from Deprecated to Obsolete if the Jabber Council has determined that the protocol defined therein should no longer be implemented or deployed.

+

A XEP of any type is changed from Deprecated to Obsolete if the XMPP Council has determined that the protocol defined therein should no longer be implemented or deployed.

- -

Sometimes it is necessary to modify JEPs that have received final approval by the Jabber Council or JSF Board of Directors (e.g., to correct errors, incorporate the lessons of experience, or document new security concerns). This section describes the process for doing so with regard to Standards Track JEPs that have achieved a status of Final and Historical, Informational, and Procedural JEPs that have achieved a status of Active.

-

With regard to Standards Track JEPs, the Jabber Software Foundation (in particular, the Jabber Council) strives to ensure that such JEPs are accurate, complete, and stable before advancing them to a status of Final (corresponding to document version 2.0 of the JEP). The Call for Experience and discussion within the Standards JIG help to ensure this result, but final responsibility rests with the Jabber Council. Despite the best efforts of all concerned, errors are sometimes discovered in Final JEPs (the individual who discovers such an error should inform the Council via the Standards-JIG mailing list or communicate directly with the JEP Editor). Whereas other standards development organizations may issue errata while leaving the specification itself unchanged, the JSF makes changes to the Final JEP and publishes a revised document version (e.g., version 2.1). In general the changes are made by the JEP Editor or JEP author in consultation with the Jabber Council, discussed within the Standards JIG if appropriate, and agreed upon by the full Jabber Council. Upon agreement regarding the exact changes, the Jabber Council shall instruct the JEP Editor to publish a revised version of the JEP and announce the existence of the revised version through the normal channels (e.g., on the JSF website and to the Standards-JIG list). Naturally, if members of the Jabber/XMPP developer community have concerns regarding the changes made, they are free to discuss the matter in the relevant forum (usually the Standards-JIG list) before or after the revised version has been published.

-

The process is similar with regard to Historical and Informational JEPs that have achieved a status of Active (corresponding to document version 1.0 of the JEP): the Jabber Council agrees on the exact changes to be made and instructs the JEP Editor to publish and announce a revised version (e.g., version 1.1). Here again the Jabber Council bears responsibility for any changes and public discussion is welcome.

-

Procedural JEPs may be modified more frequently as the Jabber Software Foundation gains experience with the processes defined therein. For example, JEP-0001 is modified periodically in order to document processes previously not made explicit or to modify existing processes based on experience with the JEP process; similar changes are sometimes made to the &jep0053; JEP and to various JIG-related JEPs. Changes to these JEPs are discussed by the Jabber Council, JSF Board of Directors, JSF membership, and Standards JIG as appropriate, and exact changes are agreed to by the relevant approving body (Jabber Council or JSF Board of Directors). The approving body then instructs the JEP Editor to publish and announce the revised version as described above.

+ +

Sometimes it is necessary to modify XEPs that have received final approval by the XMPP Council or JSF Board of Directors (e.g., to correct errors, incorporate the lessons of experience, or document new security concerns). This section describes the process for doing so with regard to Standards Track XEPs that have achieved a status of Final and Historical, Informational, and Procedural XEPs that have achieved a status of Active.

+

With regard to Standards Track XEPs, the Jabber Software Foundation (in particular, the XMPP Council) strives to ensure that such XEPs are accurate, complete, and stable before advancing them to a status of Final (corresponding to document version 2.0 of the XEP). The Call for Experience and discussion within the Standards JIG help to ensure this result, but final responsibility rests with the XMPP Council. Despite the best efforts of all concerned, errors are sometimes discovered in Final XEPs (the individual who discovers such an error should inform the Council via the Standards-JIG mailing list or communicate directly with the XMPP Extensions Editor). Whereas other standards development organizations may issue errata while leaving the specification itself unchanged, the JSF makes changes to the Final XEP and publishes a revised document version (e.g., version 2.1). In general the changes are made by the XMPP Extensions Editor or XEP author in consultation with the XMPP Council, discussed within the Standards JIG if appropriate, and agreed upon by the full XMPP Council. Upon agreement regarding the exact changes, the XMPP Council shall instruct the XMPP Extensions Editor to publish a revised version of the XEP and announce the existence of the revised version through the normal channels (e.g., on the JSF website and to the Standards-JIG list). Naturally, if members of the Jabber/XMPP developer community have concerns regarding the changes made, they are free to discuss the matter in the relevant forum (usually the Standards-JIG list) before or after the revised version has been published.

+

The process is similar with regard to Historical and Informational XEPs that have achieved a status of Active (corresponding to document version 1.0 of the XEP): the XMPP Council agrees on the exact changes to be made and instructs the XMPP Extensions Editor to publish and announce a revised version (e.g., version 1.1). Here again the XMPP Council bears responsibility for any changes and public discussion is welcome.

+

Procedural XEPs may be modified more frequently as the Jabber Software Foundation gains experience with the processes defined therein. For example, XEP-0001 is modified periodically in order to document processes previously not made explicit or to modify existing processes based on experience with the JSF's standards process; similar changes are sometimes made to the &xep0053; XEP and to various JIG-related XEPs. Changes to these XEPs are discussed by the XMPP Council, JSF Board of Directors, JSF membership, and Standards JIG as appropriate, and exact changes are agreed to by the relevant approving body (XMPP Council or JSF Board of Directors). The approving body then instructs the XMPP Extensions Editor to publish and announce the revised version as described above.

-

In rare cases, a protocol enhancement may be accepted as an interim solution, especially when it is recognized that expected future improvements in technology or the underlying Jabber/XMPP protocols will make possible a much better solution to the problem at hand (e.g., a better protocol for user avatars may be contingent upon the development of a robust protocol for publish/subscribe functionality). In such cases, a JEP may be approved provisionally and be assigned an expiration date.

-

The exact form of such an expiration date shall be left up to the discretion of the Jabber Council. However, the preferred form is to assign an expiration date of six (6) months in the future, at which time the Jabber Council must re-affirm the status of the JEP and, if desired, extend the expiration date for another six (6) months. While this process may continue indefinitely (although that is unlikely), it has the virtue of forcing the Jabber Council and Jabber/XMPP developer community to re-examine the provisional protocol on a fairly regular basis in the light of technological changes. Alternatively, a JEP may be assigned a "soft" expiration date: that is, the JEP will expire when an expected future protocol comes into existence, whenever that may be. In either case, the status of the JEP shall be changed to Deprecated when it expires.

-

In addition, an expiration date may be assigned when the status of a JEP is changed from Final (or, potentially, Draft) to Deprecated. In this case, the expiration date applies to the date when the JEP is expected to change from Deprecated to Obsolete. These dates may be flexible; however it is expected that they will follow the same six-month rule as provisional protocol enhancements.

+

In rare cases, a protocol enhancement may be accepted as an interim solution, especially when it is recognized that expected future improvements in technology or the underlying Jabber/XMPP protocols will make possible a much better solution to the problem at hand (e.g., a better protocol for user avatars may be contingent upon the development of a robust protocol for publish/subscribe functionality). In such cases, a XEP may be approved provisionally and be assigned an expiration date.

+

The exact form of such an expiration date shall be left up to the discretion of the XMPP Council. However, the preferred form is to assign an expiration date of six (6) months in the future, at which time the XMPP Council must re-affirm the status of the XEP and, if desired, extend the expiration date for another six (6) months. While this process may continue indefinitely (although that is unlikely), it has the virtue of forcing the XMPP Council and Jabber/XMPP developer community to re-examine the provisional protocol on a fairly regular basis in the light of technological changes. Alternatively, a XEP may be assigned a "soft" expiration date: that is, the XEP will expire when an expected future protocol comes into existence, whenever that may be. In either case, the status of the XEP shall be changed to Deprecated when it expires.

+

In addition, an expiration date may be assigned when the status of a XEP is changed from Final (or, potentially, Draft) to Deprecated. In this case, the expiration date applies to the date when the XEP is expected to change from Deprecated to Obsolete. These dates may be flexible; however it is expected that they will follow the same six-month rule as provisional protocol enhancements.

-

Every JEP must contain a section entitled "Security Considerations", detailing security concerns or features related to the proposal; in particular, a Standards Track JEP should list the security threats that the protocol addresses and does not address, as well as security issues related to implementation of the protocol. JEP authors should refer to &rfc3552; for helpful information about documenting security considerations and should also confer with the JEP Editor and/or Jabber Council regarding this important task.

+

Every XMPP Extension Protocol specification must contain a section entitled "Security Considerations", detailing security concerns or features related to the proposal; in particular, a Standards Track XEP should list the security threats that the protocol addresses and does not address, as well as security issues related to implementation of the protocol. XEP authors should refer to &rfc3552; for helpful information about documenting security considerations and should also confer with the XMPP Extensions Editor and/or XMPP Council regarding this important task.

-

Some JEPs may require interaction with &IANA;. The IANA acts as a clearinghouse to assign and coordinate the use of numerous Internet protocol parameters, such as MIME types and port numbers (e.g., the TCP ports 5222 and 5269 used by the Jabber/XMPP developer community are registered with the IANA). Whether or not a JEP requires registration of parameters with the IANA, that fact must be noted and explained in a distinct section of the JEP entitled "IANA Considerations". Registration with the IANA should not occur until a JEP advances to a status of Draft (Standards Track JEPs) or Active (Informational and Historical JEPs), and should be initiated by the Jabber Registrar in consultation with the JEP author, not by the JEP author directly with the IANA.

+

Some XMPP Extension Protocols may require interaction with &IANA;. The IANA acts as a clearinghouse to assign and coordinate the use of numerous Internet protocol parameters, such as MIME types and port numbers (e.g., the TCP ports 5222 and 5269 used by the Jabber/XMPP developer community are registered with the IANA). Whether or not a XEP requires registration of parameters with the IANA, that fact must be noted and explained in a distinct section of the XEP entitled "IANA Considerations". Registration with the IANA should not occur until a XEP advances to a status of Draft (Standards Track XEPs) or Active (Informational and Historical XEPs), and should be initiated by the XMPP Registrar in consultation with the XEP author, not by the XEP author directly with the IANA.

- -

The ®ISTRAR; performs a function similar to the IANA, although limited to the Jabber/XMPP developer community. It does so by reserving protocol namespaces and by uniquely assigning parameters for use in the context of Jabber/XMPP protocols (for example, the categories and types used in &jep0030;).

-

Whether or not a JEP requires registration of protocol namespaces or parameters with the Jabber Registrar, that fact must be noted and explained in a distinct section of the JEP entitled "Jabber Registrar Considerations". Such registration should not occur until a JEP advances to a status of Draft (Standards Track JEPs) or Active (Informational and Historical JEPs). Registration of protocol namespaces is initiated by the JEP Editor when a JEP advances to Draft or Active. Registration of particular parameters used within a specification may be initiated by a JEP author within the text of the JEP, or by an implementor of the JEP after it has advanced to Draft or Active. For details regarding the Jabber Registrar and its processes, refer to &jep0053;.

-

A JEP may also request that a new registry is to be created by the Jabber Registrar. The JEP author must clearly define the nature of the new registry as well as the process for submitting data to the registry, and must do so in collaboration with the Registrar.

+ +

The ®ISTRAR; performs a function similar to the IANA, although limited to the Jabber/XMPP developer community. It does so by reserving protocol namespaces and by uniquely assigning parameters for use in the context of Jabber/XMPP protocols (for example, the categories and types used in &xep0030;).

+

Whether or not a XEP requires registration of protocol namespaces or parameters with the XMPP Registrar, that fact must be noted and explained in a distinct section of the XEP entitled "XMPP Registrar Considerations". Such registration should not occur until a XEP advances to a status of Draft (Standards Track XEPs) or Active (Informational and Historical XEPs). Registration of protocol namespaces is initiated by the XMPP Extensions Editor when a XEP advances to Draft or Active. Registration of particular parameters used within a specification may be initiated by a XEP author within the text of the XEP, or by an implementor of the XEP after it has advanced to Draft or Active. For details regarding the XMPP Registrar and its processes, refer to &xep0053;.

+

A XEP may also request that a new registry is to be created by the XMPP Registrar. The XEP author must clearly define the nature of the new registry as well as the process for submitting data to the registry, and must do so in collaboration with the Registrar.

-

JEPs that define official JSF protocols must include a schema that conforms to &w3xmlschema1; and &w3xmlschema2;.

-

The schema for the JEP format itself is as follows:

+

XMPP Extension Protocol specifications that define official JSF protocols must include a schema that conforms to &w3xmlschema1; and &w3xmlschema2;.

+

The schema for the XEP format itself is as follows:

- This schema defines the document format for Jabber Enhancement - Proposals (JEPs). For further information about JEPs, visit: + This schema defines the document format for XMPP Extension + Protocols (XEPs). For further information about XEPs, visit: - http://www.jabber.org/jeps/ + http://www.xmpp.org/extensions/ The canonical URL for this schema is: - http://www.jabber.org/jeps/jep.xsd + http://www.xmpp.org/extensions/xep.xsd @@ -394,7 +400,7 @@ Experimental ----> Proposed ----> Active - + @@ -685,4 +691,4 @@ Experimental ----> Proposed ----> Active ]]>
-
+ diff --git a/xep-0002.xml b/xep-0002.xml index bed42a95..24f14004 100644 --- a/xep-0002.xml +++ b/xep-0002.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
Jabber Interest Groups (JIGs) A definition of Jabber Interest Groups, including their structure and role within the Jabber Software Foundation. @@ -32,11 +32,11 @@
-

A Jabber Interest Group (JIG) is a working group approved by the Jabber Council to address specific areas of growth or concern within the Jabber community, usually by means of developing and publishing Jabber Enhancements Proposals (JEPs).

+

A Jabber Interest Group (JIG) is a working group approved by the XMPP Council to address specific areas of growth or concern within the Jabber/XMPP developer community, usually by means of developing and publishing XMPP Extension Protocols (XEPs).

-

The main function of most JIGs is to produce acceptable enhancements to the Jabber protocol (delivered in the form of Jabber Enhancement Proposals or JEPs For information about Jabber Enhancement Proposals, see http://foundation.jabber.org/jeps/jep-0001.html.) within a reasonably limited period of time. However, at the discretion of the Jabber Council, a handful of standing JIGs may be approved (e.g., to address security or standards compliance).

-

Anyone (not limited to members of the Jabber Software Foundation) may propose the formation of a JIG by completing a Jabber Enhancement Proposal outlining the need for the JIG and its proposed focus. However, JIG leaders must be members of the Jabber Software Foundation. The number of leaders for a JIG is flexible, and shall be determined by each JIG, in consultation with the Jabber Council if necessary. The concept of "membership" with regard to JIGs is loose, and is essentially co-extensive with membership in the appropriate mailing list (each JIG has its own mailing list, which is archived for public review). JIG members do not need to be members of the Jabber Software Foundation, and any member of the general public may subscribe to JIG mailing lists.

-

It is expected that all JIGs (other than certain standing JIGs) will remain active for as long as necessary in order to produce one or more standards-track JEPs for review by the Jabber Council in the JIG's area of focus. However, if a JIG does not show signs of activity for an extended period of time (usually six months of inactivity on the JIG's mailing list), the JIG may be disbanded at the discretion of the Jabber Council with appropriate warning to the JIG members (usually in the form of an email sent to the JIG's mailing list).

+

The main function of most JIGs is to produce acceptable XMPP extensions (delivered in the form of XMPP Extension Protocols or XEPs For information about XMPP Extension Protocols, see http://www.xmpp.org/extensions/xep-0001.html.) within a reasonably limited period of time. However, at the discretion of the XMPP Council, a handful of standing JIGs may be approved (e.g., to address security or standards compliance).

+

Anyone (not limited to members of the Jabber Software Foundation) may propose the formation of a JIG by completing a XMPP Extension Protocol outlining the need for the JIG and its proposed focus. However, JIG leaders must be members of the Jabber Software Foundation. The number of leaders for a JIG is flexible, and shall be determined by each JIG, in consultation with the XMPP Council if necessary. The concept of "membership" with regard to JIGs is loose, and is essentially co-extensive with membership in the appropriate mailing list (each JIG has its own mailing list, which is archived for public review). JIG members do not need to be members of the Jabber Software Foundation, and any member of the general public may subscribe to JIG mailing lists.

+

It is expected that all JIGs (other than certain standing JIGs) will remain active for as long as necessary in order to produce one or more standards-track JEPs for review by the XMPP Council in the JIG's area of focus. However, if a JIG does not show signs of activity for an extended period of time (usually six months of inactivity on the JIG's mailing list), the JIG may be disbanded at the discretion of the XMPP Council with appropriate warning to the JIG members (usually in the form of an email sent to the JIG's mailing list).

-
+ diff --git a/xep-0003.xml b/xep-0003.xml index 2726f6a8..1bc15f22 100644 --- a/xep-0003.xml +++ b/xep-0003.xml @@ -1,13 +1,13 @@ - + %ents; ]> - - + +
Proxy Accept Socket Service (PASS) - A proposal for proxy support in Jabber. + This document defines a method for relaying media via proxies on the Jabber/XMPP network. &LEGALNOTICE; 0003 Active @@ -20,7 +20,7 @@ pass - http://jabber.org/protocol/pass/pass.xsd + http://www.xmpp.org/schemas/pass.xsd &jer; &reatmon; @@ -292,10 +292,10 @@ -

This JEP requires no interaction with &IANA;.

+

This document requires no interaction with &IANA;.

- -

No action on the part of the ®ISTRAR; is necessary as a result of this JEP, since 'jabber:iq:pass' is already a registered protocol namespace.

+ +

No action on the part of the ®ISTRAR; is necessary as a result of this document, since 'jabber:iq:pass' is already a registered protocol namespace.

The protocol documented by this schema is defined in - JEP-0003: http://www.jabber.org/jeps/jep-0003.html + XEP-0003: http://www.xmpp.org/extensions/xep-0003.html @@ -344,4 +344,4 @@ ]]> - + diff --git a/xep-0004.xml b/xep-0004.xml index ff912db2..59624483 100644 --- a/xep-0004.xml +++ b/xep-0004.xml @@ -1,13 +1,13 @@ - + %ents; ]> - - + +
Data Forms - This JEP defines a protocol for data forms and generic data description in Jabber/XMPP. + This document defines an XMPP protocol extension for data forms and generic data description. &LEGALNOTICE; 0004 Final @@ -20,7 +20,7 @@ x-data - http://jabber.org/protocol/x-data/x-data.xsd + http://www.xmpp.org/schemas/x-data.xsd &reatmon; &hildjj; @@ -49,7 +49,7 @@ 2.4 2004-05-04 psa - Per discussion by the JEP authors and Jabber Council, specified that the 'var' attribute is required for all field types except "fixed", for which the 'var' attribute is optional. + Per discussion by the authors and Jabber Council, specified that the 'var' attribute is required for all field types except "fixed", for which the 'var' attribute is optional. 2.3 @@ -103,7 +103,7 @@ 0.4 2001-11-16 rwe - Major redesign to attempt to clarify the scope of this JEP and limit what it is trying to solve. + Major redesign to attempt to clarify the scope of this document and limit what it is trying to solve. 0.3 @@ -125,12 +125,12 @@
-

Several existing Jabber/XMPP protocols involve the exchange of structured data between users and applications for common tasks such as registration (&jep0077;) and searching (&jep0055;). Unfortunately, these early protocols were "hard coded" and thus place significant restrictions on the range of information that can be exchanged. Furthermore, other protocols (e.g., &jep0045;) may need to exchange data for purposes such as configuration, but the configuration options may differ depending on the specific implementation or deployment. Finally, developers may want to extend other protocols (e.g., &jep0030;) in a flexible manner in order to provide information that is not defined in the base protocol. In all of these cases, it would be helpful to use a generic data description format that can be used for dynamic forms generation and data "modelling" in a variety of circumstances.

+

Several existing Jabber/XMPP protocols involve the exchange of structured data between users and applications for common tasks such as registration (&xep0077;) and searching (&xep0055;). Unfortunately, these early protocols were "hard coded" and thus place significant restrictions on the range of information that can be exchanged. Furthermore, other protocols (e.g., &xep0045;) may need to exchange data for purposes such as configuration, but the configuration options may differ depending on the specific implementation or deployment. Finally, developers may want to extend other protocols (e.g., &xep0030;) in a flexible manner in order to provide information that is not defined in the base protocol. In all of these cases, it would be helpful to use a generic data description format that can be used for dynamic forms generation and data "modelling" in a variety of circumstances.

An example may be helpful. Let us imagine that when a user creates a multi-user chatroom on a text conferencing service, the service allows the user to configure the room in various ways. While most implementations will probably provide a somewhat common set of configurable features (discussion logging, maximum number of room occupants, etc.), there will be some divergence: perhaps one implementation will enable archiving of the room log in a variety of file types (XML, HTML, PDF, etc.) and for a variety of time periods (hourly, daily, weekly, etc.), whereas another implementation may present a boolean on/off choice of logging in only one format (e.g., daily logs saved in HTML). Obviously, the first implementation will have more configuration options than the second implementation. Rather than "hard-coding" every option via distinct XML elements (e.g., <room_logging_period/>), a better design would involve a more flexible format.

The 'jabber:x:data' protocol described herein defines such a flexible format for use by Jabber/XMPP entities, steering a middle course between the simplicity of "name-value" pairs and the complexity of &w3xforms; (on which development had just begun when this protocol was designed). In many ways, 'jabber:x:data' is similar to the Forms Module of &w3xhtml;; however, it provides several Jabber-specific data types, enables applications to require data fields, integrates more naturally into the "workflow" semantics of IQ stanzas, and can be included as an extension of existing Jabber/XMPP protocols in ways that the XHTML Forms Module could not when this protocol was developed (especially because &w3xhtmlmod; did not exist at that time).

-

This JEP addresses the following requirements:

+

This document addresses the following requirements:

  1. Data Gathering -- the protocol should enable a form-processing entity (commonly a server, service, or bot) to gather data from a form-submitting entity (commonly a client controlled by a human user); this should be done via distinct data fields (e.g., items in a questionnaire or configuration form), each of which can be a different data "type" and enable free-form input or a choice between multiple options (as is familiar from HTML forms).
  2. Data Reporting -- the protocol should enable a form-processing entity to report data (e.g., search results) to a form-submitting entity, again via distinct data fields.
  3. @@ -194,7 +194,7 @@
    • For &IQ; stanzas, the root element qualified by the "wrapper" namespace in a form of type "form" or "submit" MUST be returned in a form of type "result". The &X; element qualified by the 'jabber:x:data' namespace MUST be a child of the "wrapper" namespace's root element. As defined in &xmppcore;, the 'id' attribute MUST be copied in the IQ result. For data forms of type "form" or "result", the &IQ; stanza SHOULD be of type "result". For data forms of type "submit" or "cancel", the &IQ; stanza SHOULD be of type "set".

    • For &MESSAGE; stanzas, the <thread/> SHOULD be copied in the reply if provided. The &X; element qualified by the 'jabber:x:data' namespace MUST be a child of the &MESSAGE; stanza.

    • -
    • The only data form type allowed for <presence/> stanzas is "result". The &X; element qualified by the 'jabber:x:data' namespace MUST be a child of the &PRESENCE; stanza. In accordance with XMPP Core, use of data forms is not recommended unless necessary to provide information that is directly related to an entity's network availability.

    • +
    • The only data form type allowed for <presence/> stanzas is "result". The &X; element qualified by the 'jabber:x:data' namespace MUST be a child of the &PRESENCE; stanza. In accordance with XMPP Core, use of data forms is not recommended unless necessary to provide information that is directly related to an entity's network availability.

    @@ -257,7 +257,7 @@ The field enables an entity to gather or provide a single line or word of text, which may be shown in an interface. This field type is the default and MUST be assumed if a form-submitting entity receives a field type it does not understand. -

    * Note: Data provided for fields of type "jid-single" or "jid-multi" MUST contain one or more valid Jabber IDs, where validity is determined by the addressing rules defined in XMPP Core (see the Data Validation section below).

    +

    * Note: Data provided for fields of type "jid-single" or "jid-multi" MUST contain one or more valid Jabber IDs, where validity is determined by the addressing rules defined in XMPP Core (see the Data Validation section below).

    ** Note: Data provided for fields of type "text-multi" SHOULD NOT contain any newlines (the \n and \r characters). Instead, the application SHOULD split the data into multiple strings (based on the newlines inserted by the platform), then specify each string as the XML character data of a distinct <value/> element. Similarly, an application that receives multiple <value/> elements for a field of type "text-multi" SHOULD merge the XML character data of the value elements into one text block for presentation to a user, with each string separated by a newline character as appropriate for that platform.

    @@ -287,11 +287,11 @@ -

    Data validation is the responsibility of the form-processing entity (commonly a server, service, or bot) rather than the form-submitting entity (commonly a client controlled by a human user). This helps to meet the requirement for keeping client implementations simple. If the form-processing entity determines that the data provided is not valid, it SHOULD return a "Not Acceptable" error, optionally providing a textual explanation in the XMPP <text/> element or an application-specific child element that identifies the problem (see &jep0086; for information about mappings and formats).

    +

    Data validation is the responsibility of the form-processing entity (commonly a server, service, or bot) rather than the form-submitting entity (commonly a client controlled by a human user). This helps to meet the requirement for keeping client implementations simple. If the form-processing entity determines that the data provided is not valid, it SHOULD return a "Not Acceptable" error, optionally providing a textual explanation in the XMPP <text/> element or an application-specific child element that identifies the problem (see &xep0086; for information about mappings and formats).

    -

    For the sake of the following examples, let us suppose that there exists a bot hosting service on the Jabber network, located at <botster.shakespeare.lit>. This service enables registered users to create and configure new bots, find and interact with existing bots, and so on. We will assume that these interactions occur using the &jep0050; protocol, which is used as a "wrapper" protocol for data forms qualified by the 'jabber:x:data' namespace. The examples in the sections that follow show most of the features of the data forms protocol described above.

    -

    Note: Additional examples can be found in the specifications for various using protocols, such as JEP-0045: Multi-User Chat and JEP-0055: Jabber Search.

    +

    For the sake of the following examples, let us suppose that there exists a bot hosting service on the Jabber network, located at <botster.shakespeare.lit>. This service enables registered users to create and configure new bots, find and interact with existing bots, and so on. We will assume that these interactions occur using the &xep0050; protocol, which is used as a "wrapper" protocol for data forms qualified by the 'jabber:x:data' namespace. The examples in the sections that follow show most of the features of the data forms protocol described above.

    +

    Note: Additional examples can be found in the specifications for various using protocols, such as XEP-0045: Multi-User Chat and XEP-0055: Jabber Search.

    The first step is for a user to create a new bot on the hosting service. We will assume that this is done by sending a "create" command to the desired bot:

    -

    There are no security concerns related to this specification above and beyond those described in the relevant section of XMPP Core.

    +

    There are no security concerns related to this specification above and beyond those described in the relevant section of XMPP Core.

    -

    This JEP requires no interaction with &IANA;.

    +

    This document requires no interaction with &IANA;.

    - +

    The ®ISTRAR; includes the 'jabber:x:data' namespace in its registry of protocol namespaces.

    -

    The Jabber Registrar maintains a registry of parameter values related to the 'jabber:x:data' namespace, specifically as defined in &jep0068;; the registry is located at <http://www.jabber.org/registrar/formtypes.html>.

    +

    The XMPP Registrar maintains a registry of parameter values related to the 'jabber:x:data' namespace, specifically as defined in &xep0068;; the registry is located at <http://www.jabber.org/registrar/formtypes.html>.

    @@ -594,7 +594,7 @@ The protocol documented by this schema is defined in - JEP-0004: http://www.jabber.org/jeps/jep-0004.html + XEP-0004: http://www.xmpp.org/extensions/xep-0004.html @@ -706,4 +706,4 @@
  4. The <reported/> fields MAY possess a 'type' attribute to provide hints about how to interact with the data (type='jid-single' being the most useful).
  5. - + diff --git a/xep-0005.xml b/xep-0005.xml index 9820bc7b..302340c3 100644 --- a/xep-0005.xml +++ b/xep-0005.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Jabber Interest Groups This is the official list and summary information of the Jabber Interest Groups. @@ -104,5 +104,5 @@ Create additional protocols and methods to assist exchanging OOB data in heterog

    Describe in detail how presence management currently works, and work on proposals for things like invisibility.

    - + diff --git a/xep-0006.xml b/xep-0006.xml index 2afa9927..5e33d511 100644 --- a/xep-0006.xml +++ b/xep-0006.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Profiles A proposal for a more powerful and extensible protocol for the management of personal information within Jabber. @@ -93,4 +93,4 @@

    The concept of Jabber Profiles was started by Eric Murphy and Mike Hearn. They both had begun to come up with similar ideas, but did not meet and exchange ideas until around early 2001. Adam Theo also came across them soon after that, and after some discussion, the three authors of this JEP agreed to start a serious effort on developing it. We started it as a project at Theoretic Solutions (http://www.theoretic.com/identity/), although at that time it was as a full-fledged identity specification, complete with Profiles, Authentication, and Trust. It was not until we have now moved to set it up as an official JIG that we have split the individual parts up, to make it easier to develop.

    - + diff --git a/xep-0007.xml b/xep-0007.xml index 8c883609..763b8996 100644 --- a/xep-0007.xml +++ b/xep-0007.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Conferencing JIG A proposal for a Jabber Interest Group that will discuss the protocol for implementing many-to-many communications. @@ -70,4 +70,4 @@

    As listed above, there is a fairly large number of features that could be developed on top of a well-designed framework. The Conferencing JIG 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 JIG will become a group for discussing and proposing new features, and for formally specifying those features.

    - + diff --git a/xep-0008.xml b/xep-0008.xml index d79e21bc..7630b023 100644 --- a/xep-0008.xml +++ b/xep-0008.xml @@ -1,13 +1,13 @@ - + %ents; ]> - - + +
    IQ-Based Avatars - This JEP provides historical documentation of an IQ-based protocol for exchanging user avatars. + This specification provides historical documentation of an IQ-based protocol for exchanging user avatars. &LEGALNOTICE; 0008 Deferred @@ -39,7 +39,7 @@ 0.2 2003-05-06 psa - At the request of the authors, the status of this JEP has been changed to Retracted, to be superseded by a forthcoming JEP. This JEP will not be considered further by the Jabber Software Foundation and should not be used as a basis for implementations. + At the request of the authors, the status of this document has been changed to Retracted, to be superseded by a forthcoming JEP. This document will not be considered further by the Jabber Software Foundation and should not be used as a basis for implementations. 0.1 @@ -135,4 +135,4 @@

    Peter Millard, a co-author of this specification from version 0.1 through version 0.3, died on April 26, 2006.

    - + diff --git a/xep-0009.xml b/xep-0009.xml index c1a05303..1cc085a6 100644 --- a/xep-0009.xml +++ b/xep-0009.xml @@ -1,13 +1,13 @@ - + %ents; ]> - - + +
    Jabber-RPC - This JEP defines a method for transporting XML-RPC encoded requests and responses over Jabber/XMPP. + This specification defines a method for transporting XML-RPC encoded requests and responses over Jabber/XMPP. &LEGALNOTICE; 0009 Final @@ -21,7 +21,7 @@ jabber-rpc - http://jabber.org/protocol/jabber-rpc/jabber-rpc.xsd + http://www.xmpp.org/schemas/jabber-rpc.xsd DJ @@ -33,7 +33,7 @@ 2.1 2006-02-09 psa - Defined error handling, service discovery, security considerations, and Jabber Registrar considerations. + Defined error handling, service discovery, security considerations, and XMPP Registrar considerations. 2.0 @@ -57,7 +57,7 @@

    &xmlrpc; is a method of encoding RPC requests and responses in XML. The original specification defines HTTP (see &rfc2068;) as the only valid transport for XML-RPC payloads.

    Various initiatives exist already to transport XML-RPC payloads over Jabber. These initiatives were independent of each other and used slightly differing methods (e.g. carrying the payload in a element as opposed to an &IQ; stanza), resulting in potential interoperability problems.

    -

    A working session during JabberCon 2001 resulted in a formalisation of a single method. This JEP describes that method, which is labelled as Jabber-RPC to differentiate it from XML-RPC itself.

    +

    A working session during JabberCon 2001 resulted in a formalisation of a single method. This document describes that method, which is labelled as Jabber-RPC to differentiate it from XML-RPC itself.

    The &IQ; stanza is used to transport XML-RPC payloads. XML-RPC requests are transported using an &IQ; stanza of type "set", and XML-RPC responses are transported using an &IQ; stanza of type "result". An &IQ; stanza MUST NOT contain more than one request or response.

    @@ -122,7 +122,7 @@ ]]>
    -

    If an entity supports the Jabber-RPC protocol, it SHOULD advertise that fact in response to &jep0030; information ("diso#info") requests by returning an identity of "automation/rpc" and a feature of "jabber:iq:rpc":

    +

    If an entity supports the Jabber-RPC protocol, it SHOULD advertise that fact in response to &xep0030; information ("diso#info") requests by returning an identity of "automation/rpc" and a feature of "jabber:iq:rpc":

    An entity that supports Jabber-RPC SHOULD establish a "whitelist" of entities that are allowed to perform remote procedure calls and MUST return a &forbidden; error if entities with insufficient permissions attempt such calls.

    -

    This JEP requires no interaction with &IANA;.

    +

    This document requires no interaction with &IANA;.

    - +

    The ®ISTRAR; includes 'jabber:iq:rpc' in its registry of protocol namespaces.

    -

    The Jabber Registrar includes a Service Discovery type of "rpc" within the "automation" category in its registry of service discovery identities.

    +

    The XMPP Registrar includes a Service Discovery type of "rpc" within the "automation" category in its registry of service discovery identities.

    @@ -170,7 +170,7 @@ The protocol documented by this schema is defined in - JEP-0009: http://www.jabber.org/jeps/jep-0009.html + XEP-0009: http://www.xmpp.org/extensions/xep-0009.html There is no official XML schema for XML-RPC. The main body of this schema has been borrowed from an unofficial schema @@ -313,4 +313,4 @@ ]]> - + diff --git a/xep-0010.xml b/xep-0010.xml index 9d613eb9..2f79420b 100644 --- a/xep-0010.xml +++ b/xep-0010.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Whiteboarding JIG A proposal to form a JIG to develop a protocol for whiteboarding over Jabber. @@ -52,4 +52,4 @@

    The actual protocol for how the graphics data is sent over Jabber. This will also include an analysis of any associated functionality that must be performed by Jabber servers and clients.

    - + diff --git a/xep-0011.xml b/xep-0011.xml index c125870f..c71fc09a 100644 --- a/xep-0011.xml +++ b/xep-0011.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Jabber Browsing This JEP defines a way to describe information about Jabber entities and the relationships between entities. Note: This JEP is superseded by JEP-0030: Service Discovery. @@ -21,9 +21,6 @@ JEP-0030 iq-browse - - http://jabber.org/protocol/iq-browse/iq-browse.xsd - &jer; &xvirge; &temas; @@ -72,7 +69,7 @@

    The Jabber world is a diverse place, with lots of services, transports, software agents, users, groupchat rooms, translators, headline tickers, and just about anything that might interact on a real-time basis using conversational messages or presence. Every JabberID (JID) is a node that can be interacted with via messages, presence, and special purpose IQ namespaces. Some JIDs are parents (such as transports), and often many JIDs have relationships with other JIDs (such as a user to their resources, a server to its services, etc.). We need a better way to structure and manage this culture of multi-namespace JID stew. The answer: Jabber Browsing.

    -

    Note well that implementors are encouraged to implement &jep0030; instead of Jabber Browsing.

    +

    Note well that implementors are encouraged to implement &xep0030; instead of Jabber Browsing.

    One of the concepts in browsing which helps to extend the interaction between JIDs is a "JID-Type", a simple heirarchy for identifying the role of any JabberID that is similar to the mime-type format. Many programmers are comfortable with the concept of identifying file types by mime-types, which use the format "category/type". A JID-Type, once discovered, is to be used in the same way that a mime-type would be for a file, to alter the user interface representing that JID or provide alternative functionality for interacting with it (either automatically or driven by user interaction). The following categories and types are proposed as the canonical list for the purpose of JID-Types:

    @@ -427,7 +424,7 @@

    This JEP requires no interaction with &IANA;.

    - +

    No action on the part of the ®ISTRAR; is necessary as a result of this JEP, since 'jabber:iq:browse' is already a registered protocol namespace.

    @@ -440,13 +437,6 @@ xmlns='jabber:iq:browse' elementFormDefault='qualified'> - - - The protocol documented by this schema is defined in - JEP-0011: http://www.jabber.org/jeps/jep-0011.html - - - @@ -480,4 +470,4 @@

    The 'jabber:iq:browse' namespace has been in use for quite some time. However, live browsing still needs to be better defined by a generic publication/subscription system. It is assumed that when such a system is defined, updates to this JEP will be made. It is, however, possible that no futher changes to jabber:iq:browse itself may be needed.

    -
    + diff --git a/xep-0012.xml b/xep-0012.xml index b2a9e6f9..6e6a37f0 100644 --- a/xep-0012.xml +++ b/xep-0012.xml @@ -1,13 +1,13 @@ - + %ents; ]> - - + +
    Last Activity - This JEP defines a protocol for retrieving information about the last activity associated with a Jabber entity. + This document defines an XMPP protocol extension for retrieving information about the last activity associated with a Jabber entity. &LEGALNOTICE; 0012 Active @@ -21,7 +21,7 @@ iq-last - http://jabber.org/protocol/iq-last/iq-last.xsd + http://www.xmpp.org/schemas/iq-last.xsd &jer; &temas; @@ -42,7 +42,7 @@ 0.3 2002-01-14 psa - Made appropriate changes to reflect this JEP's status as informational. + Made appropriate changes to reflect status as informational. 0.2 @@ -59,7 +59,7 @@

    It is often helpful to know the time of the last activity associated with a Jabber Entity. The canonical usage is to discover when a disconnected user last accessed the server (a closely related usage is to discover when a connected user was last active on the server, i.e., the user's idle time). The 'jabber:iq:last' namespace provides a method for retrieving this kind of information. In historical usage, the 'jabber:iq:last' namespace has also been used to query Jabber servers and components about their current uptime; however, this is an extension to the core usage of the 'jabber:iq:last' namespace and may require the addition of a separate namespace in the future.

    -

    Although the 'jabber:iq:last' namespace has been in use since January 2001, it is still not considered one of the standard Jabber protocols. While the &jabberd; server, many components, and some clients already implement this namespace, it is often overlooked by new developers because of the lack of standardization. This informational JEP defines the protocol as it is used today in order to more fully document it for historical purposes.

    +

    Although the 'jabber:iq:last' namespace has been in use since January 2001, it is still not considered one of the standard Jabber protocols. While the &jabberd; server, many components, and some clients already implement this namespace, it is often overlooked by new developers because of the lack of standardization. This informational document defines the protocol as it is used today in order to more fully document it for historical purposes.

    The 'jabber:iq:last' namespace is used as the value of the 'xmlns' attribute of a <query> element contained within an <iq/> element. When requesting last activity information, a Jabber Entity sends an <iq> element of type='get' to another Jabber Entity (i.e., a JID). When responding to such a request, a Jabber Entity sends an <iq> element of type='result'. The <query> element never has any children and contains only one attribute and CDATA, depending on the scenario in which it is used.

    @@ -80,7 +80,7 @@ ]]>

    In this example, the user logged out fifteen minutes and three seconds ago, and when they logged out they sent a presence packet of type='unavailable' whose <status/> element contained the text "Heading home".

    If the user has at least one available resource when the server receives the request, the response SHOULD contain an empty <query/> element whose 'seconds' attribute is set to a value of '0'.

    -

    Note well that, as specified in &xmppcore; and &xmppim;, an IQ query sent to a JID of the form user@host is handled by a server on the user's behalf, not forwarded to one or more active resources. In addition, a server MUST NOT return last activity information to an entity that is not authorized to view the user's presence information (normally via presence subscription), and MUST return a "Forbidden" error in response to such a request (for information about error conditions, refer to &jep0086;).

    +

    Note well that, as specified in &xmppcore; and &xmppim;, an IQ query sent to a JID of the form user@host is handled by a server on the user's behalf, not forwarded to one or more active resources. In addition, a server MUST NOT return last activity information to an entity that is not authorized to view the user's presence information (normally via presence subscription), and MUST return a "Forbidden" error in response to such a request (for information about error conditions, refer to &xep0086;).

    When the IQ get in the 'jabber:iq:last' namespace is sent to a specific resource of an online user (i.e., a JID of the form of 'user@host/resource'), the JID sending the reply MAY respond with the idle time of the user. This is not a required protocol for clients to support, so clients sending such requests MUST NOT depend on receiving a meaningful result from the target user (although a client that does not support the protocol, or that does not wish to divulge this information, SHOULD return a "Service Unavailable" error). The standard does not specify what resolution the clients must use for the idle times, so the result SHOULD NOT be used as a precise measurement. Here is an example:

    @@ -110,13 +110,13 @@

    In this example, the server has been up for a little more than 34 hours.

    -

    A server MUST NOT allow an unauthorized entity to learn a user's network availability by sending a Last Activity request to a JID of the form user@host or user@host/resource; Last Activity information MAY be divulged only to those entities that have permission to view the user's presence (normally via presence subscription), potentially as restricted by privacy rules (as defined in XMPP IM and further profiled in &jep0126;).

    +

    A server MUST NOT allow an unauthorized entity to learn a user's network availability by sending a Last Activity request to a JID of the form user@host or user@host/resource; Last Activity information MAY be divulged only to those entities that have permission to view the user's presence (normally via presence subscription), potentially as restricted by privacy rules (as defined in XMPP IM and further profiled in &xep0126;).

    -

    This JEP requires no interaction with &IANA;.

    +

    This document requires no interaction with &IANA;.

    - -

    No action on the part of the ®ISTRAR; is necessary as a result of this JEP, since 'jabber:iq:last' is already a registered protocol namespace.

    + +

    No action on the part of the ®ISTRAR; is necessary as a result of this document, since 'jabber:iq:last' is already a registered protocol namespace.

    The protocol documented by this schema is defined in - JEP-0012: http://www.jabber.org/jeps/jep-0012.html + XEP-0012: http://www.xmpp.org/extensions/xep-0012.html @@ -154,6 +154,6 @@

    The 'jabber:iq:last' namespace has been used intensively (in the jabberd server, components such as most transports, and some Jabber clients), and no major faults have been found in the current implementations. However, as noted, it has not necessarily been used widely, and many Jabber clients lack support for this namespace. For this reason it is probably best to consider it a non-core namespace.

    The current specification assumes that the 'resource' portion of a JID is equivalent to a device or connection (laptop, PDA, etc.). While in that context it makes sense to interpret the information returned by an IQ reply in the 'jabber:iq:last' namespace as client idle time, such an assumption will make less sense in a future world where a resource may be not a device or connection but truly a more generic resource such as a calendar or weblog. The current interpretation of 'jabber:iq:last' for 'user@host/resource' as idle time may not be appropriate for the more diverse Jabber resources of the future.

    -

    The most significant point of contention regarding the 'jabber:iq:last' namespace is the perceived ambiguity of the information contained in an IQ reply for this namespace. Specifically, for a 'user@host' the information is the time since the JID was last connected to the host, for a 'user@host/resource' the information is the time since the resource was last active (i.e., in most circumstances the client idle time), and for a 'host' the information is the uptime for the server or component. Because of this ambiguity (real or perceived), there is some sentiment in the Jabber community that it would be better to create a separate 'jabber:iq:uptime' namespace (and perhaps even a 'jabber:iq:idletime' namespace), leaving the 'jabber:iq:last' namespace for last disconnection time only. These potential namespaces may be proposed in one or more future JEPs if needed.

    +

    The most significant point of contention regarding the 'jabber:iq:last' namespace is the perceived ambiguity of the information contained in an IQ reply for this namespace. Specifically, for a 'user@host' the information is the time since the JID was last connected to the host, for a 'user@host/resource' the information is the time since the resource was last active (i.e., in most circumstances the client idle time), and for a 'host' the information is the uptime for the server or component. Because of this ambiguity (real or perceived), there is some sentiment in the Jabber community that it would be better to create a separate 'jabber:iq:uptime' namespace (and perhaps even a 'jabber:iq:idletime' namespace), leaving the 'jabber:iq:last' namespace for last disconnection time only. These potential namespaces may be proposed in one or more future specifications if needed.

    -
    + diff --git a/xep-0013.xml b/xep-0013.xml index 66081514..546563ff 100644 --- a/xep-0013.xml +++ b/xep-0013.xml @@ -1,13 +1,13 @@ - + %ents; ]> - - + +
    Flexible Offline Message Retrieval - This JEP defines a protocol for flexible, POP3-like handling of offline messages in Jabber/XMPP. + This document defines an XMPP protocol extension for flexible, POP3-like handling of offline messages. &LEGALNOTICE; 0013 Draft @@ -16,8 +16,8 @@ XMPP Core XMPP IM - JEP-0030 - JEP-0082 + XEP-0030 + XEP-0082 @@ -66,13 +66,13 @@ 0.6 2003-06-10 psa - Slight fixes to JEP-0082 reference and XML schema. + Slight fixes to XEP-0082 reference and XML schema. 0.5 2003-04-28 psa - Added reference to JEP-0082; changed timestamp format to use milliseconds rather than ten-thousandths of a second; made several small editorial changes throughout. + Added reference to XEP-0082; changed timestamp format to use milliseconds rather than ten-thousandths of a second; made several small editorial changes throughout. 0.4 @@ -119,7 +119,7 @@ -

    In order to discover whether one's server supports this protocol, one uses &jep0030;.

    +

    In order to discover whether one's server supports this protocol, one uses &xep0030;.

    @@ -147,7 +147,7 @@ node='http://jabber.org/protocol/offline'/> ]]> -

    If the server supports retrieval of the number of messages, it MUST include &jep0128; data specifying the number of messages:

    +

    If the server supports retrieval of the number of messages, it MUST include &xep0128; data specifying the number of messages:

    ]]> -

    Upon receiving a service discovery request addressed to a node of "http://jabber.org/protocol/offline" (either a disco#info request as in this use case or a disco#items request as in the next use case), the server MUST NOT send a flood of offline messages if the user subsequently sends initial presence to the server during this session. Thus the user is now free to send initial presence (if desired) and to engage in normal IM activities while continuing to read through offline messages. However, once the user sends presence, the user's server MUST deliver in-session messages as usual; this JEP applies to offline messages only. In addition, if the user authenticates and provides presence for another resource while the first (non-flood) resource still has an active session, the server MUST NOT flood the second resource with the offline message queue.

    +

    Upon receiving a service discovery request addressed to a node of "http://jabber.org/protocol/offline" (either a disco#info request as in this use case or a disco#items request as in the next use case), the server MUST NOT send a flood of offline messages if the user subsequently sends initial presence to the server during this session. Thus the user is now free to send initial presence (if desired) and to engage in normal IM activities while continuing to read through offline messages. However, once the user sends presence, the user's server MUST deliver in-session messages as usual; this document applies to offline messages only. In addition, if the user authenticates and provides presence for another resource while the first (non-flood) resource still has an active session, the server MUST NOT flood the second resource with the offline message queue.

    In order to retrieve headers for all of the messages in the queue, the user sends a disco#items request without a 'to' address (i.e., implicitly to the user himself) and with the disco node specified as 'http://jabber.org/protocol/offline'.

    @@ -205,12 +205,12 @@ ]]> -

    If the requester is a JID other than an authorized resource of the user (i.e., the user@host of the requester does not match the user@host of the user), the server MUST return a &forbidden; error. If the requester is authorized but the node does not exist, the server MUST return an ¬found; error. If there are no offline messages for this user, the server MUST return an empty query as defined in JEP-0030. (For information about the syntax of error conditions, refer to &jep0086;.)

    +

    If the requester is a JID other than an authorized resource of the user (i.e., the user@host of the requester does not match the user@host of the user), the server MUST return a &forbidden; error. If the requester is authorized but the node does not exist, the server MUST return an ¬found; error. If there are no offline messages for this user, the server MUST return an empty query as defined in XEP-0030. (For information about the syntax of error conditions, refer to &xep0086;.)

    The syntax and semantics of the attributes are as follows:

    • The 'jid' attribute is the Jabber ID with which the item nodes are associated, i.e., the user himself.
    • The 'name' attribute is the full JID of the sender as received in the 'from' address of the message itself.
    • -
    • The 'node' attribute is a unique identifier for the message. The value SHOULD be considered opaque, but applications MAY perform character-by-character dictionary ordering on the values. This enables applications to implement ordering on messages, such as that shown above, wherein the node values are UTC timestamps (if timestamps are used, they MUST conform to the 'Datetime' profile defined in &jep0082;).
    • +
    • The 'node' attribute is a unique identifier for the message. The value SHOULD be considered opaque, but applications MAY perform character-by-character dictionary ordering on the values. This enables applications to implement ordering on messages, such as that shown above, wherein the node values are UTC timestamps (if timestamps are used, they MUST conform to the 'Datetime' profile defined in &xep0082;).
    @@ -234,7 +234,7 @@ ]]> -

    In order to distinguish incoming messages, each message MUST contain the node value. It is RECOMMENDED for the server to include &jep0091; information in the message.

    +

    In order to distinguish incoming messages, each message MUST contain the node value. It is RECOMMENDED for the server to include &xep0091; information in the message.

    A server MUST NOT remove a message simply because it has been requested by and delivered to the user; instead, the user must specifically request to remove a message. This further implies that the user's offline message queue SHOULD NOT be automatically cleared out by the server if there are offline messages remaining when the user's session ends. However, an implementation or deployment MAY remove messages according to its own algorithms (e.g., storage timeouts based on a "first in first out" rule) or policies (e.g., message queue size limits) if desired.

    @@ -340,14 +340,14 @@ C: request and remove offline messages, send and receive messages, etc.

    A server MUST NOT deliver a user's offline messages to any JID except one of the user's authorized resources.

    -

    This JEP requires no interaction with &IANA;.

    +

    This document requires no interaction with &IANA;.

    - +

    The ®ISTRAR; includes 'http://jabber.org/protocol/offline' in its registry of protocol namespaces.

    -

    The Jabber Registrar includes "automation" in its registry of Service Discovery categories for use for any entities and nodes that provide automated or programmed interaction. This JEP specifies the following new types for the "automation" category:

    +

    The XMPP Registrar includes "automation" in its registry of Service Discovery categories for use for any entities and nodes that provide automated or programmed interaction. This document specifies the following new types for the "automation" category:

    @@ -370,25 +370,25 @@ C: request and remove offline messages, send and receive messages, etc. The node for the offline message queue; valid only for the node "http://jabber.org/protocol/offline" - JEP-0013 + XEP-0013 message-node A node for a specific offline message if service discovery is provided for messages - JEP-0013 + XEP-0013 ]]> -

    The Jabber Registrar includes "http://jabber.org/protocol/offline" in its registry of well-known Service Discovery nodes.

    +

    The XMPP Registrar includes "http://jabber.org/protocol/offline" in its registry of well-known Service Discovery nodes.

    -

    &jep0068; defines a process for standardizing the fields used within Data Forms qualified by a particular namespace. There is one uses of such forms in offline message retrieval as described in the Requesting Number of Messages section of this JEP. The registry submission is as follows:

    +

    &xep0068; defines a process for standardizing the fields used within Data Forms qualified by a particular namespace. There is one uses of such forms in offline message retrieval as described in the Requesting Number of Messages section of this XEP. The registry submission is as follows:

    http://jabber.org/protocol/offline - JEP-0013 + XEP-0013 Service Discovery extension for number of messages in an offline message queue. @@ -414,7 +414,7 @@ C: request and remove offline messages, send and receive messages, etc. The protocol documented by this schema is defined in - JEP-0013: http://www.jabber.org/jeps/jep-0013.html + XEP-0013: http://www.xmpp.org/extensions/xep-0013.html @@ -444,4 +444,4 @@ C: request and remove offline messages, send and receive messages, etc. ]]> - + diff --git a/xep-0014.xml b/xep-0014.xml index 1ea01435..fe6a3293 100644 --- a/xep-0014.xml +++ b/xep-0014.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Message Tone A proposal for including the sender's tone in messages. @@ -67,4 +67,4 @@
  6. serious
  7. - + diff --git a/xep-0015.xml b/xep-0015.xml index 805cf124..a84a8969 100644 --- a/xep-0015.xml +++ b/xep-0015.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Account Transfer A proposal for enabling the ability to transfer an account from one Jabber server to another. @@ -255,4 +255,4 @@ server.

    - + diff --git a/xep-0016.xml b/xep-0016.xml index 3f0f4ba3..390b3eaa 100644 --- a/xep-0016.xml +++ b/xep-0016.xml @@ -1,236 +1,893 @@ - + %ents; ]> - - -
    - Server-Based Privacy Rules - Note: This JEP has been superseded by the XMPP IM Internet-Draft; please refer to that document for the most up-to-date protocol. - &LEGALNOTICE; - 0016 - Retracted - Standards Track - Standards JIG - None - None - XMPP IM - None - &pgmillard; - - 1.3 - 2004-07-26 - psa - Formally retracted this proposal in favor of XMPP IM. - - - 1.2 - 2003-03-12 - psa - Changed status to Deprecated since this protocol is now included in the XMPP IM Internet-Draft. - - - 1.1 - 2002-11-17 - pgm - Added remarks about default handling, and where list processing should take place. - - - 1.0 - 2002-10-22 - psa - Changed status to Draft. - - - 0.4 - 2002-10-03 - pgm - Elaborated on various JID possibilities. - - - 0.3 - 2002-07-31 - pgm - Added info describing current session issues - - - 0.2 - 2002-07-30 - pgm - Added whitelists, subscription filtering, and multiple list capabilities. Changed block to deny. - - - 0.1 - 2002-01-18 - pgm - Initial version. - -
    - -

    Note: This JEP has been superseded by &xmppim;; please refer to that document for the most up-to-date protocol!

    -

    Almost all types of Instant Messaging (IM) applications have found it necessary to develop some method for a user to block the receipt of messages and packets from other users (the rationale for such blockage depends on the needs of the individual user). The method for implementing this functionality in the current Jabber system is for each client application to keep its own "blacklist" of the Jabber IDs from which the user does not wish to receive messages. This current implementation has the following drawbacks:

    -
      -
    1. The XML packets are blocked at the client network endpoint. The unwanted packets need to traverse the entire Jabber network before they are blocked from being delivered. However, these packets could be blocked at the server and never delivered "across the wire" to the client, which becomes especially important for clients that have bandwidth restrictions or in situations where bandwidth is expensive.
    2. -
    3. Currently there exists no Jabber standard enabling clients to share their individual blacklists. Thus blacklist entries are not portable across clients and if a user accesses their account with a different client, the user must re-enter the blacklist entries.
    4. -
    5. Most implementations have no way of blocking specific types of packets -- they typically block only message packets.
    6. -
    -

    The solution to these shortfalls is to have a common blacklist which is stored on the Jabber server along with the other information which clients receive from the server (primarily the roster).

    -
    - -

    This document proposes the addition of a new namespace to handle the storage and retrieval of the server-side blacklist and whitelist information. The proposed 'jabber:iq:privacy' namespace would be consistent with the existing jabber:* namespaces and use the <query/> element as a direct child under the main <iq/> element. A client application would use <iq type="get"> to retrieve the lists from the server, and use <iq type="set"> to add or edit items in a specific list. Each list is a combination of multiple items. Each item can be of type allow or deny. For this document, these lists will be called "zebra lists".

    -

    Each <query/> element would have one or more <list> elements which would contain the information for an entire zebra list. The <query> element also contains an <active> element and a <default> element. These elements contain the name of the currently active zebra list or the name of the default zebra list. A client application may perform a get request with an empty <active> element and/or and empty <default> which indicates that it only wants to know which list is currently active or the default list. A client application may also specify a default list to be used for offline processing and when no active list is directly specified. To fetch the currently active list and the rules for each list, the client application performs a simple blank get request.

    -

    The <default> element is used when processing packets and the client is offline, and is used whenver the client connection (session) does not specify a specific list to be active.

    -

    Each <item> element in the zebra list MAY contain a jid attribute (the Jabber ID, i.e. user@host, of the contact which is to be blocked or allowed), MAY contain a subscription attribute, and MUST contain a type attribute. If no jid attribute is specified, then the rule MUST apply to all jids. The possible values of the type attribute would be either "deny", "allow". To remove items from the list, simply send back the list tag with the various <item> elements missing.

    -

    If the <item> element contains a subscription attribute, it means that the rule applies to all jids in the current users roster which have matching subscription elements. Note that a subscription of "both" MUST be treated the same as "from" and "to" together.

    -

    If the <item> element contains no child elements, then all packets would be blocked or allowed. This includes: messages, presence packets, and iq packets. The <item> elements MAY contain the following empty child elements:

    -
      -
    • The <message/> element (blocks or allows all message packets).
    • -
    • The <presence/> element (blocks or allows all presence packets).
    • -
    • The <iq/> element (blocks or allows all iq packets).
    • -
    -

    When a message or other XML packet is blocked according to the entries in the list, the server MUST bounce the packet back to the original sender. The bounced packet MUST be of type="error" and contain a child <error/> element with a code attribute of 405.

    -

    If a <list> element is sent that contains no child elements, the list of that name is removed. If the active list is not reset during the list removal, and the list removed was the active list, the user is returned back to a default state of allow all packets.

    -
    - -

    Setting your active zebra list is effective for the current session only, but the storage of the lists is for the user. During usage, a client application should set the active list before sending available presence or fetching the roster. If a client does not set the active zebra list for the current session, the default rules of allowing all packets would apply to that session. -

    -

    When changing or editing in a specific zebra list, the client application MUST send back all items in the list in the desired order. Server side components that are performing the packet filtering MUST preserve the order of the individual <item> tags and process the rules in that order. All lists MUST have at least one rule that SHOULD specify the default action. The client application MAY send back an <active> element indicating the new currently active list. If no <active> element is sent, the currently active list is used.

    -

    When a client application wishes to just change the currently active zebra list, they MUST NOT send back all of the lists and their contents. The client application SHOULD send back just the new <active> element. If the named list does not exist, the server MUST send back an error using error code 406 (Not Acceptable).

    -

    Client applications can NOT set the default or active list, and alter the actual lists in the same packet. If a client connection attempts to modify both things at once, the server implementation must send back a iq-error using error code 406.

    -

    Implementations of zebra lists MAY choose to allow specific packet types to be checked. If a client attempts to set an item with a specific packet type (message, presence, or iq) and the implementation does not support that feature, the server MUST send back the <iq/> as a type="error" using an error code of 406 (Not Acceptable).

    -

    Implementation of zebra lists SHOULD NOT "push" new lists and additions to existing clients already connected using the same JID (as you would get jabber:iq:roster pushes). If a client application wants to know the current zebra list information, it SHOULD send a get request.

    -

    When a jabber ID is specified on a rule and the ID does not conform to user@host, the following rules apply:

    -
      -
    • JIDs of the form 'domain.com' must apply to all users from that domain (ie, *@domain.com). Note that the asterisk (*) is a legal user character, thus, 'domain.com' is different from '*@domain.com'
    • -
    • JIDs of the form 'user@domain.com/resource' apply to that specific resource. Packets from other resources from that user MUST not match the rule.
    • -
    • JIDs of the form 'service.domain.com/resource' apply to that specific resource of that service. (As opposed to 'service.domain.com', which matches for '*@service.domain.com'.)
    • -
    -

    If a packet does not match any rules in the active list, the default action is to allow.

    -
    - -

    The following protocol segments illustrate the exchange of packets between the client application and the server in order to retrieve the zebra list information.

    - - -]]> - - - - - - - - - - - - - - -]]> -
    - -

    The following protocol segments illustrate the exchange of packets used to change the active zebra list.

    - - - - -]]> - -<iq type="result" id="2"/> - -
    - -

    The following protocol segments illustrate the exchange of packets used to add or edit a zebra list.

    - - - - - - - - - -]]> - -<iq type="result" id="3"/> - -
    - -

    The following protocol segments illustrate how a client application would remove a zebra list.

    - - - - -]]> - -<iq type="result" id="4"/> - -
    - -

    The following protocol segments illustrate the exchange of message packets when the sender is blocked by the currently active zebra list.

    - - Hey, I just wanted to chat! -]]> - - Hey, I just wanted to chat! - Not Allowed -]]> -
    - - - - - - - - - - - - - -]]> - - -

    In the future, it may be desirable at some point to allow clients to filter specific iq namespaces. The protocol could easily handle this capability by doing something like the following:

    - - - - - - - jabber:iq:oob - - - -]]> - -<iq type="result" id="6"/> - -

    In the future, it may be desirable to have be able to block normal presence/availability packets, while still allowing subscription packets through the zebra list.

    -

    In the current open source Jabber server, there is a JSM module called mod_filter which has the capability to implement this type of functionality. However, most servers with large user bases have found it impossible to use mod_filter because of the load that it imposes on packet processing. Using normal whitelist/blacklist operations should make the processing much simpler than mod_filter's processing of an unknown set of rules various rules (not just blocking).

    -
    - - -

    Peter Millard, the author of this specification from version 0.1 through version 0.3, died on April 26, 2006.

    + + +
    + Privacy Lists + The main body of this document has been copied without modification from Section 10 of RFC 3921. + &LEGALNOTICE; + 0016 + Draft + Standards Track + Standards JIG + + XMPP Core + + + + privacy + &pgmillard; + &stpeter; + + 1.4 + 2006-10-04 + psa +

    Copied Section 10 of RFC 3921.

    +
    + + 1.3 + 2004-07-26 + psa +

    Formally retracted this proposal in favor of XMPP IM.

    +
    + + 1.2 + 2003-03-12 + psa +

    Changed status to Deprecated since this protocol is now included in the XMPP IM Internet-Draft.

    +
    + + 1.1 + 2002-11-17 + pgm +

    Added remarks about default handling, and where list processing should take place.

    +
    + + 1.0 + 2002-10-22 + psa +

    Changed status to Draft.

    +
    + + 0.4 + 2002-10-03 + pgm +

    Elaborated on various JID possibilities.

    +
    + + 0.3 + 2002-07-31 + pgm +

    Added info describing current session issues

    +
    + + 0.2 + 2002-07-30 + pgm +

    Added whitelists, subscription filtering, and multiple list capabilities. Changed block to deny.

    +
    + + 0.1 + 2002-01-18 + pgm +

    Initial version.

    +
    +
    + +

    Almost all types of Instant Messaging (IM) applications have found it necessary to develop some method for a user to block the receipt of messages and packets from other users (the rationale for such blockage depends on the needs of the individual user). This document defines a flexible method for communications blocking.

    +

    The remainder of this document has been copied without modification from Section 10 of &rfc3921;.

    -
    + +

    Most instant messaging systems have found it necessary to implement some method for users to block communications from particular other users (this is also required by sections 5.1.5, 5.1.15, 5.3.2, and 5.4.10 of &rfc2779;. In XMPP this is done by managing one's privacy lists using the 'jabber:iq:privacy' namespace.

    +

    Server-side privacy lists enable successful completion of the following use cases:

    +
      +
    • Retrieving one's privacy lists.
    • +
    • Adding, removing, and editing one's privacy lists.
    • +
    • Setting, changing, or declining active lists.
    • +
    • Setting, changing, or declining the default list (i.e., the list that is active by default).
    • +
    • Allowing or blocking messages based on JID, group, or subscription type (or globally).
    • +
    • Allowing or blocking inbound presence notifications based on JID, group, or subscription type (or globally).
    • +
    • Allowing or blocking outbound presence notifications based on JID, group, or subscription type (or globally).
    • +
    • Allowing or blocking IQ stanzas based on JID, group, or subscription type (or globally).
    • +
    • Allowing or blocking all communications based on JID, group, or subscription type (or globally).
    • +
    +

    Note: Presence notifications do not include presence subscriptions, only presence information that is broadcasted to entities that are subscribed to a user's presence information. Thus this includes presence stanzas with no 'type' attribute or of type='unavailable' only.

    + +

    A user MAY define one or more privacy lists, which are stored by the user's server. Each <list/> element contains one or more rules in the form of <item/> elements, and each <item/> element uses attributes to define a privacy rule type, a specific value to which the rule applies, the relevant action, and the place of the item in the processing order.

    +

    The syntax is as follows:

    + + + + + [] + [] + [] + [] + + + + + ]]> +

    If the type is "jid", then the 'value' attribute MUST contain a valid Jabber ID. JIDs SHOULD be matched in the following order:

    +
      +
    1. <user@domain/resource> (only that resource matches)
    2. +
    3. <user@domain> (any resource matches)
    4. +
    5. <domain/resource> (only that resource matches)
    6. +
    7. <domain> (the domain itself matches, as does any user@domain, domain/resource, or address containing a subdomain)
    8. +
    +

    If the type is "group", then the 'value' attribute SHOULD contain the name of a group in the user's roster. (If a client attempts to update, create, or delete a list item with a group that is not in the user's roster, the server SHOULD return to the client an <item-not-found/> stanza error.)

    +

    If the type is "subscription", then the 'value' attribute MUST be one of "both", "to", "from", or "none" as defined RFC 3921, where "none" includes entities that are totally unknown to the user and therefore not in the user's roster at all.

    +

    If no 'type' attribute is included, the rule provides the "fall-through" case.

    +

    The 'action' attribute MUST be included and its value MUST be either "allow" or "deny".

    +

    The 'order' attribute MUST be included and its value MUST be a non-negative integer that is unique among all items in the list. (If a client attempts to create or update a list with non-unique order values, the server MUST return to the client a <bad-request/> stanza error.)

    +

    The <item/> element MAY contain one or more child elements that enable an entity to specify more granular control over which kinds of stanzas are to be blocked (i.e., rather than blocking all stanzas). The allowable child elements are:

    +
      +
    • <message/> -- blocks incoming message stanzas
    • +
    • <iq/> -- blocks incoming IQ stanzas
    • +
    • <presence-in/> -- blocks incoming presence notifications
    • +
    • <presence-out/> -- blocks outgoing presence notifications
    • +
    +

    Within the 'jabber:iq:privacy' namespace, the <query/> child of an IQ stanza of type "set" MUST NOT include more than one child element (i.e., the stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element); if a sending entity violates this rule, the receiving entity MUST return a <bad-request/> stanza error.

    +

    When a client adds or updates a privacy list, the <list/> element SHOULD contain at least one <item/> child element; when a client removes a privacy list, the <list/> element MUST NOT contain any <item/> child elements.

    +

    When a client updates a privacy list, it must include all of the desired items (i.e., not a "delta").

    +
    + +
      +
    1. If there is an active list set for a session, it affects only the session(s) for which it is activated, and only for the duration of the session(s); the server MUST apply the active list only and MUST NOT apply the default list (i.e., there is no "layering" of lists).

    2. +
    3. The default list applies to the user as a whole, and is processed if there is no active list set for the target session/resource to which a stanza is addressed, or if there are no current sessions for the user.

    4. +
    5. If there is no active list set for a session (or there are no current sessions for the user), and there is no default list, then all stanzas SHOULD BE accepted or appropriately processed by the server on behalf of the user in accordance with the server rules for handling XML stanzas defined in RFC 3921.

    6. +
    7. Privacy lists MUST be the first delivery rule applied by a server, superseding (1) the routing and delivery rules specified in server rules for handling XML stanzas defined in RFC 3921 and (2) the handling of subscription-related presence stanzas (and corresponding generation of roster pushes) specified in RFC 3921.

    8. +
    9. The order in which privacy list items are processed by the server is important. List items MUST be processed in ascending order determined by the integer values of the 'order' attribute for each <item/>.

    10. +
    11. As soon as a stanza is matched against a privacy list rule, the server MUST appropriately handle the stanza in accordance with the rule and cease processing.

    12. +
    13. If no fall-through item is provided in a list, the fall-through action is assumed to be "allow".

    14. +
    15. If a user updates the definition for an active list, subsequent processing based on that active list MUST use the updated definition (for all resources to which that active list currently applies).

    16. +
    17. If a change to the subscription state or roster group of a roster item defined in an active or default list occurs during a user's session, subsequent processing based on that list MUST take into account the changed state or group (for all resources to which that list currently applies).

    18. +
    19. When the definition for a rule is modified, the server MUST send an IQ stanza of type "set" to all connected resources, containing a <query/> element with only one <list/> child element, where the 'name' attribute is set to the name of the modified privacy list. These "privacy list pushes" adhere to the same semantics as the "roster pushes" used in roster management, except that only the list name itself (not the full list definition or the "delta") is pushed to the connected resources. It is up to the receiving resource to determine whether to retrieve the modified list definition, although a connected resource SHOULD do so if the list currently applies to it.

    20. +
    21. When a resource attempts to remove a list or specify a new default list while that list applies to a connected resource other than the sending resource, the server MUST return a <conflict/> error to the sending resource and MUST NOT make the requested change.

    22. +
    +
    + + + + + ]]> + + + + + + + + + + ]]> + + + + + + ]]> + + + + + + + + + ]]> + + + + + + ]]> + + + + + + + + + ]]> + + + + + + ]]> + + + + + + + + + + + ]]> +

    In this example, the user has three lists: (1) 'public', which allows communications from everyone except one specific entity (this is the default list); (2) 'private', which allows communications only with contacts who have a bidirectional subscription with the user (this is the active list); and (3) 'special', which allows communications only with three specific entities.

    +

    If the user attempts to retrieve a list but a list by that name does not exist, the server MUST return an <item-not-found/> stanza error to the user:

    + + + + + + + + + ]]> +

    The user is allowed to retrieve only one list at a time. If the user attempts to retrieve more than one list in the same request, the server MUST return a <bad request/> stanza error to the user:

    + + + + + + + + + + + ]]> +
    + +

    In order to set or change the active list currently being applied by the server, the user MUST send an IQ stanza of type "set" with a <query/> element qualified by the 'jabber:iq:privacy' namespace that contains an empty <active/> child element possessing a 'name' attribute whose value is set to the desired list name.

    + + + + + + ]]> +

    The server MUST activate and apply the requested list before sending the result back to the client.

    + + ]]> +

    If the user attempts to set an active list but a list by that name does not exist, the server MUST return an <item-not-found/> stanza error to the user:

    + + + + + + + + + ]]> +

    In order to decline the use of any active list, the connected resource MUST send an empty <active/> element with no 'name' attribute.

    + + + + + + ]]> + + ]]> +
    + +

    In order to change its default list (which applies to the user as a whole, not only the sending resource), the user MUST send an IQ stanza of type "set" with a <query/> element qualified by the 'jabber:iq:privacy' namespace that contains an empty <default/> child element possessing a 'name' attribute whose value is set to the desired list name.

    + + + + + + ]]> + + ]]> +

    If the user attempts to change which list is the default list but the default list is in use by at least one connected resource other than the sending resource, the server MUST return a <conflict/> stanza error to the sending resource:

    + + + + + + + + + ]]> +

    If the user attempts to set a default list but a list by that name does not exist, the server MUST return an <item-not-found/> stanza error to the user:

    + + + + + + + + + ]]> +

    In order to decline the use of a default list (i.e., to use the domain's stanza routing rules at all times), the user MUST send an empty <default/> element with no 'name' attribute.

    + + + + + + ]]> + + ]]> +

    If one connected resource attempts to decline the use of a default list for the user as a whole but the default list currently applies to at least one other connected resource, the server MUST return a <conflict/> error to the sending resource:

    + + + + + + + + + ]]> +
    + +

    In order to edit a privacy list, the user MUST send an IQ stanza of type "set" with a <query/> element qualified by the 'jabber:iq:privacy' namespace that contains one <list/> child element possessing a 'name' attribute whose value is set to the list name the user would like to edit. The <list/> element MUST contain one or more <item/> elements, which specify the user's desired changes to the list by including all elements in the list (not the "delta").

    + + + + + + + + + + ]]> + + ]]> +

    Note: The value of the 'order' attribute for any given item is not fixed. Thus in the foregoing example if the user would like to add 4 items between the "tybalt@example.com" item and the "paris@example.org" item, the user's client MUST renumber the relevant items before submitting the list to the server.

    +

    The server MUST now send a "privacy list push" to all connected resources:

    + + + + + + + + + + + + ]]> +

    In accordance with the semantics of IQ stanzas defined in &rfc3920;, each connected resource MUST return an IQ result to the server as well:

    + + + + ]]> +
    + +

    The same protocol used to edit an existing list is used to create a new list. If the list name matches that of an existing list, the request to add a new list will overwrite the old one. As with list edits, the server MUST also send a "privacy list push" to all connected resources.

    +
    + +

    In order to remove a privacy list, the user MUST send an IQ stanza of type "set" with a <query/> element qualified by the 'jabber:iq:privacy' namespace that contains one empty <list/> child element possessing a 'name' attribute whose value is set to the list name the user would like to remove.

    + + + + + + ]]> + + ]]> +

    If a user attempts to remove a list that is currently being applied to at least one resource other than the sending resource, the server MUST return a <conflict/> stanza error to the user; i.e., the user MUST first set another list to active or default before attempting to remove it. If the user attempts to remove a list but a list by that name does not exist, the server MUST return an <item-not-found/> stanza error to the user. If the user attempts to remove more than one list in the same request, the server MUST return a <bad request/> stanza error to the user.

    +
    + +

    Server-side privacy lists enable a user to block incoming messages from other entities based on the entity's JID, roster group, or subscription status (or globally). The following examples illustrate the protocol. (Note: For the sake of brevity, IQ stanzas of type "result" are not shown in the following examples, nor are "privacy list pushes".)

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive messages from the entity with the specified JID.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive messages from any entities in the specified roster group.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive messages from any entities with the specified subscription type.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive messages from any other users.

    +
    + +

    Server-side privacy lists enable a user to block incoming presence notifications from other entities based on the entity's JID, roster group, or subscription status (or globally). The following examples illustrate the protocol.

    +

    Note: Presence notifications do not include presence subscriptions, only presence information that is broadcasted to the user because the user is currently subscribed to a contact's presence information. Thus this includes presence stanzas with no 'type' attribute or of type='unavailable' only.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive presence notifications from the entity with the specified JID.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive presence notifications from any entities in the specified roster group.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive presence notifications from any entities with the specified subscription type.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive presence notifications from any other users.

    +
    + +

    Server-side privacy lists enable a user to block outgoing presence notifications to other entities based on the entity's JID, roster group, or subscription status (or globally). The following examples illustrate the protocol.

    +

    Note: Presence notifications do not include presence subscriptions, only presence information that is broadcasted to contacts because those contacts are currently subscribed to the user's presence information. Thus this includes presence stanzas with no 'type' attribute or of type='unavailable' only.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not send presence notifications to the entity with the specified JID.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not send presence notifications to any entities in the specified roster group.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not send presence notifications to any entities with the specified subscription type.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not send presence notifications to any other users.

    +
    + +

    Server-side privacy lists enable a user to block incoming IQ stanzas from other entities based on the entity's JID, roster group, or subscription status (or globally). The following examples illustrate the protocol.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive IQ stanzas from the entity with the specified JID.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive IQ stanzas from any entities in the specified roster group.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive IQ stanzas from any entities with the specified subscription type.

    + + + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive IQ stanzas from any other users.

    +
    + +

    Server-side privacy lists enable a user to block all stanzas from and to other entities based on the entity's JID, roster group, or subscription status (or globally). Note that this includes subscription-related presence stanzas, which are excluded by Blocking Inbound Presence Notifications. The following examples illustrate the protocol.

    + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive any communications from, nor send any stanzas to, the entity with the specified JID.

    + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive any communications from, nor send any stanzas to, any entities in the specified roster group.

    + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive any communications from, nor send any stanzas to, any entities with the specified subscription type.

    + + + + + + + + ]]> +

    As a result of creating and applying the foregoing list, the user will not receive any communications from, nor send any stanzas to, any other users.

    +
    + +

    If a blocked entity attempts to send message or presence stanzas to the user, the user's server SHOULD silently drop the stanza and MUST NOT return an error to the sending entity.

    +

    If a blocked entity attempts to send an IQ stanza of type "get" or "set" to the user, the user's server MUST return to the sending entity a <service-unavailable/> stanza error, since this is the standard error code sent from a client that does not understand the namespace of an IQ get or set. IQ stanzas of other types SHOULD be silently dropped by the server.

    + + + + ]]> + + + + + + + ]]> +
    + +

    When building a representation of a higher-level privacy heuristic, a client SHOULD use the simplest possible representation.

    +

    For example, the heuristic "block all communications with any user not in my roster" could be constructed in any of the following ways:

    +
      +
    • allow communications from all JIDs in my roster (i.e., listing each JID as a separate list item), but block communications with everyone else
    • +
    • allow communications from any user who is in one of the groups that make up my roster (i.e., listing each group as a separate list item), but block communications from everyone else
    • +
    • allow communications from any user with whom I have a subscription of 'both' or 'to' or 'from' (i.e., listing each subscription value separately), but block communications from everyone else
    • +
    • block communications from anyone whose subscription state is 'none'
    • +
    +

    The final representation is the simplest and SHOULD be used; here is the XML that would be sent in this case:

    + + + + + + + + ]]> +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + +

    Peter Millard, the author of this specification from version 0.1 through version 0.3, died on April 26, 2006.

    +
    + + diff --git a/xep-0017.xml b/xep-0017.xml index 5c99553f..8dd5a9e8 100644 --- a/xep-0017.xml +++ b/xep-0017.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Naive Packet Framing Protocol An intermediate method for more efficient framing of the Jabber XML Stream. @@ -46,7 +46,7 @@

    Framing is the mechanism by which a listener is able to separate a stream of information into discrete semantic units. In Jabber, each of these semantic units is a fragment of a <stream:stream> document consisting of a direct (depth=1) child element of the <stream:stream> document element, and all its attributes and child nodes. These semantic units are hereafter called packets. A Jabber session document, excluding the document element start tag and end tag which are handled as special cases, is implicitly encoded into these packets and transmitted across the network.

    -

    This JEP describes a framing method that may provide performance and code simplicity advantages over the framing method currently used.

    +

    This document describes a framing method that may provide performance and code simplicity advantages over the framing method currently used.

    The current scheme for framing in Jabber relies on the inherent structure of XML to determine packet boundaries. Since each packet is a well-formed XML fragment, the start of the packet is unambiguously denoted by the element start tag at depth=1, and the end of the packet is unambiguously denoted by the corresponding close tag at depth=1.

    This method of framing is elegant because all the necessary framing information is inherent in the XML; it makes framing independent of the underlying transport layer so long as that transport layer guarantees per-session FIFO delivery. However, it has significant performance and implementation disadvantages, as it requires any Jabber node (endpoint or router) to XML-parse the packet as it is still being received in order to determine the packet boundary. Many XML parsing suites are not designed to be used in this manner, and various hacks and workarounds have emerged in current Jabber software in order to adapt them for this purpose.

    @@ -68,7 +68,7 @@

    Framing data is included for the <stream:stream> and </stream:stream> tags as if they were their own packets, although they are not independently well-formed XML. These should be handled as special cases in a Jabber XML streams implementation.

    -

    The connecting agent (client) implicitly requests that the receiving agent (server) use JEP-0017 framing by transmitting JEP-0017 framing data in its own outgoing stream (the connecting agent always "goes first"). Servers should detect the presence of framing data in the client's stream (by testing whether the first character received is a digit or a <) and, if it is detected, activate outgoing framing for that session.

    +

    The connecting agent (client) implicitly requests that the receiving agent (server) use XEP-0017 framing by transmitting XEP-0017 framing data in its own outgoing stream (the connecting agent always "goes first"). Servers should detect the presence of framing data in the client's stream (by testing whether the first character received is a digit or a <) and, if it is detected, activate outgoing framing for that session.

    Regardless of the use of framing data, all nodes must verify the well-formedness of XML payloads in order to avoid propagating misframes.

    @@ -77,7 +77,7 @@ -

    This framing method is not intended as a fully satisfactory or permanent solution to XML stream framing. In the "distant" (longer than one year) time span, it may be desirable to consider more thorough systems such as BEEP. The intent of this JEP is to establish an intermediate solution that will provide code simplicity advantages to new implementations in the near term without requiring fundamental changes to the Jabber transport or protocol (as adopting BEEP would almost certainly require).

    +

    This framing method is not intended as a fully satisfactory or permanent solution to XML stream framing. In the "distant" (longer than one year) time span, it may be desirable to consider more thorough systems such as BEEP. The intent of this document is to establish an intermediate solution that will provide code simplicity advantages to new implementations in the near term without requiring fundamental changes to the Jabber transport or protocol (as adopting BEEP would almost certainly require).

    -
    + diff --git a/xep-0018.xml b/xep-0018.xml index 4952a796..89da8af6 100644 --- a/xep-0018.xml +++ b/xep-0018.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Invisible Presence Documentation of invisible presence. @@ -132,4 +132,4 @@

    No namespaces or parameters need to be registered with the ®ISTRAR; as a result of this JEP.

    - + diff --git a/xep-0019.xml b/xep-0019.xml index 707eee1e..27de0c8c 100644 --- a/xep-0019.xml +++ b/xep-0019.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Streamlining the JIGs This JEP proposes to streamline the existing Jabber Interest Groups (JIGs). @@ -17,12 +17,7 @@ - - Peter - Saint-Andre - stpeter@jabber.org - stpeter@jabber.org - + &stpeter; 1.0 2002-03-20 @@ -46,9 +41,9 @@

    The Jabber Software Foundation is an experiment. When we initially set up our policies, processes, and structures, we knew that our initial thoughts might not be our final thoughts, and that we would need to make adjustments as experience dictated. In this JEP, I argue that just such an adjustment is now necessary with regard to the Jabber Interest Groups (JIGs). The proposal contained in this JEP formalizes some conclusions reached during a weekly discussion forum held by the Jabber Software Foundation on 2002-01-23. A log of that discussion is available at http://www.jabber.org/chatbot/logs/conference.jabber.org/foundation/2002-01-23.html. Further discussion within the Standards JIG has been helpful in clarifying the argument presented here.

    -

    JEP-0002 URL: http://www.jabber.org/jeps/jep-0002.html defined a JIG as "a working group approved by the Jabber Council to address specific areas of growth or concern within the Jabber community", and specified that the function of a JIG is to "produce acceptable enhancements to the Jabber protocol (delivered in the form of Jabber Enhancement Proposals or JEPs) within a reasonably limited period of time". In early January of 2002, JEP-0002 was modified to incorporate language about disbanding a JIG after a defined period of inactivity on the JIG's mailing list (normally six months).

    +

    &xep0002; defined a JIG as "a working group approved by the Jabber Council to address specific areas of growth or concern within the Jabber community", and specified that the function of a JIG is to "produce acceptable enhancements to the Jabber protocol (delivered in the form of Jabber Enhancement Proposals or JEPs) within a reasonably limited period of time". In early January of 2002, JEP-0002 was modified to incorporate language about disbanding a JIG after a defined period of inactivity on the JIG's mailing list (normally six months).

    Unfortunately, it is widely recognized in the Jabber community that the JIGs are not working. Ten JIGs have been approved by the Jabber Council,See http://www.jabber.org/jigs.html for the official list. eight of them over six months ago in July and August of 2001. Two of the special-purpose JIGs (OOB and Presence) have seen no activity whatsoever and thus are clearly eligible to be disbanded. The other special-purpose JIGs (Conference, Formatting, Forms, Profiles, RPC, and Whiteboard) have seen extremely limited activity and it is a judgment call whether some of them should be allowed to continue according to the current standards defined in JEP-0002. Only the two "standing" JIGs (Security and Standards) have experienced significant and continued mailing list activity, mainly because the Standards JIG has assumed the role of discussion forum for JEPs before they are submitted to the Jabber Council.

    -

    In perhaps the best measure of success or failure, only one JIG has produced a JEP for submission to the Jabber Council, and that JEP (JEP-0009 URL: http://www.jabber.org/jeps/jep-0009.html for transporting XML-RPC over Jabber) was essentially created outside the JIG structure at JabberCon 2001. Perhaps most ominously, no other JIG has shown any signs of progress toward completing a JEP, or even starting work on one. With the possible exception of JEP-0009, all of the JEPs created so far have come from individuals or small, ad-hoc groups -- not through the efforts of the JIGs.

    +

    In perhaps the best measure of success or failure, only one JIG has produced a JEP for submission to the Jabber Council, and that JEP (&xep0009;) was essentially created outside the JIG structure at JabberCon 2001. Perhaps most ominously, no other JIG has shown any signs of progress toward completing a JEP, or even starting work on one. With the possible exception of JEP-0009, all of the JEPs created so far have come from individuals or small, ad-hoc groups -- not through the efforts of the JIGs.

    In other words, an honest assessment forces us to conclude that the JIGs are not working.

    @@ -78,4 +73,4 @@

    There may be value in bringing back specialized JIGs in the future when the Jabber community becomes larger. However, at this time I urge that we face the facts and proactively implement the solution I have outlined in this JEP. Lest there be any concern that disbanding the JIGs is outside the power or purview of the Jabber Council, I note that Section 8.2 of the Bylaws of the Jabber Software Foundation states in part that "The Jabber Council or the Members of the Corporation may, by resolution, ... terminate a Jabber Interest Group at any time for any reason." (An electronic copy of the Bylaws may be found at http://www.jabber.org/bylaws.html.)

    - + diff --git a/xep-0020.xml b/xep-0020.xml index f016e8d3..dec34ff2 100644 --- a/xep-0020.xml +++ b/xep-0020.xml @@ -1,13 +1,13 @@ - + %ents; ]> - - + +
    Feature Negotiation - This JEP defines a A protocol that enables two Jabber entities to mutually negotiate feature options. + This document defines an XMPP protocol extension that enables two entities to mutually negotiate feature options. &LEGALNOTICE; 0020 Draft @@ -15,7 +15,7 @@ Standards JIG XMPP Core - JEP-0004 + XEP-0004 @@ -29,13 +29,13 @@ 1.4 2004-05-21 psa - Moved remaining feature negotiation text from JEP-0030 to this document. + Moved remaining feature negotiation text from XEP-0030 to this document. 1.3 2004-04-23 psa - Per Council discussion, changed root element from <query/> to <feature/> for the sake of consistency with using protocols; moved some text from JEP-0030 to this document. + Per Council discussion, changed root element from <query/> to <feature/> for the sake of consistency with using protocols; moved some text from XEP-0030 to this document. 1.2 @@ -81,14 +81,14 @@
    -

    A discovery protocol such as &jep0030; enables Jabber entities to query other entities regarding the features they support, but does not provide a means for the two entities to negotiate specific options related to the advertised features (e.g., specific methods of file transfer such as &jep0047; or &jep0065;).

    +

    A discovery protocol such as &xep0030; enables Jabber entities to query other entities regarding the features they support, but does not provide a means for the two entities to negotiate specific options related to the advertised features (e.g., specific methods of file transfer such as &xep0047; or &xep0065;).

    The protocol defined herein enables Jabber entities to negotiate options for specific features. These features could be negotiated between any two endpoints on the Jabber network, such as two clients, a client and a component, two components, a client and a server, or two servers. The protocol is generic enough that it can be used whenever options need to be negotiated between two Jabber entities.

    -

    Features are negotiated though the exchange of &IQ; stanzas containing &QUERY; child elements qualified by the 'http://jabber.org/protocol/feature-neg' namespace. However, this &QUERY; element is simply a wrapper for structured data encapsulated in the &jep0004; protocol. Earlier versions of this JEP defined an structured data format to handle the feature negotiation workflow; versions later than 0.4 use Data Forms, i.e., the 'jabber:x:data' namespace.

    -

    In order to begin a negotation, the initiator sends an &IQ; stanza of type "get" to the recipient with a single <feature/> element containing a data form of type "form" which defines the available options for one or more features. Each feature is represented as an x-data "field", which MUST be of type "list-single" as specified in JEP-0004.

    +

    Features are negotiated though the exchange of &IQ; stanzas containing &QUERY; child elements qualified by the 'http://jabber.org/protocol/feature-neg' namespace. However, this &QUERY; element is simply a wrapper for structured data encapsulated in the &xep0004; protocol. Earlier versions of this document defined an structured data format to handle the feature negotiation workflow; versions later than 0.4 use Data Forms, i.e., the 'jabber:x:data' namespace.

    +

    In order to begin a negotation, the initiator sends an &IQ; stanza of type "get" to the recipient with a single <feature/> element containing a data form of type "form" which defines the available options for one or more features. Each feature is represented as an x-data "field", which MUST be of type "list-single" as specified in XEP-0004.

    The recipient SHOULD examine each feature and the options provided. In order to indicate preferred options, the recipient then SHOULD specify one option for each feature and return a data form of type "submit" to the initiator in an &IQ; stanza of type "result".

    -

    The following examples show some likely scenarios for feature negotiation between entities. Further examples can be found in using protocols, such as &jep0096;.

    +

    The following examples show some likely scenarios for feature negotiation between entities. Further examples can be found in using protocols, such as &xep0096;.

    A typical negotiation flow is shown in the following example of two entities negotiating the time and place for a meeting.

    -

    If at least one feature offered by an entity is subject to &jep0020;, the entity's response to a service discovery information request MUST include <feature var='http://jabber.org/protocol/feature-neg'/> as one of the features.

    +

    If at least one feature offered by an entity is subject to &xep0020;, the entity's response to a service discovery information request MUST include <feature var='http://jabber.org/protocol/feature-neg'/> as one of the features.

    ]]> -

    The using protocol (in these examples, &jep0045;) SHOULD specify which features might be negotiable, either in the relevant documentation or in the entry for that feature in the service discovery features registry maintained by the Jabber Registrar. However, the requesting entity MAY also query the responding entity in order to determine which features are negotiable, as shown below.

    +

    The using protocol (in these examples, &xep0045;) SHOULD specify which features might be negotiable, either in the relevant documentation or in the entry for that feature in the service discovery features registry maintained by the XMPP Registrar. However, the requesting entity MAY also query the responding entity in order to determine which features are negotiable, as shown below.

    ]]> -

    The using protocol (in these examples, JEP-0045) SHOULD specify which features might be negotiable, either in the relevant documentation or in the entry for that feature in the service discovery features registry maintained by the Jabber Registrar (see <http://www.jabber.org/registrar/disco-vars.html>). However, the requesting entity MAY also query the responding entity in order to determine which features are negotiable, as shown below.

    +

    The using protocol (in these examples, XEP-0045) SHOULD specify which features might be negotiable, either in the relevant documentation or in the entry for that feature in the service discovery features registry maintained by the XMPP Registrar (see <http://www.jabber.org/registrar/disco-vars.html>). However, the requesting entity MAY also query the responding entity in order to determine which features are negotiable, as shown below.

    -

    This JEP requires no interaction with &IANA;.

    +

    This document requires no interaction with &IANA;.

    - -

    In order for Jabber entities to adequately leverage Data Forms (e.g., by using machine-readable fields), it is RECOMMENDED to register standard x-data fields with the ®ISTRAR; via the mechanisms defined in &jep0068;. Whether to do so for any given features and options shall be determined by the using protocol.

    + +

    In order for Jabber entities to adequately leverage Data Forms (e.g., by using machine-readable fields), it is RECOMMENDED to register standard x-data fields with the ®ISTRAR; via the mechanisms defined in &xep0068;. Whether to do so for any given features and options shall be determined by the using protocol.

    @@ -276,7 +276,7 @@ The protocol documented by this schema is defined in - JEP-0020: http://www.jabber.org/jeps/jep-0020.html + XEP-0020: http://www.xmpp.org/extensions/xep-0020.html @@ -293,4 +293,4 @@

    Peter Millard, the primary author of this specification from version 0.1 through version 1.4, died on April 26, 2006. The remaining author is thankful for Peter's work on this specification.

    -
    + diff --git a/xep-0021.xml b/xep-0021.xml index 86721741..3ef745c4 100644 --- a/xep-0021.xml +++ b/xep-0021.xml @@ -1,11 +1,11 @@ - + %ents; ]> - + - +
    Jabber Event Notification Service (ENS) @@ -340,4 +340,4 @@ - + diff --git a/xep-0022.xml b/xep-0022.xml index 0f1feceb..73837d92 100644 --- a/xep-0022.xml +++ b/xep-0022.xml @@ -1,13 +1,13 @@ - + %ents; ]> - - + +
    Message Events - This JEP defines protocol extensions used to request and respond to events relating to the delivery, display, and composition of messages. + This document defines an XMPP protocol extension used to request and respond to events relating to the delivery, display, and composition of messages. &LEGALNOTICE; 0022 Active @@ -71,6 +71,7 @@

    The 'jabber:x:event' namespace defines extensions used to request and respond to events relating to the delivery, display, and composition of messages.

    By attaching a jabber:x:event extension to a &MESSAGE; element, the sender can track stages in the delivery of that message to its recipient.

    +

    Note: A more modern protocol extension for this functionality has been been defined in &xep0085;.

    @@ -267,10 +268,10 @@ SEND:

    There are no security features or concerns related to this proposal.

    -

    This JEP requires no interaction with &IANA;.

    +

    This document requires no interaction with &IANA;.

    -

    No action on the part of the ®ISTRAR; is necessary as a result of this JEP, since 'jabber:x:event' is already a registered protocol namespace.

    +

    No action on the part of the ®ISTRAR; is necessary as a result of this document, since 'jabber:x:event' is already a registered protocol namespace.

    @@ -286,7 +287,7 @@ SEND: The protocol documented by this schema is defined in - JEP-0022: http://www.jabber.org/jeps/jep-0022.html + XEP-0022: http://www.xmpp.org/extensions/xep-0022.html @@ -318,4 +319,4 @@ SEND: - + diff --git a/xep-0023.xml b/xep-0023.xml index 1f7d6136..3586d6ab 100644 --- a/xep-0023.xml +++ b/xep-0023.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Message Expiration This specification documents an historical protocol that was used to specify expiration dates for messages; this protocol has been deprecated in favor of JEP-0079: Advanced Message Processing. @@ -47,7 +47,7 @@ 1.1 2004-01-06 psa - Added XML schema; added security, IANA, and Jabber Registrar considerations. + Added XML schema; added security, IANA, and XMPP Registrar considerations. 1.0 @@ -70,7 +70,7 @@
    -

    Note Well: The protocol described herein has been deprecated by the &JSF;. The recommended protocol for implementing message expiration functionality is now &jep0079;.

    +

    Note Well: The protocol described herein has been deprecated by the &JSF;. The recommended protocol for implementing message expiration functionality is now &xep0079;.

    It is sometimes helpful to indicate that a piece of information has a finite useful life or time-to-live (TTL). In the context of instant messaging, the main use of a TTL is to indicate that a message must or should be used by or read by a certain time, usually because the message has meaning or purpose only within a finite amount of time. In normal usage, such a message should be discarded after the specified time has passed if it has not been used or read by that time.

    In Jabber, TTL functionality has been implemented informally using the jabber:x:expire namespace. Support for this namespace was added to the &jabberd; server as well as some clients and components in early 2001. Specifically, that support has involved the following two areas of responsibility:

      @@ -123,7 +123,7 @@ SEND: <message to='sabine@gnu.mine.nu' id='msg811'>

      This JEP requires no interaction with &IANA;.

      - +

      No action on the part of the ®ISTRAR; is necessary as a result of this JEP, since 'jabber:x:expire' is already a registered protocol namespace.

      @@ -140,7 +140,7 @@ SEND: <message to='sabine@gnu.mine.nu' id='msg811'> The protocol documented by this schema is defined in - JEP-0023: http://www.jabber.org/jeps/jep-0023.html + XEP-0023: http://www.xmpp.org/extensions/xep-0023.html @@ -172,4 +172,4 @@ SEND: <message to='sabine@gnu.mine.nu' id='msg811'>
      - + diff --git a/xep-0024.xml b/xep-0024.xml index 75cf8ef1..4f8b61a0 100644 --- a/xep-0024.xml +++ b/xep-0024.xml @@ -1,13 +1,13 @@ - + %ents; ]> - - + +
      Publish/Subscribe - A publish--subscribe protocol for Jabber. + A publish-subscribe protocol for Jabber. This document has been placed in the public domain. 0024 Retracted @@ -1129,4 +1129,4 @@ connect to the real component. - + diff --git a/xep-0025.xml b/xep-0025.xml index 628c3ea0..b9714a2b 100644 --- a/xep-0025.xml +++ b/xep-0025.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
      Jabber HTTP Polling This document defines a protocol that enables access to a Jabber server from behind firewalls which do not allow outgoing sockets on port 5222, via HTTP requests. @@ -60,7 +60,7 @@
      -

      Note Well: This protocol specified in this document has been superseded by the protocol specified in &jep0124;.

      +

      Note Well: This protocol specified in this document has been superseded by the protocol specified in &xep0124;.

      This specification documents a method to allow Jabber clients to access Jabber servers from behind existing firewalls. Although several similar methods @@ -383,4 +383,4 @@ Host: webim.jabber.com

    • This method works over HTTPS, which is good from the standpoint of functionality, but bad in the sense that a massive amount of hardware would be needed to support reasonable polling intervals for non-trivial numbers of clients.
    -
    + diff --git a/xep-0026.xml b/xep-0026.xml index 2c0bebab..4e5fc86e 100644 --- a/xep-0026.xml +++ b/xep-0026.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Internationalization (I18N) NOTE WELL: this JEP was retracted on 2003-11-05 since the topic is addressed definitively in XMPP Core. Please refer to XMPP Core for further information. @@ -65,7 +65,7 @@ Some examples on how this information could and should be used, include

      -
    • Forms (e.g. for registration or searching, refer also to JEP-0004) can be localized, so that instructions and field labels are in the native language of the person who has to fill them out
    • +
    • Forms (e.g. for registration or searching, refer also to &xep0004;) can be localized, so that instructions and field labels are in the native language of the person who has to fill them out
    • Even if the form can't be sent in the proper language (e.g. simply because it hasn't yet been translated), the component still should tag its reply with the language being used
    • Incoming messages in a different language could be automatically translated (server-side or client-side)
    • Redirection of messages based on their language (think of a help desk which services world wide requests)
    • @@ -137,7 +137,7 @@

      - Jabber based services that wish to comply to this JEP have to make sure that all information they send to clients is tagged with an xml:lang attribute corresponding to the language used in the outgoing data, if appropriate, even if the component supports no other localizations. An example for this is a search form based on JEP-0004. + Jabber based services that wish to comply to this JEP have to make sure that all information they send to clients is tagged with an xml:lang attribute corresponding to the language used in the outgoing data, if appropriate, even if the component supports no other localizations. An example for this is a search form based on JEP-0004.

      <iq from='users.jabber.org' type='result' id='4' xml:lang='en'> @@ -206,4 +206,4 @@
      - + diff --git a/xep-0027.xml b/xep-0027.xml index edd3203a..015d2463 100644 --- a/xep-0027.xml +++ b/xep-0027.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
      Current Jabber OpenPGP Usage This document outlines the current usage of OpenPGP for messaging and presence. @@ -38,7 +38,7 @@ 1.1 2004-01-06 psa - Added XML schemas; added security, IANA, and Jabber Registrar considerations. + Added XML schemas; added security, IANA, and XMPP Registrar considerations. 1.0 @@ -60,7 +60,7 @@
      -

      The Jabber community has long acknowledged the need for privacy and security features in a well-rounded instant messaging system. Unfortunately, finding a consensus solution to the problem of end-to-end encryption during the community's younger days was not easy. Eventually, early contributors created a quick solution using OpenPGP. This specification documents the OpenPGP solution as it is used today, so that others may interoperate with clients that support it. This JEP is not intended to present a standard, because more complete solutions are being investigated.

      +

      The Jabber community has long acknowledged the need for privacy and security features in a well-rounded instant messaging system. Unfortunately, finding a consensus solution to the problem of end-to-end encryption during the community's younger days was not easy. Eventually, early contributors created a quick solution using OpenPGP. This specification documents the OpenPGP solution as it is used today, so that others may interoperate with clients that support it. This document is not intended to present a standard, because more complete solutions are being investigated.

      All operations described here are done with standard OpenPGP software such as GnuPG. All program output is US-ASCII armored output with the headers removed. This allows for easy transportation of the program output directly in the XML. All keys are exchanged using OpenPGP key servers, and usually are retrieved when a signed &PRESENCE; stanza is received (key retrieval does not happen in-band).

      @@ -129,10 +129,10 @@
    -

    This JEP requires no interaction with &IANA;.

    +

    This document requires no interaction with &IANA;.

    - -

    The ®ISTRAR; shall register the 'jabber:x:encrypted' and 'jabber:x:signed' namespaces as a result of this JEP.

    + +

    The ®ISTRAR; shall register the 'jabber:x:encrypted' and 'jabber:x:signed' namespaces as a result of this document.

    @@ -148,7 +148,7 @@ The protocol documented by this schema is defined in - JEP-0027: http://www.jabber.org/jeps/jep-0027.html + XEP-0027: http://www.xmpp.org/extenions/xep-0027.html @@ -170,7 +170,7 @@ The protocol documented by this schema is defined in - JEP-0027: http://www.jabber.org/jeps/jep-0027.html + XEP-0027: http://www.xmpp.org/extenions/xep-0027.html @@ -180,4 +180,4 @@ ]]> - + diff --git a/xep-0028.xml b/xep-0028.xml index e301ed59..649ee6fd 100644 --- a/xep-0028.xml +++ b/xep-0028.xml @@ -1,13 +1,13 @@ - + %ents; ]> - - + +
    - No Such JEP - This JEP was removed from the JSF website and source control at the request of the author. + No Such XEP + This XEP was removed from the JSF website and source control at the request of the author. 0028
    -
    + diff --git a/xep-0029.xml b/xep-0029.xml index cac9c8ab..cb45f69f 100644 --- a/xep-0029.xml +++ b/xep-0029.xml @@ -1,10 +1,10 @@ - + %ents; ]> - - + +
    Definition of Jabber Identifiers (JIDs) This document defines the exact nature of a Jabber Identifier (JID). Note well: this document is superseded by the XMPP Core memo defined by the IETF's XMPP Working Group. @@ -114,4 +114,4 @@

    Specifying limits in terms of bytes instead of characters is somewhat arbitrary once a lower bound for characters is established. This JEP proposes limits in terms of bytes mainly because doing so results in parsing efficiency; specifically, an implementation does not have to un-encode the UTF-8 string for the sole purpose of further restricting character sets that require fewer than four bytes per character point. It is sufficient to have a lower bound on characters and an upper bound on bytes.

    - +
    Type