Internet Engineering Task Force IMPP WG Internet Draft Jonathan Rosenberg Dean Willis Robert Sparks Ben Campbell dynamicsoft Henning Schulzrinne Jonathan Lennox Columbia U. Bernard Aboba Christian Huitema David Gurle Microsoft draft-rosenberg-impp-buddylist-00.txt June 15, 2000 Expires: December, 2000 An XML Format for Presence Buddy Lists STATUS OF THIS MEMO This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as work in progress. The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Abstract This document defines an XML format for a buddy list, which represents a list of other users a particular user would like to subscribe to. When a presence client starts up, it needs to initiate subscriptions to the users on the buddy list. By keeping this list in a standard XML format, the list can be stored locally, or retrieved remotely using HTTP or any other transfer protocol. The great advantage of storing it remotely is that a user can move from machine to machine, fetch their buddy list from a home server, and then subscribe to those users. This provides personal mobility for presence services. 1 Introduction Presence is (indirectly) defined in RFC2778 [1] as subscription to Rosenberg et. al. [Page 1] Internet Draft xml buddylist June 15, 2000 and notification of changes in the communications state of a user. This communications state consists of the set of communications means, communications address, and status of that user. A presence protocol is a protocol for providing such a service over the Internet or any IP network. A presence protocol is described in [2]. Presence services begin when a user logs into their machine, and starts up their presence tool (which contains a watcher user agent (WUA), the protocol entity that performs the subscriptions). As subscription state is soft state, the tool must refresh its subscriptions by resubscribing to those users in the "buddy list". The buddy list represents the set of other users that the user has asked to subscribe to. The subscriptions are automatically made, and the subscribing user then receives notifications as their buddies come online or offline, or their communications state otherwise changes. The result of this is a requirement that the buddy list be stored somewhere, and accessible to the WUA when the tool starts. It can be stored locally on disk, in proprietary format. However, this has disadvantages. In particular, it means that if the user goes to a different machine, their buddy list is no longer accessible. It is therefore desirable to allow (but not mandate, of course), such lists to be stored on network servers, so that they can be retrieved. This way, when a user sits down at a new machine, they can start the presence tool, enter in the address where the buddy list can be fetched from, and then obtain presence services at that new machine. With the increasing amount of personal and terminal mobility in Internet access, allowing users to access their presence services from any machine seems highly desirable. As an example application, a presence tool, along with a web browser, could be made available at public access PCs in airports (these are already commonplace). When the presence tool starts, it prompts the user for a URL for their buddy list. The user enters the URL, and the presence tool fetches the list. It then asks the user for a username and password, used possibly for authentications required to subscribe to the buddies listed in the list. The application then subscribes to each of the buddies. The user can then work and have access to presence and IM services. To enable this capability, we define here an XML based format for storing buddy lists. We do not mandate a particular protocol for fetching the buddy lists, although HTTP [3] is the obvious choice. Other possibilities, including SIP registrations, are also possible [4]. 2 Buddy List Format Rosenberg et. al. [Page 2] Internet Draft xml buddylist June 15, 2000 A buddy list is a well-formed XML [5] document. It MUST conform to the DTD given in appendix A, possibly extended by elements from other XML document types properly identified with XML namespace identifiers [6]. Portions of the buddy list DTD are also interspersed throughout this section, in the subsections where each element is explained. 2.1 Buddylist Element The root element of a buddy list MUST be the element "buddylist": The "buddylist" element has no attributes. Its first sub-element is "title", giving the general title of the buddy list; it then contains any number of individual buddies or groups. 2.2 Group Element The "group" element represents groups of buddies and sub-groups: The "group" element has no attributes. Its first element is "title", giving the name of the group of buddies; it then contains any number of buddies or other groups. Note: "buddylist" and "group" are syntactially identical, though their semantics are slightly different. Would it be sensible to unify them? 2.3 Buddy Element The "buddy" element represents a single buddy: Rosenberg et. al. [Page 3] Internet Draft xml buddylist June 15, 2000 The "buddy" element MUST have an attribute "href", giving the URI used to subscribe to the buddy. It MAY have the attribute "date", giving the date when this buddy was added to the buddy list. The date is represented as an integral number of seconds since January 1, 1970, 00:00 UTC. The content of the "buddy" element is parsed character data meant to be displayed as a human readable description of the buddy. This is typically though not necessarily a name. This parsed character data MAY contain plain text. It MAY also contain XML mark-up from an XML document type designed to present human-readable content, such as XHTML [7], MathML [8], SVG [9], VoiceXML [10], SMIL [11], etc., when properly marked with an XML namespace identifier. A program interpreting a buddy list SHOULD interpret XML markup from an unknown or unsupported XML namespace as it would a document of type "text/xml" with an unknown or unsupported document type declaration. Note that some of the items in this list of document formats are deliberately rather over-the-top; it seems improbable that having a SMIL presentation to describe a buddy list entry would actually be useful. XHTML, however, will likely be common. 2.4 Title Element The "title" element represents the title of a buddy list or buddy group: This element contains a human readable description of the buddy list or group. For buddy lists, it will typically, though not necessarily, identify the list's owner; for groups, it will typically give some identifying characteristic of the group. The "title" element contains parsed character data, and MAY contain XML markup from other XML document types, as with the "buddy" element. 3 XML Buddy List Document Identifiers An XML buddy list which appears as a top-level XML document is Rosenberg et. al. [Page 4] Internet Draft xml buddylist June 15, 2000 identified with the formal public identifier "-//IETF//DTD RFCxxxx XBUDDY 1.0//EN". If this document is published as an RFC, "xxxx" will be replaced by the RFC number. XML buddy lists have the MIME type "application/xbuddy+xml". The "+xml" component of the type name conforms with the format of XML MIME types introduced by Murata et al [12]; this allows XML-aware but buddylist-unaware rendering tools to display buddy lists usefully. An XML buddy list embedded as a fragment within another XML document is identified with the XML namespace identifier "http://www.ietf.org/internet-drafts/draft-rosenberg-impp-buddylist- 00.txt". If this document is published as an RFC, the namespace identifier will be "http://www.rfc-editor.org/rfc/rfcxxxx.txt", where xxxx is the RFC number. Note that the URIs specifying XML namespaces are only globally unique names; they do not have to reference any particular actual object. The URI of a canonical source of this specification meets the requirement of being globally unique, and is also useful to document the format. The usefulness of embedding buddy lists as sub-documents of other XML documents isn't entirely clear, but defining it doesn't hurt anything. 4 Example This buddy list conforms strictly to the DTD given in this document: Buddy list for John Doe Friends Jane Doe John Smith Coworkers Eric Rosenberg et. al. [Page 5] Internet Draft xml buddylist June 15, 2000 Summer Boss - Jim This buddy list uses other XML document types, referenced with XML namespaces: <p xmlns="http://www.w3.org/1999/xhtml"> <b><i><font size="+1">Important</font></i></b> People </p> π +1 =0 5 Security Considerations Buddy lists contain potentially sensitive information. Therefore, when stored remotely, the protocol for fetching them should provide authentication capabilities and some form of access controls, if the author of the buddy list so desires. It should also be possible to transfer the buddy list over an encrypted channel. Rosenberg et. al. [Page 6] Internet Draft xml buddylist June 15, 2000 With HTTP, these requirements are readily met by using HTTPS combined with basic authentication. This allows a user to give out passwords for access to the buddy list, and also keep the buddy list encrypted when transferred over the network. With SIP registrations, the buddy list would typically be returned in the response to a registration, if the client indicated support for buddy lists in replies. In this case, registrations SHOULD be authenticated, and either SIP encryption or hop by hop encryption SHOULD be used. A The XML Buddy List DTD B Authors Addresses Jonathan Rosenberg Rosenberg et. al. [Page 7] Internet Draft xml buddylist June 15, 2000 dynamicsoft 200 Executive Drive Suite 120 West Orange, NJ 07052 email: jdrosen@dynamicsoft.com Dean Willis dynamicsoft 200 Executive Drive Suite 120 West Orange, NJ 07052 email: dwillis@dynamicsoft.com Robert Sparks dynamicsoft 200 Executive Drive Suite 120 West Orange, NJ 07052 email: rsparks@dynamicsoft.com Ben Campbell dynamicsoft 200 Executive Drive Suite 120 West Orange, NJ 07052 email: bcampbell@dynamicsoft.com Henning Schulzrinne Columbia University M/S 0401 1214 Amsterdam Ave. New York, NY 10027-7003 email: schulzrinne@cs.columbia.edu Jonathan Lennox Columbia University M/S 0401 1214 Amsterdam Ave. New York, NY 10027-7003 email: lennox@cs.columbia.edu Christian Huitema Microsoft Corporation One Microsoft Way Redmond, WA 98052-6399 email: huitema@microsoft.com Bernard Aboba Rosenberg et. al. [Page 8] Internet Draft xml buddylist June 15, 2000 Microsoft Corporation One Microsoft Way Redmond, WA 98052-6399 email: bernarda@microsoft.com David Gurle Microsoft Corporation One Microsoft Way Redmond, WA 98052-6399 email: dgurle@microsoft.com C Bibliography [1] M. Day, J. Rosenberg, and H. Sugano, "A model for presence and instant messaging," Request for Comments 2778, Internet Engineering Task Force, Feb. 2000. [2] J. Rosenberg, R. Sparks, D. Willis, B. Campbell, H. Schulzrinne, J. Lennox, C. Huitema, B. Aboba, and D. Gurle, "SIP extensions for presence," Internet Draft, Internet Engineering Task Force, June 2000. Work in progress. [3] J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P. Leach, A. Luotonen, and L. Stewart, "HTTP authentication: Basic and digest access authentication," Request for Comments 2617, Internet Engineering Task Force, June 1999. [4] M. Handley, H. Schulzrinne, E. Schooler, and J. Rosenberg, "SIP: session initiation protocol," Request for Comments 2543, Internet Engineering Task Force, Mar. 1999. [5] T. Bray, J. Paoli, and C. M. Sperberg-McQueen, "Extensible markup language (XML) 1.0," W3C Recommendation REC-xml-19980210, World Wide Web Consortium (W3C), Feb. 1998. Available at http://www.w3.org/TR/REC-xml. [6] T. Bray, D. Hollander, and A. Layman, "Namespaces in XML," W3C Recommendation REC-xml-names-19900114, World Wide Web Consortium (W3C), Jan. 1999. Available at http://www.w3.org/TR/REC-xml-names/. [7] W. H. W. Group, "XHTML 1.0: The extensible hypertext markup language," W3C Recommendation REC-xhtml1-20000126, World Wide Web Consortium (W3C), Jan. 2000. Available at http://www.w3.org/TR/xhtml1/. Rosenberg et. al. [Page 9] Internet Draft xml buddylist June 15, 2000 [8] P. Ion and R. Miner, "Mathematical markup language (MathML) 1.01 specification," W3C Recommendation REC-MathML-19990707, World Wide Web Consortium (W3C), July 1999. Available at http://www.w3.org/TR/REC-MathML/. [9] J. Ferraiolo, "Scalable vector graphics (SVG) 1.0 specification," W3C Working Draft WD-SVG-20000303, World Wide Web Consortium (W3C), Mar. 2000. Available at http://www.w3.org/TR/SVG/. [10] VoiceXML Forum, "Voice extensible markup language (VoiceXML) version 1.0," W3C Note NOTE-voicexml-20000505, World Wide Web Consortium (W3C), May 2000. Available at http://www.w3.org/TR/voicexml/. [11] P. Hoschka, "Synchronized multimedia integration language (SMIL) 1.0 specification," W3C Recommendation REC-smil-19980615, World Wide Web Consortium (W3C), June 1998. Available at http://www.w3.org/TR/REC-smil/. [12] M. Murata and S. S. Laurent, "XML media types," Internet Draft, Internet Engineering Task Force, Jan. 2000. Work in progress. Rosenberg et. al. [Page 10]