idnits 2.17.1 draft-rosenberg-impp-pidf-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** The document seems to lack a 1id_guidelines paragraph about 6 months document validity -- however, there's a paragraph with a matching beginning. Boilerplate error? == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 1 longer page, the longest (page 1) being 65 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack a Security Considerations section. ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** There is 1 instance of too long lines in the document, the longest one being 10 characters in excess of 72. ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 85: '... MUST define a means for unioning wh...' RFC 2119 keyword, line 87: '... data format MAY define a means for ...' RFC 2119 keyword, line 90: '... Each atom MUST contain a field whic...' RFC 2119 keyword, line 144: '... presence data MAY be ordered based ...' RFC 2119 keyword, line 148: '... Secondly, it is RECOMMENDED that each...' (8 more instances...) Miscellaneous warnings: ---------------------------------------------------------------------------- == The "Author's Address" (or "Authors' Addresses") section title is misspelled. -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (June 15, 2000) is 8713 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Missing reference section? '1' on line 578 looks like a reference -- Missing reference section? '2' on line 582 looks like a reference -- Missing reference section? '3' on line 587 looks like a reference -- Missing reference section? '4' on line 592 looks like a reference -- Missing reference section? '5' on line 596 looks like a reference -- Missing reference section? '6' on line 599 looks like a reference -- Missing reference section? '7' on line 604 looks like a reference -- Missing reference section? '8' on line 609 looks like a reference -- Missing reference section? '9' on line 613 looks like a reference -- Missing reference section? '10' on line 618 looks like a reference -- Missing reference section? '11' on line 623 looks like a reference -- Missing reference section? '12' on line 626 looks like a reference -- Missing reference section? 'RFC 2426' on line 491 looks like a reference -- Missing reference section? '13' on line 630 looks like a reference Summary: 6 errors (**), 0 flaws (~~), 3 warnings (==), 16 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 Internet Engineering Task Force IMPP WG 2 Internet Draft Jonathan Rosenberg 3 Dean Willis 4 Robert Sparks 5 Ben Campbell 6 dynamicsoft 8 Henning Schulzrinne 9 Jonathan Lennox 10 Columbia U. 12 Bernard Aboba 13 Christian Huitema 14 David Gurle 15 Microsoft 16 draft-rosenberg-impp-pidf-00.txt 17 June 15, 2000 18 Expires: December, 2000 20 A Data Format for Presence Using XML 22 STATUS OF THIS MEMO 24 This document is an Internet-Draft and is in full conformance with 25 all provisions of Section 10 of RFC2026. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF), its areas, and its working groups. Note that 29 other groups may also distribute working documents as Internet- 30 Drafts. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet- Drafts as reference 35 material or to cite them other than as work in progress. 37 The list of current Internet-Drafts can be accessed at 38 http://www.ietf.org/ietf/1id-abstracts.txt 40 The list of Internet-Draft Shadow Directories can be accessed at 41 http://www.ietf.org/shadow.html. 43 Abstract 45 This document describes an XML based data format for conveying 46 presence information. The format is one instantiation of an abstract 47 presence data model also described here. 49 1 Introduction 51 Presence is (indirectly) defined in RFC2778 [1] as subscription to 52 and notification of changes in the communications state of a user. 53 This communications state consists of the set of communications 54 means, communications address, and status of that user. A presence 55 document is a computer readable piece of data that contains this 56 presence information. Presence documents are conveyed by a presence 57 protocol [2], but may also be conveyed out of bands. The presence 58 documents are useful and complete in and of themselves, and do not 59 rely on information conveyed by their transfer means in order to be 60 useful. 62 It is fundamental to our notion of presence that a single presentity 63 is represented by a multitude of presence user agents (PUAs), each of 64 which generates presence information for a particular subset of the 65 overall presence state of a presentity. This results in the 66 requirement of a definition of an abstract presence data model, which 67 defines how these presence components are combined to yield a 68 complete presence document. This data model is, in fact, independent 69 of the presence data format itself. However, we describe it here so 70 that the document is complete. 72 This presence data format is based on XML. XML has its strengths and 73 weaknesses, and for this reason, we actually define an additional 74 presence data format which is more suited to smaller footprint 75 endpoints [3]. 77 2 Presence Data Model 79 We define presence as a set of atoms. Each atom defines a component 80 of the presence state of a presentity. The presence state of the 81 presentity is defined by taking the union of the current set of 82 atoms. The process of combining presence information from different 83 sources operates on the granularity of atoms; the content of atoms is 84 not examined when performing such merging. Any presence data format 85 MUST define a means for unioning which can be accomplished through 86 syntactic understanding alone of the presence document. A presence 87 data format MAY define a means for unioning based on semantic 88 understanding. 90 Each atom MUST contain a field which defines the presentity for whom 91 the atom represents. This is in support of Requirement 3.1.2 of 92 RFC2779 [4], which defines requirements for presence and instant 93 messaging. 95 Each atom has an opaque identifier, uniquely identifying it. There is 96 no meaning associated with these identifiers. Two atoms are for the 97 same piece of presence state when they identify the same presentity, 98 and when their atoms match through a byte-wise equality check of 99 their identifiers. 101 Each atom also has an expiration time, indicating the lifetime of the 102 data contained within the atom. 104 A subscriber will receive a set of atoms representing the presence 105 for a user. Computation of the complete presence state of that 106 presentity proceeds as follows: 108 o The subscriber records, for each atom, the most recent 109 instance of that atom. Most recent is *not* defined by 110 expiration time, but rather through sequencing provided by the 111 transfer protocol, or temporal ordering of receipt or fetch, 112 if no such sequencing is provided. 114 o If the most recent atom has an expiration time earlier than 115 the current time, that atom is removed completely from the 116 list of atoms contributing to presence. 118 o The subscriber generates the final piece of presence by taking 119 the set of unexpired atoms for the same presentity, and 120 unioning them as defined by the presence format. 122 This fairly simple model of presence data is very flexible. It 123 supports several different usage scenarios: 125 o Presence data can be generated by a single entity, but be 126 transferred only as updates. Each piece of the presence being 127 updated is a single atom. The presentity need only send an 128 atom when it changes, or send an update before it expires. 130 o Presence data can be generated by a single entity, and the 131 entire presence state is transferred on each notification. 133 o Presence data can be generated by several entities, each 134 updating a set of atoms for the presentity. 136 3 Applying the Model to the Presence Protocol 138 When presence documents corresponding to this model are transferred 139 by the presence protocol [2], two issues need to be considered. 141 First, the presence protocol [2] provides sequencing of 142 notifications, through the CSeq header. When two notifications come 143 from the same source (the To, From, and Call-ID are the same), the 144 presence data MAY be ordered based on the CSeq ordering. If the 145 notifications come from different sources, the temporal order of 146 delivery is used to determine ordering. 148 Secondly, it is RECOMMENDED that each atom correspond to a single 149 Contact address in the registrations. Furthermore, the atom 150 identifier SHOULD be computed as the MD5 hash of the URI of that 151 Contact. This allows both server and PUA to know the identifier, so 152 that they can alternately take over generation of updates for the 153 same atom. 155 4 Components of the Document 157 The presence document format defined here is based on XML, and is 158 similar in concept to the proposed PIDF format by Vermeulen [5]. 159 Usage of XML brings several benefits; as presence data is likely to 160 be rendered, the ability to define XSL and CSS documents for 161 displaying of presence is useful. The ability to digitally sign 162 subcomponents of an XML document is also useful. 164 The presence document always contains the top level element 165 "presence," which indicates that the remainder of the document 166 contains presence information. 168 170 The first sub-element of the presence element is the "presentity" 171 element, which identifies the presentity for whom the presence data 172 is being reported. 174 175 177 The presentity tag has a single mandatory attribute, uri, which gives 178 the address of the presentity. The content of the presentity tag is 179 parsed character data giving a human-readable name. 181 This parsed character data may consist of plain text. It may also 182 contain XML mark-up from an XML document type designed to present 183 human-readable content, such as XHTML [6], MathML [7], SVG [8], 184 VoiceXML [9], SMIL [10], etc., when properly marked with an XML 185 namespace identifier. A program interpreting a buddy list SHOULD 186 interpret and display XML markup from an unknown or unsupported XML 187 namespace as it would a document of type "text/xml" with an unknown 188 or unsupported document type declaration. 190 Note that some of the items in this list of document 191 formats are deliberately rather over-the-top; it seems 192 improbable that having a SMIL presentation to describe a 193 presentity would actually be useful. XHTML, however, will 194 likely be common. 196 Following the presentity tag within the presence tag is a list of 197 atoms. 199 4.1 Atoms 201 Atoms are structured as a collection of addresses. These can either 202 be communications addresses, represented by URLs, or a postal 203 address. 205 206 209 The atom element has the mandatory attribute "id", the unique 210 identifier for the group, and the optional attribute "expires" which 211 indicates the time after which the presence data should be considered 212 invalid. The expiration time is expressed as an integral number of 213 seconds since January 1, 1970, 00:00 UTC. 215 A postal address is indicated by the "postal" element, and consists 216 of freeform text: 218 220 It may contain XML markup from some external namespace, as described 221 previously. 223 It would be nice to require an XML format for postal 224 addresses. Does any exist? vCard XML profile or something? 226 Communications addresses are described by the "address" element. 228 229 232 The "address" element has a single mandatory attribute, uri, which 233 gives the URI of the communications address being described. It also 234 has an optional attribute "priority". The priority tag contains an 235 integer that indicates the relative preference of this address over 236 other addresses. It is a floating-point value between 0 and 1, with 1 237 being the highest preference. 239 Within the address tag, several subtags are defined to specify 240 characteristics of the communications address. These tags have the 241 following meanings: 243 status: Status is an indicator, meant for machine consumption, 244 which indicates the status of this communications address. 245 Valid values are "open", which means communications can be 246 attempted to this address, "closed", which means 247 communications cannot be attempted, and "inuse", which 248 means that communications means is currently being actively 249 used with the entity receiving the presence document. For 250 example, if an instant messaging URL is placed in the uri 251 attribute of the address, and the status is "inuse", this 252 means that the user sending the updated presence document 253 is currently typing an instant message to the recipient of 254 the presence document. 256 This enables a recent feature on MSN, which allows you 257 to see when the person you are IMing is currently 258 typing a reply to your IM. 260 261 263 class: The class tag contains either the value "business" or 264 "personal", indicating whether the address is for business 265 or non-business use. There can only be one class tag per 266 address. 268 269 271 duplex: The duplex tag contains one of the values "full", 272 "half", "send-only" and "receive-only". It indicates 273 whether the address can be used for communications in one 274 direction, the other direction, or both. For example, a 275 page would be considered receive-only. There can only be 276 one duplex tag per address. 278 279 281 feature: The feature tag lists features specific to that 282 communications means. For voice addresses, defined values 283 include "voice-mail" and "attendant". There can be more 284 than one feature tag per address. 286 287 289 mobility: The mobility tag indicates whether the terminal with 290 the given communications address is moving around 291 ("mobile") or fixed ("fixed"). There can only be a single 292 mobility tag per address. 294 295 297 note: Note contains freeform text meant for display to the user, 298 indicating some kind of information about the 299 communications address. There can only be one note tag per 300 address. The note tag may contain XML data from a 301 properly-qualified external XML namespace. 303 305 A PIDF document which appears as a top-level XML document is 306 identified with the formal public identifier "-//IETF//DTD RFCxxxx 307 XPIDF 1.0//EN". If this document is published as an RFC, "xxxx" will 308 be replaced by the RFC number. PIDF documents have the MIME type 309 "application/xpidf+xml". 311 The "+xml" component of the type name conforms with the 312 format of XML MIME types introduced by Murata et al [11]; 313 this allows XML-aware but PIDF-unaware rendering tools to 314 display PIDF usefully. 316 A PIDF document embedded as a fragment within another XML document is 317 identified with the XML namespace identifier 318 "http://www.ietf.org/internet-drafts/draft-rosenberg-impp-pidf- 319 00.txt". If this document is published as an RFC, the namespace 320 identifier will be "http://www.rfc-editor.org/rfc/rfcxxxx.txt", where 321 xxxx is the RFC number. 323 Note that the URIs specifying XML namespaces are only 324 globally unique names; they do not have to reference any 325 particular actual object. The URI of a canonical source of 326 this specification meets the requirement of being globally 327 unique, and is also useful to document the format. 329 5 Constructing the union of two presence documents 331 Construction of the union of two presence documents is 332 straightforward. Two presence documents can be unioned only if they 333 both refer to the same presentity. The atoms from each presence 334 document is extracted. If some number of atoms have the same id, the 335 most recent atom is selected. Most recent is defined either by the 336 transfer protocol, or through temporal ordering. A new presence 337 document is then constructed, using the set of atoms obtained from 338 the presence documents. For example, consider presence document A: 340 341 343 344 345 346
347 348
349
350
351 and presence document B: 353 354 356 357 358 359
360 361
362
363
365 The combined document looks like: 367 368 370 371 372 373
374 375
376
377 378
379 380
381
382
384 6 Example 386 The following is an example presence document: 388 389 391 392 393 394
395 396 397 398 399
400
401 402 Send email if I'm not around 403
404
405
407 7 Mapping from SIP Registrations 409 This section discusses how one would map the contents of a SIP 410 REGISTER message into a presence document. 412 Typically, each Contact header in the registration will be a separate 413 atom. That atom will have a single URL, which is the URL from the 414 Contact header. If the registration is not expired, the status is set 415 to open. Once the registration expires, the address is set to closed, 416 and can be removed completely from the presence document at some 417 point in the future. 419 If the UA sending the registration supports caller preferences [12], 420 and has included them in the contact header, they are mapped one to 421 one into their equivalent XML tags described here. 423 8 DTD 425 The following is the DTD for the presence document. 427 429 431 432 434 435 438 440 441 444 445 447 448 450 451 453 454 456 457 459 461 9 Evaluation against Requirements 463 The following section indicates how this proposal meets the 464 requirements outlined in RFC2779 [4]. 466 Requirement 3.1.2: The common presence format MUST include a 467 means to uniquely identify the PRESENTITY whose PRESENCE 468 INFORMATION is reported. This is supported through the 469 presentity tag. 471 Requirement 3.1.3: The common presence format MUST include a 472 means to encapsulate contact information for the 473 PRESENTITY's PRINCIPAL (if applicable), such as email 474 address, telephone number, postal address, or the like. 475 This is supported through the postal and address tags. 477 Requirement 3.1.4: There MUST be a means of extending the common 478 presence format to represent additional information not 479 included in the common format, without undermining or 480 rendering invalid the fields of the common format This is 481 supported through the definitions of new tags for the XML 482 presence document. 484 Requirement 3.1.5: The working group must define the extension 485 and registration mechanisms for presence information 486 schema, including new STATUS conditions and new forms for 487 OTHER PRESENCE MARKUP. This is readily accomplished, 488 although not specified in this version of the document. 490 Requirement 3.1.6: The presence format SHOULD be based on IETF 491 standards such as vCard [RFC 2426] if possible. The format 492 is based on XML, a standard structured data representation 493 used in many IETF standards, and on URLs, also defined by 494 IETF. 496 Requirement 4.4.1: The common presence format MUST define a 497 minimum standard presence schema suitable for INSTANT 498 MESSAGE SERVICES. This is supported through a URL 499 corresponding to an instant message. This URL, as proposed 500 in [13] is of the form sip:user@host;method=SUBSCRIBE. This 501 URL is then included in an address tag. 503 Requirement 4.4.2: When used in a system supporting INSTANT 504 MESSAGES, the common presence format MUST include a means 505 to represent the STATUS conditions OPEN and CLOSED. These 506 statuses are defined here. 508 Requirement 4.4.3: The STATUS conditions OPEN and CLOSED may 509 also be applied to messaging or communication modes other 510 than INSTANT MESSAGE SERVICES. The presence document here 511 applies statuses to any communications means. IM is not 512 treated differently than any other. 514 10 Authors Addresses 516 Jonathan Rosenberg 517 dynamicsoft 518 200 Executive Drive 519 Suite 120 520 West Orange, NJ 07052 521 email: jdrosen@dynamicsoft.com 523 Dean Willis 524 dynamicsoft 525 200 Executive Drive 526 Suite 120 527 West Orange, NJ 07052 528 email: dwillis@dynamicsoft.com 530 Robert Sparks 531 dynamicsoft 532 200 Executive Drive 533 Suite 120 534 West Orange, NJ 07052 535 email: rsparks@dynamicsoft.com 537 Ben Campbell 538 dynamicsoft 539 200 Executive Drive 540 Suite 120 541 West Orange, NJ 07052 542 email: bcampbell@dynamicsoft.com 544 Henning Schulzrinne 545 Columbia University 546 M/S 0401 547 1214 Amsterdam Ave. 548 New York, NY 10027-7003 549 email: schulzrinne@cs.columbia.edu 551 Jonathan Lennox 552 Columbia University 553 M/S 0401 554 1214 Amsterdam Ave. 555 New York, NY 10027-7003 556 email: lennox@cs.columbia.edu 558 Christian Huitema 559 Microsoft Corporation 560 One Microsoft Way 561 Redmond, WA 98052-6399 562 email: huitema@microsoft.com 564 Bernard Aboba 565 Microsoft Corporation 566 One Microsoft Way 567 Redmond, WA 98052-6399 568 email: bernarda@microsoft.com 570 David Gurle 571 Microsoft Corporation 572 One Microsoft Way 573 Redmond, WA 98052-6399 574 email: dgurle@microsoft.com 576 11 Bibliography 578 [1] M. Day, J. Rosenberg, and H. Sugano, "A model for presence and 579 instant messaging," Request for Comments 2778, Internet Engineering 580 Task Force, Feb. 2000. 582 [2] J. Rosenberg, R. Sparks, D. Willis, B. Campbell, H. Schulzrinne, 583 J. Lennox, C. Huitema, B. Aboba, and D. Gurle, "SIP extensions for 584 presence," Internet Draft, Internet Engineering Task Force, June 585 2000. Work in progress. 587 [3] J. Rosenberg, R. Sparks, D. Willis, B. Campbell, H. Schulzrinne, 588 J. Lennox, C. Huitema, B. Aboba, and D. Gurle, "A lightweight 589 presence information data format (LPIDF)," Internet Draft, Internet 590 Engineering Task Force, June 2000. Work in progress. 592 [4] M. Day, S. Aggarwal, G. Mohr, and J. Vincent, "Instant messaging 593 / presence protocol requirements," Request for Comments 2779, 594 Internet Engineering Task Force, Feb. 2000. 596 [5] C. Vermeulen, "Presence info data format (PIDF)," Internet Draft, 597 Internet Engineering Task Force, Dec. 1999. Work in progress. 599 [6] W. H. W. Group, "XHTML 1.0: The extensible hypertext markup 600 language," W3C Recommendation REC-xhtml1-20000126, World Wide Web 601 Consortium (W3C), Jan. 2000. Available at 602 http://www.w3.org/TR/xhtml1/. 604 [7] P. Ion and R. Miner, "Mathematical markup language (MathML) 1.01 605 specification," W3C Recommendation REC-MathML-19990707, World Wide 606 Web Consortium (W3C), July 1999. Available at 607 http://www.w3.org/TR/REC-MathML/. 609 [8] J. Ferraiolo, "Scalable vector graphics (SVG) 1.0 specification," 610 W3C Working Draft WD-SVG-20000303, World Wide Web Consortium (W3C), 611 Mar. 2000. Available at http://www.w3.org/TR/SVG/. 613 [9] VoiceXML Forum, "Voice extensible markup language (VoiceXML) 614 version 1.0," W3C Note NOTE-voicexml-20000505, World Wide Web 615 Consortium (W3C), May 2000. Available at 616 http://www.w3.org/TR/voicexml/. 618 [10] P. Hoschka, "Synchronized multimedia integration language (SMIL) 619 1.0 specification," W3C Recommendation REC-smil-19980615, World Wide 620 Web Consortium (W3C), June 1998. Available at 621 http://www.w3.org/TR/REC-smil/. 623 [11] M. Murata and S. S. Laurent, "XML media types," Internet Draft, 624 Internet Engineering Task Force, Jan. 2000. Work in progress. 626 [12] H. Schulzrinne and J. Rosenberg, "SIP caller preferences and 627 callee capabilities," Internet Draft, Internet Engineering Task 628 Force, Mar. 2000. Work in progress. 630 [13] J. Rosenberg, R. Sparks, D. Willis, B. Campbell, H. Schulzrinne, 631 J. Lennox, C. Huitema, B. Aboba, and D. Gurle, "SIP extensions for 632 instant messaging," Internet Draft, Internet Engineering Task Force, 633 June 2000. Work in progress.