<?xml version="1.0"?>
<?rfc toc="yes"?><?rfc compact="yes"?><?rfc strict="yes"?><?rfc symrefs="yes"?><?rfc sortrefs="yes"?><rfc category="std" ipr="trust200902" docName="draft-cridland-acap-vendor-registry-02" updates="2244">

<front>
  <title abbrev="ACAP Vendor Subtrees Registry">The Internet Assigned Number Authority (IANA) Application Configuration Access Protocol (ACAP) Vendor Subtrees Registry</title>
  <author initials="D.A." surname="Cridland" fullname="Dave Cridland">
<organization>Isode Limited</organization>
<address>
	<postal>
		<street>5 Castle Business Village</street>
		<street>36, Station Road</street>
		<city>Hampton</city>
		<region>Middlesex</region>
		<code>TW12 2BX</code>
		<country>GB</country>
	</postal>
	<email>dave.cridland@isode.com</email>
</address>
</author>
  <date day="22" month="Oct" year="2010"/>
  <area>Applications</area>
  <abstract>
    <t>The original ACAP specification included a vendor registry now used in other protocols.  This document updates the description of this registry, removing the need for a direct normative reference to ACAP, and removing ambiguity.</t>
  </abstract>
</front>
<middle>
<section title="Conventions used in this document">   
   <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target="KEYWORDS"/>.</t>
   <t>Formal Syntax are to be considered normative, and are specified using <xref target="ABNF"/>.  Where a formal syntax and the prose are in conflict, the formal syntax takes precedence.</t>
</section>
<section title="Introduction">
   <t>The <xref target="ACAP"/> specification includes the specification and creation of the ACAP Vendor Registry, and this registry has subsequently been reused by several specifications, including both <xref target="ANNOTATE"/> and <xref target="METADATA"/>, and is proving to be a useful mechanism for namespacing various names to within a specific vendor's scope.</t>
   <t>The use of textual rather than numeric identifiers for vendors benefits engineers and
  operators who are diagnosing protocol problems by allowing them some possibility of
  identifying the origin of a vendor attribute without having to look it up in a registry
  (although that remains a necessary fallback). As such engineers and operators already
  have to be familiar with international technical English to diagnose textual protocol
  problems, the restriction to ASCII may help and is not believed to harm that intended
  use. Exposure of vendor attributes directly in end-user user interfaces was not an
  intended use of the registry.</t>
   <t>This document merely updates the registry to reduce ambiguity in the original specification, and dissociates it from the original document in all but name, allowing easier referencing.  It replaces section 7.4 and portions of section 4, particularly 4.3, of <xref target="ACAP"/>.</t>
</section>
<section title="The Vendor Subtree Registry">
  <t>A Vendor Token is a UTF-8 string beginning with "vendor.", and followed by the name of the company or product. This name MUST NOT contain any slash character, period, or the percent and asterisk characters typically used as wildcards.</t>
  <t>Following this may be names, separated from the Vendor Token by a period, which need not be registered, thus forming a complete Vendor Name.</t>
  <section title="Internationalization">
    <t>Vendor Tokens are able to contain any valid Unicode codepoint, encoded as <xref target="UTF-8"/>, except the special characters.  Since the publication of <xref target="ACAP"/>, however, concerns have been raised on the handling and comparison of full Unicode strings, and therefore this specification restricts the current registrations to the ASCII subset of UTF-8.</t>
   <t>Furthermore, characters such as ASCII control characters, most whitespace, and quotes are likely to be confusing and have been similarly restricted.</t>
   <t>Therefore, this document allows only ASCII letters, digits, the hyphen, and space to be used (the &lt;iana-vendor-tag&gt; ABNF production in Section 3.2).</t>
   <t>At the time of publication of this document, no existing registrations violate the new restricted syntax on characters allowed in registrations. <xref target="ACAP"/> required all Vendor Tokens to be registered with IANA, so the new restriction is not believed to introduce any interoperability issue.</t>
   <t>Finally, note that this document does not change the requirement on processors to accept other non-ASCII Unicode codepoints in Vendor Tokens (the &lt;possible-vendor-tag&gt; ABNF production in Section 3.2).</t>
  </section>
  <section title="Formal Syntax">
  <figure>
    <preamble>This syntax draws upon productions found within <xref target="ABNF"/> and <xref target="UTF-8"/>. Productions replace those in section 4.3 of <xref target="ACAP"/>.</preamble>
    <artwork type="abnf">
vendor-name         = vendor-token *("." name-component)

name-component      = *(name-char / UTF8-2 / UTF8-3 / UTF8-4)

name-char           = %x01-24 / %x26-29 / %x2B-2D / %x30-7F
                  ;; ASCII-range characters not including ".",
                  ;; "/", "%", or "*".

vendor-token        = "vendor." vendor-tag
                  ;; MUST be registered with IANA

vendor-tag          = iana-vendor-tag / possible-vendor-tag

iana-vendor-tag     = 1*(ALPHA / DIGIT / SP / "-")
                  ;; This production represents
                  ;; allowed forms for registrations
                  ;; under the rules specified in this
                  ;; document.

possible-vendor-tag = name-component
                  ;; This production represents what
                  ;; applications and specifications
                  ;; MUST be able to accept.
    </artwork>
  </figure>
  </section>
  <section title="Examples">
   <t>A company Example Ltd might register the Subtree "vendor.example". This means it may use "vendor.example", or any name at all beginning "vendor.example.", such as "vendor.example.product".</t>
   <t>These names might be used in several protocols, and are reserved in all the relevant protocols, so "vendor.example" might be an ACAP dataset class name, and "/vendor/vendor.example" might be a tree of IMAP ANNOTATE entries.</t>
   <t>Example Ltd is free to use either "vendor.example", and group specific products under it using the relevant protocol's hierarchy - perhaps "/shared/vendor/vendor.example/product", or using more specific names, such as "/shared/vendor/vendor.example.product".</t>
   <t>Note that the solidus ("/") characters in the examples above are protocol delimiters which are themselves not part of the vendor token itself.</t>
  </section>
  <section title="Changes from RFC 2244">
   <t>This non-normative section details changes from RFC 2244's original specification of the registry.
      <list style="symbols">
	<t>Vendor tokens are restricted to ASCII for registration purposes.</t>
	<t>Clarifications that "vendor.&lt;company/product name&gt;" means "vendor.company name" or "vendor.product name" - "vendor.company/product" is and always has been illegal.</t>
	<t>Made "vendor.company" a name in its own right - RFC 2244 only refers to a prefix of "vendor.company.".</t>
	<t>Added example registration, in line with <xref target="EXAMPLES"/>.</t>
      </list>
      </t>
  </section>
</section>
<section title="IANA Considerations">
   <t>This specification updates the IANA registry named the ACAP Vendor Subtrees Registry. IANA is requested to update the registry to point at this document.</t>
   <t>Vendors may reserve a portion of the ACAP namespace, which is also used as the namespace for several other protocols, for private use. Vendor Names are reserved for use by that company or product, wherever used, once registered.  Registration is on a first come, first served basis.  Whenever possible, private attributes and classes should be eschewed in favour of improving interoperable protocols.</t>
   <t>Vendors may only use names conforming to iana-vendor-tag at the current time, future revisions of this specification may change this.</t>

   <figure>
     <artwork>
To: iana@iana.org
Subject: Registration of ACAP vendor subtree

Private Prefix: vendor.name

Person and email address to contact for further information:

(company names and addresses should be included where appropriate)
</artwork>
</figure>

<section title="Example Registration">
  <t>IANA is requested to add the following registration, for use by specification authors in examples, similarly to the domains specified in <xref target="EXAMPLES"/>:</t>
  <figure>
    <artwork>
To: iana@iana.org
Subject: Registration of ACAP vendor subtree

Private Prefix: vendor.example

Person and email address to contact for further information:

Dave Cridland &lt;dave.cridland@isode.com&gt;
</artwork>
</figure>
</section>
</section>
<section title="Security Considerations">
   <t>There are no known security issues with this registry.  Individual protocols using vendor subtree names may have security issues, and the introduction of Unicode has in itself security implications - the restriction of this is thought to mitigate these.</t>
</section>
<section title="Acknowledgements">
   <t>Thanks must go to Chris Newman, John Myers, and the other designers of ACAP for the initial creation of the registry.  Thanks also to Alexey Melnikov for advice on this revision.</t>
</section>

</middle>
<back>
<references title="Normative References">
<reference anchor="ABNF">

<front>
<title>Augmented BNF for Syntax Specifications: ABNF</title>
<author initials="D." surname="Crocker" fullname="D. Crocker">
<organization/></author>
<author initials="P." surname="Overell" fullname="P. Overell">
<organization/></author>
<date year="2008" month="January"/>
<abstract>
<t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF.  It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS TRACK]</t></abstract></front>

<seriesInfo name="STD" value="68"/>
<seriesInfo name="RFC" value="5234"/>
<format type="TXT" octets="26359" target="http://www.rfc-editor.org/rfc/rfc5234.txt"/>
</reference>
<reference anchor="ACAP">

<front>
<title abbrev="ACAP">ACAP -- Application Configuration Access Protocol</title>
<author initials="C." surname="Newman" fullname="Chris Newman">
<organization>Innosoft International, Inc.</organization>
<address>
<postal>
<street>1050 Lakes Drive</street>
<city>West Covina</city>
<region>CA</region>
<code>91790</code>
<country>US</country></postal>
<email>chris.newman@innosoft.com</email></address></author>
<author initials="J.G." surname="Myers" fullname="John Gardiner Myers">
<organization>Netscape Communications</organization>
<address>
<postal>
<street>501 East Middlefield Road</street>
<street>Mail Stop MV-029</street>
<city>Mountain View</city>
<region>CA</region>
<code>94043</code>
<country>US</country></postal>
<email>jgmyers@netscape.com</email></address></author>
<date year="1997" month="November"/>
<abstract>
<t>The Application Configuration Access Protocol (ACAP) is designed to support remote storage and access of program option, configuration and preference information.  The data store model is designed to allow a client relatively simple access to interesting data, to allow new information to be easily added without server re-configuration, and to promote the use of both standardized data and custom or proprietary data.  Key features include "inheritance" which can be used to manage default values for configuration settings and access control lists which allow interesting personal information to be shared and group information to be restricted.</t></abstract></front>

<seriesInfo name="RFC" value="2244"/>
<format type="TXT" octets="154610" target="http://www.rfc-editor.org/rfc/rfc2244.txt"/>
</reference>
<reference anchor="KEYWORDS">

<front>
<title abbrev="RFC Key Words">Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials="S." surname="Bradner" fullname="Scott Bradner">
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date year="1997" month="March"/>
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   In many standards track documents several words are used to signify
   the requirements in the specification.  These words are often
   capitalized.  This document defines these words as they should be
   interpreted in IETF documents.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and
      "OPTIONAL" in this document are to be interpreted as described in
      RFC 2119.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>

<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
<format type="TXT" octets="4723" target="http://www.rfc-editor.org/rfc/rfc2119.txt"/>
<format type="HTML" octets="17491" target="http://xml.resource.org/public/rfc/html/rfc2119.html"/>
<format type="XML" octets="5777" target="http://xml.resource.org/public/rfc/xml/rfc2119.xml"/>
</reference>
<reference anchor="UTF-8">

<front>
<title>UTF-8, a transformation format of ISO 10646</title>
<author initials="F." surname="Yergeau" fullname="F. Yergeau">
<organization/></author>
<date year="2003" month="November"/>
<abstract>
<t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems.  The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo.  UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values.  This memo obsoletes and replaces RFC 2279.</t></abstract></front>

<seriesInfo name="STD" value="63"/>
<seriesInfo name="RFC" value="3629"/>
<format type="TXT" octets="33856" target="http://www.rfc-editor.org/rfc/rfc3629.txt"/>
</reference>
</references>
<references title="Informative References">
<reference anchor="ANNOTATE">

<front>
<title>Internet Message Access Protocol - ANNOTATE Extension</title>
<author initials="C." surname="Daboo" fullname="C. Daboo">
<organization/></author>
<author initials="R." surname="Gellens" fullname="R. Gellens">
<organization/></author>
<date year="2008" month="June"/>
<abstract>
<t>The ANNOTATE extension to the Internet Message Access Protocol permits clients and servers to maintain "meta data" for messages, or individual message parts, stored in a mailbox on the server. For example, this can be used to attach comments and other useful information to a message. It is also possible to attach annotations to specific parts of a message, so that, for example, they could be marked as seen, or important, or a comment added.&lt;/t&gt;&lt;t&gt; Note that this document was the product of a WG that had good consensus on how to approach the problem. Nevertheless, the WG felt it did not have enough information on implementation and deployment hurdles to meet all of the requirements of a Proposed Standard. The IETF solicits implementations and implementation reports in order to make further progress.&lt;/t&gt;&lt;t&gt; Implementers should be aware that this specification may change in an incompatible manner when going to Proposed Standard status. However, any incompatible changes will result in a new capability name being used to prevent problems with any deployments of the experimental extension. This memo defines an Experimental Protocol for the Internet community.</t></abstract></front>

<seriesInfo name="RFC" value="5257"/>
<format type="TXT" octets="58786" target="http://www.rfc-editor.org/rfc/rfc5257.txt"/>
</reference>
<reference anchor="EXAMPLES">

<front>
<title>Reserved Top Level DNS Names</title>
<author initials="D.E." surname="Eastlake" fullname="Donald E. Eastlake 3rd">
<organization>IBM</organization>
<address>
<postal>
<street>65 Shindegan Hill Road</street>
<street>RR #1</street>
<city>Carmel</city>
<region>NY</region>
<code>10512</code>
<country>US</country></postal>
<phone>+1 914 276 1668</phone>
<facsimile>+1 914 784 3833</facsimile>
<email>dee3@us.ibm.com</email></address></author>
<author initials="A." surname="Panitz" fullname="Aliza R. Panitz">
<organization/>
<address>
<postal>
<street>500 Stamford Dr. No. 310</street>
<city>Newark</city>
<region>DE</region>
<code>19711</code>
<country>US</country></postal>
<phone>+1 302 738 1554</phone>
<email>buglady@fuschia.net</email></address></author>
<date year="1999" month="June"/>
<abstract>
<t>To reduce the likelihood of conflict and confusion, a few top level domain names are reserved for use in private testing, as examples in documentation, and the like.  In addition, a few second level domain names reserved for use as examples are documented.</t></abstract></front>

<seriesInfo name="BCP" value="32"/>
<seriesInfo name="RFC" value="2606"/>
<format type="TXT" octets="8008" target="http://www.rfc-editor.org/rfc/rfc2606.txt"/>
</reference>
<reference anchor="METADATA">

<front>
<title>The IMAP METADATA Extension</title>
<author initials="C." surname="Daboo" fullname="C. Daboo">
<organization/></author>
<date year="2009" month="February"/>
<abstract>
<t>The METADATA extension to the Internet Message Access Protocol permits clients and servers to maintain "annotations" or "metadata" on IMAP servers.  It is possible to have annotations on a per-mailbox basis or on the server as a whole.  For example, this would allow comments about the purpose of a particular mailbox to be "attached" to that mailbox, or a "message of the day" containing server status information to be made available to anyone logging in to the server. [STANDARDS TRACK]</t></abstract></front>

<seriesInfo name="RFC" value="5464"/>
<format type="TXT" octets="39425" target="http://www.rfc-editor.org/rfc/rfc5464.txt"/>
</reference>
</references>
</back>
</rfc>
