This document describes work processes followed by the XMPP Extensions Editor.
NOTICE: This Procedural document proposes that the process or activity defined herein shall be followed by the XMPP Standards Foundation (XSF). However, this process or activity has not yet been approved by the XMPP Council and/or the XSF Board of Directors and is therefore not currently in force.
Series: XEP
Number: README
Publisher: XMPP Standards Foundation
Status:
Experimental
Type:
Procedural
Version: 0.7
Last Updated: 2008-07-16
Approving Body: XMPP Council
Dependencies: XEP-0001, XEP-0053
Supersedes: None
Superseded By: None
Short Name: N/A
Wiki Page: <http://wiki.jabber.org/index.php/XEP Editor README (XEP-README)>
JabberID:
stpeter@jabber.org
URI:
https://stpeter.im/
The preferred venue for discussion of this document is the Standards discussion list: <http://mail.jabber.org/mailman/listinfo/standards>.
Errata may be sent to <editor@xmpp.org>.
1. Overview
2. XEP Editor Processes
2.1. Accepting a XEP
2.2. Updating a XEP
2.3. Deferring a XEP
2.4. Retracting a XEP
2.5. Issuing a Last Call
2.6. Counting Council Votes
2.7. Advancing a XEP
3. XMPP Registrar Processes
3.1. Advancing a XEP
3.2. Creating a New Registry
4. Tools
4.1. XML Processing
4.2. XSL Transformations
4.3. Entity References
4.4. Python Scripts
4.5. Shell Scripts
Notes
Revision History
Since the inception of the XMPP Standards Foundation (XSF) [1], the XMPP Extensions Editor [2] has been Peter Saint-Andre. However, if he gets hit by a bus or is replaced by someone else, this document may prove useful.
The XMPP Extensions Editor (or, for short, XEP Editor) manages the XMPP extensions process as defined in XMPP Extension Protocols [3]. In addition, the XEP Editor functions as the XMPP Registrar as defined in XMPP Registrar Function [4]. Read those documents first, since this README focuses on mechanics instead of philosophy.
There are several XEP-related functions performed by the XEP Editor:
These functions are specified below.
Periodically, people send email to editor@xmpp.org with new proposals. Here is how to process such submissions.
If accepted, do the following:
Once a XEP has been published, it will be periodically updated in SVN, and sometimes those changes are significant enough to warrant a new version (e.g., version 0.2 after 0.1). Often a request to release a new version will come from the document author, sometimes from the Council (e.g., after the XEP has reached version 1.0 or version 2.0). Here is how to update a XEP.
The status of a XEP shall be automatically changed to Deferred if a new version has not been released in 12 months, except if the XEP is actively in the Council queue for consideration of issuance of a Last Call. Here is the process.
Sometimes an author retracts a XEP because it is no longer worthy of consideration. Here is the process.
The XMPP Council determines whether and when to issue a Last Call on an Experimental XEP. Here is the process.
The XEP Editor is responsible for counting the votes of Council members. The process is as follows.
When the Council approves a XEP, it advances to either Draft (Standards Track XEPs) or Active (other XEP types). Here is the process.
Registry files are contained in the 'registry' directory. In general, there are several files that may need to be updated when a XEP advances to Active or Draft. In particular, most XEPs specify one or more protocol namespaces, which need to be added to the namespaces.xml file in the 'registry' directory. Refer to the list of registries at http://www.xmpp.org/registrar/ in order to determine which other registries may need to be updated. The reg.ent file will probably need to be updated as well. Once the Registrar actions have been completed, update the text of the XEP's XMPP Registrar Considerations section accordingly (e.g., to change "shall include" to "includes").
A XEP may call for one or more new registries to be created. If so, carefully review the XMPP Registrar Considerations section of the XEP before it advances to Draft or Active in order to provide appropriate feedback to the XEP author. (Alternatively, make the changes directly in the XEP file in consultation with the author.)
When creating a new registry, it is best to copy the DTD, XML, and XSL files for an existing registry, then modify them in accordance with the definition of the new registry in the relevant XEP. The gen.sh script will need to be updated to reflect the existence of the new registry, as will the index file for the http://www.xmpp.org/registrar/ web page.
Check all your changes into SVN, update the editor's SVN directory on the webserver, run the gen.sh script to update the XMPP Registrar web pages, and run the announce.py script to send an announcement to the Standards list.
In order to convert XML files into HTML and other formats, the XEP Editor currently uses the xsltproc tool, which is part of libxml2 (created by Daniel Veillard). This tool is extremely handy and it is recommended that use of xsltproc be continued, especially since the shell scripts (described below) make calls to xsltproc.
Most of the "magic" behind creating the HTML-formatted XEPs, as well as the IETF-style reference files, is perfomed by XSLT stylesheets. The main file here is xep.xsl, although ref.xsl is used to create the reference files. A future version of this README may explain these files in more depth.
The xep.ent file contains handy references that can be incorporated into any XEP XML document, thus providing a centralized location for various document references. The XEP Editor must keep this file up to date (e.g., by adding all new XEPs to it), and should be the only person who makes changes to the file.
Several Python scripts are under source control. These are:
announce.py
This script announces a new version of a XEP by updating the database and sending a message to standards@xmpp.org.
deferrred.py
This script updates the database and sends a message to standards@xmpp.org when the status of a XEP is changed to Deferred. Before running this script, make sure that you modify the <status/> element in the XEP itself and run the gen.sh shell script.
lastcall.py
This script announces a Last Call for a XEP by updating the database and sending a message to standards@xmpp.org.
protoxep.py
This script announces availability of a new "proto-XEP" (i.e., a document not yet accepted as a XEP by the XMPP Council) by sending a message to standards@xmpp.org. Before running this script, place the new proto-XEP so that it is available at http://www.xmpp.org/extensions/inbox/ (normally this is done by running 'xsltproc inbox/docname.xml > /var/www/xmpp.org/extensions/inbox/docname.html' from the editor's working SVN directory on the webserver).
Several shell scripts are under source control. These are:
all.sh
This script converts all XEP XML files into HTML. Use this if the xep.xsl file changes in ways that affect all XEPs. But make sure that SVN is synced up first -- you don't want to be publishing interim versions of XEPs!
archive.sh
This script archives the version of a XEP currently on the website. Run this script before publishing a new version!
gen.sh
This script converts one XEP XML file into HTML. Run this script before announcing a new version. This script can also be used for minor edits to the current version.
schemagen.sh
This script updates all of the XML schemas located at <http://www.xmpp.org/schemas/>. Update this file every time a protocol XEP with an associated schema advances to Active or Draft.
1. The XMPP Standards Foundation (XSF) is an independent, non-profit membership organization that develops open extensions to the IETF's Extensible Messaging and Presence Protocol (XMPP). For further information, see <http://www.xmpp.org/xsf/>.
2. The XMPP Extensions Editor is the individual appointed by the XSF Board of Directors to handle protocol submissions and provide day-to-day management of the XSF's standards process. For further information, see <http://www.xmpp.org/extensions/editor.shtml>.
3. XEP-0001: XMPP Extension Protocols <http://www.xmpp.org/extensions/xep-0001.html>.
4. XEP-0053: XMPP Registrar Function <http://www.xmpp.org/extensions/xep-0053.html>.
Updated to reflect use of SVN.
(psa)Updated to reflect new scripts and use of mailserver.
(psa)Adjusted to reflect ProtoXEP status.
(psa)Converted to XEP format; adjusted to reflect server move.
(psa)Clarified schema handling.
(psa)Defined XMPP Registrar processes.
(psa)Initial version.
(psa)END