idnits 2.17.1
draft-saintandre-atompub-notify-07.txt:
Checking boilerplate required by RFC 5378 and the IETF Trust (see
https://trustee.ietf.org/license-info):
----------------------------------------------------------------------------
** It looks like you're using RFC 3978 boilerplate. You should update this
to the boilerplate described in the IETF Trust License Policy document
(see https://trustee.ietf.org/license-info), which is required now.
-- Found old boilerplate from RFC 3978, Section 5.1 on line 18.
-- Found old boilerplate from RFC 3978, Section 5.5, updated by RFC 4748 on
line 667.
-- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 678.
-- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 685.
-- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 691.
Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt:
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/checklist :
----------------------------------------------------------------------------
** 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.)
Miscellaneous warnings:
----------------------------------------------------------------------------
== The copyright year in the IETF Trust Copyright Line does not match the
current year
== The document seems to lack the recommended RFC 2119 boilerplate, even if
it appears to use RFC 2119 keywords.
(The document does seem to have the reference to RFC 2119 which the
ID-Checklist requires).
-- 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 (May 7, 2008) is 5834 days in the past. Is this
intentional?
Checking references for intended status: Informational
----------------------------------------------------------------------------
== Missing Reference: 'Atom API' is mentioned on line 168, but not defined
** Obsolete normative reference: RFC 3920 (ref. 'XMPP-CORE') (Obsoleted by
RFC 6120)
-- Obsolete informational reference (is this intentional?): RFC 2616 (ref.
'HTTP') (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234,
RFC 7235)
-- Obsolete informational reference (is this intentional?): RFC 2821 (ref.
'SMTP') (Obsoleted by RFC 5321)
Summary: 3 errors (**), 0 flaws (~~), 3 warnings (==), 9 comments (--).
Run idnits with the --verbose option for more detailed information about
the items above.
--------------------------------------------------------------------------------
2 Network Working Group P. Saint-Andre
3 Internet-Draft XMPP Standards Foundation
4 Intended status: Informational J. Hildebrand
5 Expires: November 8, 2008 Jabber, Inc.
6 B. Wyman
7 May 7, 2008
9 Atomsub: Transporting Atom Notifications over the Publish-Subscribe
10 Extension to the Extensible Messaging and Presence Protocol (XMPP)
11 draft-saintandre-atompub-notify-07
13 Status of this Memo
15 By submitting this Internet-Draft, each author represents that any
16 applicable patent or other IPR claims of which he or she is aware
17 have been or will be disclosed, and any of which he or she becomes
18 aware will be disclosed, in accordance with Section 6 of BCP 79.
20 Internet-Drafts are working documents of the Internet Engineering
21 Task Force (IETF), its areas, and its working groups. Note that
22 other groups may also distribute working documents as Internet-
23 Drafts.
25 Internet-Drafts are draft documents valid for a maximum of six months
26 and may be updated, replaced, or obsoleted by other documents at any
27 time. It is inappropriate to use Internet-Drafts as reference
28 material or to cite them other than as "work in progress."
30 The list of current Internet-Drafts can be accessed at
31 http://www.ietf.org/ietf/1id-abstracts.txt.
33 The list of Internet-Draft Shadow Directories can be accessed at
34 http://www.ietf.org/shadow.html.
36 This Internet-Draft will expire on November 8, 2008.
38 Abstract
40 This memo describes a method for notifying interested parties about
41 changes in syndicated information encapsulated in the Atom feed
42 format, where such notifications are delivered via an extension to
43 the Extensible Messaging and Presence Protocol (XMPP) for publish-
44 subscribe functionality.
46 Table of Contents
48 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
49 1.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 3
50 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4
51 2. Process Flows . . . . . . . . . . . . . . . . . . . . . . . . 4
52 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 4
53 2.2. Notification of Entry Creation . . . . . . . . . . . . . . 5
54 2.3. Notification of Entry Modification . . . . . . . . . . . . 9
55 2.4. Notification of Entry Deletion . . . . . . . . . . . . . . 12
56 3. Implementation Notes . . . . . . . . . . . . . . . . . . . . . 13
57 3.1. Association Between User and Pubsub Node . . . . . . . . . 13
58 3.2. Generation of ItemIDs . . . . . . . . . . . . . . . . . . 13
59 3.3. Handling of Duplicate Entries . . . . . . . . . . . . . . 13
60 3.4. Notifications Matching Multiple Subscriptions . . . . . . 13
61 4. Security Considerations . . . . . . . . . . . . . . . . . . . 14
62 5. References . . . . . . . . . . . . . . . . . . . . . . . . . . 15
63 5.1. Normative References . . . . . . . . . . . . . . . . . . . 15
64 5.2. Informative References . . . . . . . . . . . . . . . . . . 15
65 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 16
66 Intellectual Property and Copyright Statements . . . . . . . . . . 17
68 1. Introduction
70 1.1. Overview
72 The Atom Publishing Format and Protocol Working Group has developed
73 two technologies relevant to content syndication:
75 1. An XML data format for syndication of information about
76 periodically-updated resources (such as weblog entries and news
77 stories) available on the World Wide Web (see [ATOM-FORMAT]).
78 2. A protocol for publishing, editing, deleting, and otherwise
79 managing such resources (see [ATOM-PROTOCOL]).
81 Content syndication follows a classic "observer" or "publish-
82 subscribe" software design pattern: a person or application publishes
83 information to a "channel", and an event notification (or the data
84 itself) is broadcasted to all those who are interested in knowing
85 when such information is published or modified. On the Internet
86 today, publication of periodically-updated resources is handled by
87 means of standard technologies such as [HTTP], and it is not
88 envisioned that this will change since [ATOM-PROTOCOL] specifies the
89 use of HTTP for publication. However, existing methods for learning
90 that a resource has been updated are currently limited to "polling"
91 for changes via HTTP, which is inherently inefficient. What is
92 needed is a technology that can be relied on to "push" information
93 only when a resource undergoes a state change, and only to those who
94 are interested in learning about such state changes.
96 One possible technology for doing so is email, since [SMTP] provides
97 a way to initiate the sending of information from "publishers" to
98 "subscribers" (think, for example, of email lists such as those used
99 to announce newly-published RFCs). While email is one possible
100 solution, it is not necessarily the best solution for Atom; in
101 particular, [ATOM-FORMAT] defines an XML data format for content
102 syndication, which implies that it might be beneficial to use a
103 native XML delivery mechanism rather than to attach a special XML
104 media type to email messages. Thankfully, a specialized XML delivery
105 protocol has been developed through the IETF: the Extensible
106 Messaging and Presence Protocol (XMPP) as specified in [XMPP-CORE].
107 XMPP has the added benefit of being optimized for near-real-time data
108 delivery, which may be important in applications of Atom that require
109 subscribers to be notified about syndicated content in a highly
110 timely manner.
112 While the semantics of a normal XMPP element may be
113 suitable for Atom content notifications, there also exists an XMPP
114 extension that provides more structured communications in the context
115 of information "channels" or "nodes" of the kind that are used in
116 typical content syndication technologies, where an interested entity
117 can subscribe to that channel or node and thus receive notifications
118 related to the topic of interest. This extension is specified in
119 [XMPP-PUBSUB] and may be especially useful for delivering
120 notifications related to changes in Atom resources. Therefore, this
121 memo describes a method for notifying interested parties about
122 changes in syndicated information encapsulated in the Atom feed
123 format, where such notifications are delivered via the XMPP publish-
124 subscribe extension.
126 1.2. Terminology
128 This document inherits terminology from [ATOM-FORMAT], [XMPP-CORE],
129 and [XMPP-PUBSUB].
131 The capitalized key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
132 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
133 RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
134 interpreted as described in RFC 2119 [TERMS].
136 2. Process Flows
138 2.1. Overview
140 The following process flows demonstrate how Atom-formatted data
141 (specifically, feed entries) can be delivered using the XMPP pubsub
142 extension. The actors in these process flows are an application and
143 one or more XMPP users. The application acts as a translator between
144 HTTP and XMPP, since it generates XMPP pubsub requests when certain
145 events occur at an Atom-aware HTTP service (e.g., an HTTP POST to
146 create a new dynamic resource). The XMPP pubsub service then
147 translates those pubsub requests into notifications that are sent to
148 a potentially large number of XMPP users who have subscribed to such
149 events (e.g., who have asked to receive an XMPP notification whenever
150 a new dynamic resource is created for a certain Atom "channel"). Of
151 course, an XMPP user is not necessarily a human, and could represent
152 another application on the XMPP network (e.g., a chatroom, a bot, or
153 a content management system).
155 Note well that an HTTP user (e.g., a weblog author) would still
156 publish information using the methods defined in [ATOM-PROTOCOL]; the
157 process flows described herein enable the HTTP service with which an
158 HTTP user interacts to generate notifications that are delivered via
159 an XMPP pubsub service to a potentially large number of XMPP users
160 who want to receive such information.
162 We can visualize the architecture as follows:
164 +-----------+
165 | HTTP User |
166 +-----------+
167 |
168 | [Atom API]
169 |
170 +--------------+
171 | HTTP Service |
172 +--------------+
173 |
174 | [XMPP Pubsub]
175 |
176 +---------------------+
177 | XMPP Pubsub Service |
178 +---------------------+
179 |
180 | [XMPP Pubsub]
181 |
182 +--------+-------+
183 | |
184 +-----------+ +-----------+
185 | XMPP User | | XMPP User |
186 +-----------+ +-----------+
188 In the examples shown below, we stipulate the following particulars:
190 o The XMPP address of the HTTP Service is "atompub.example.org".
191 o The XMPP address of the XMPP Pubsub Service is
192 "pubsub.example.com".
193 o The NodeID of the XMPP pubsub node to which the HTTP Service
194 publishes and to which the XMPP Users subscribe is "an-atom-node".
195 o The ItemID of the XMPP pubsub item published by the HTTP Service
196 is "70b2a83be71dfca04df91133d953fb22b41b4267".
197 o The XMPP addresses of the XMPP Users who are subscribed to the
198 node are "alice@example.net" and "bob@example.com".
200 2.2. Notification of Entry Creation
202 An implementation MUST support notifications related to creation of
203 an entry.
205 When a content author publishes a new dynamic resource, many entities
206 may be interested in learning that the resource is now available.
207 The process flow is as follows:
209 o Author publishes a new entry to the HTTP service via the Atom API.
211 o The HTTP service sends data for the new Atom entry in an XMPP
212 pubsub "publish" request to a specific node at the XMPP pubsub
213 service. (Note: If the entry may be copied from one feed to
214 another, e.g., in the generation of "synthetic" feeds, the entry
215 SHOULD contain an atom:source element to ensure consistent
216 metadata.)
217 o The XMPP pubsub service sends an XMPP message notification to each
218 XMPP entity that is subscribed to the pubsub node.
220 The result is that the XMPP subscribers will receive something close
221 to real-time notification whenever a new feed entry has been
222 published.
224 Obviously the first step is out of scope for this memo, since it is
225 described in [ATOM-PROTOCOL]. The XMPP protocols for the last two
226 steps are shown below.
228 First the HTTP service sends an XMPP pubsub "publish" request to the
229 XMPP pubsub service:
231
235
236
237
238
239
251 Atom-Powered Robots Run Amuck
252 Asimov's First Law horribly violated!
253
256 tag:example.org,2003:entry-32397
257 2003-12-13T18:30:02Z
258 2003-12-13T18:30:02Z
259
260
261
262
263
265 The XMPP pubsub service then sends a pubsub notification to each XMPP
266 subscriber; depending on pubsub node configuration, the notification
267 may or may not contain the Atom payload (we assume here that the
268 payload will be included).
270
272
273
274
275
276
288 Atom-Powered Robots Run Amuck
289 Asimov's First Law horribly violated!
290
293 tag:example.org,2003:entry-32397
294 2003-12-13T18:30:02Z
295 2003-12-13T18:30:02Z
296
297
298
299
300
302
304
305
306
307
308
320 Atom-Powered Robots Run Amuck
321 Asimov's First Law horribly violated!
322
325 tag:example.org,2003:entry-32397
326 2003-12-13T18:30:02Z
327 2003-12-13T18:30:02Z
328
329
330
331
332
334 2.3. Notification of Entry Modification
336 An implementation SHOULD support notifications related to
337 modification of an entry.
339 When a content author updates an existing dynamic resource, many
340 entities may be interested in learning that the resource has been
341 modified. The process flow is as follows:
343 o Author updates an existing entry at the HTTP service via the Atom
344 API.
345 o The HTTP service sends data for the updated Atom entry in an XMPP
346 pubsub "publish" request to a specific node at the XMPP pubsub
347 service, specifying the same Item ID as previously supplied.
348 (Note: If the entry may be copied from one feed to another, e.g.,
349 in the generation of "synthetic" feeds, the entry SHOULD contain
350 an atom:source element to ensure consistent metadata.)
351 o The XMPP pubsub service sends an XMPP message notification to each
352 XMPP entity that is subscribed to the pubsub node.
354 First the HTTP service sends an XMPP pubsub "publish" request to the
355 XMPP pubsub service (note the modified title and time):
357
361
362
363
364
365
377 Atom-Powered Robots Run Amok
378 Asimov's First Law horribly violated!
379
382 tag:example.org,2003:entry-32397
383 2003-12-13T18:30:02Z
384 2003-12-13T18:31:03Z
385
386
387
388
389
391 Subject to node configuration and/or subscription options, each XMPP
392 subscriber would then receive a pubsub notification, which may or may
393 not contain the Atom payload.
395
397
398
399
400
401
413 Atom-Powered Robots Run Amok
414 Asimov's First Law horribly violated!
415
418 tag:example.org,2003:entry-32397
419 2003-12-13T18:30:02Z
420 2003-12-13T18:31:03Z
421
422
423
424
425
427
429
430
431
432
433
445 Atom-Powered Robots Run Amok
446 Asimov's First Law horribly violated!
447
450 tag:example.org,2003:entry-32397
451 2003-12-13T18:30:02Z
452 2003-12-13T18:31:03Z
454
455
456
457
458
460 2.4. Notification of Entry Deletion
462 An implementation MAY support notifications related to deletion of an
463 entry.
465 If a content author deletes an existing dynamic resource, many
466 entities may be interested in learning that the resource is no longer
467 available. The process flow is as follows:
469 o Author deletes an existing entry at the HTTP service via the Atom
470 API.
471 o The HTTP service sends an XMPP pubsub "retract" request to a
472 specific node at the XMPP pubsub service, specifying the same Item
473 ID as previously supplied.
474 o The XMPP pubsub service sends an XMPP message notification to each
475 XMPP entity that is subscribed to the pubsub node.
477 First the HTTP service sends an XMPP pubsub "retract" request to the
478 XMPP pubsub service:
480
484
485
486
487
488
489
491 Subject to node configuration and/or subscription options, each XMPP
492 subscriber would then receive a pubsub notification that the item was
493 deleted.
495
497
498
499
500
501
502
504
506
507
508
509
510
511
513 3. Implementation Notes
515 3.1. Association Between User and Pubsub Node
517 As explained in [XMPP-PUBSUB], a notification MAY include an XMPP
518 SHIM Stanza Headers and Internet Metadata [XMPP-SHIM] header named
519 "Reply-To" that specifies the JabberID of the publishing entity.
520 Alternatively, as described in [XMPP-PEP], the XMPP server of the
521 publishing entity MAY enable the publishing entity to associate a
522 virtual pubsub service with the JabberID of its account, obviating
523 the need for a separate pubsub service.
525 3.2. Generation of ItemIDs
527 The pubsub ItemIDs MUST conform to the rules defined in
528 [XMPP-PUBSUB]. One possible method for generating a unique ItemID is
529 to concatenate the XMPP address of the pubsub service, the pubsub
530 node to which the item is published, and the atom:id of the feed
531 entry, then hash the resulting string using the [SHA1] algorithm.
533 3.3. Handling of Duplicate Entries
535 It is the responsibility of the receiving application to remove or
536 ignore duplicate entries that might be received from multiple feeds.
538 3.4. Notifications Matching Multiple Subscriptions
540 An XMPP entity may subscribe to a publish-subscribe node multiple
541 times (e.g., once for each of several keywords), in which case a
542 single notification may match one or more subscriptions. In order to
543 specify which of one or more subscriptions are matched, the
544 notification message SHOULD specify the subscription IDs using the
545 header syntax defined in [XMPP-SHIM] and the "pubsub#subid" header
546 defined in [XMPP-PUBSUB], as shown at the end of the following
547 example.
549
551
552
553
554
555
567 Atom-Powered Robots Run Amok
568 Asimov's First Law horribly violated!
569
572 tag:example.org,2003:entry-32397
573 2003-12-13T18:30:02Z
574 2003-12-13T18:31:03Z
575
576
577
578
579
580 123-abc
581 004-yyy
582
583
585 4. Security Considerations
587 Detailed security considerations for the relevant protocols profiled
588 in this memo are given in [ATOM-FORMAT], [XMPP-CORE], and
590 [XMPP-PUBSUB]; this memo introduces no new security concerns above
591 and beyond those described in the foregoing specifications.
593 5. References
595 5.1. Normative References
597 [ATOM-FORMAT]
598 Nottingham, M. and R. Sayre, "The Atom Syndication
599 Format", RFC 4287, December 2005.
601 [TERMS] Bradner, S., "Key words for use in RFCs to Indicate
602 Requirement Levels", BCP 14, RFC 2119, March 1997.
604 [XMPP-CORE]
605 Saint-Andre, P., "Extensible Messaging and Presence
606 Protocol (XMPP): Core", RFC 3920, October 2004.
608 [XMPP-PUBSUB]
609 Millard, P., Saint-Andre, P., and R. Meijer, "Publish-
610 Subscribe", XSF XEP 0060, March 2008.
612 5.2. Informative References
614 [ATOM-PROTOCOL]
615 Gregorio, J. and B. de hOra, "The Atom Publishing
616 Protocol", RFC 5023, October 2007.
618 [HTTP] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
619 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
620 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
622 [SHA1] Eastlake, D. and P. Jones, "US Secure Hash Algorithm 1
623 (SHA1)", RFC 3174, September 2001.
625 [SMTP] Klensin, J., "Simple Mail Transfer Protocol", RFC 2821,
626 April 2001.
628 [XMPP-PEP]
629 Saint-Andre, P. and K. Smith, "Personal Eventing via
630 Pubsub", XSF XEP 0163, September 2007.
632 [XMPP-SHIM]
633 Saint-Andre, P. and J. Hildebrand, "Stanza Headers and
634 Internet Metadata (SHIM)", XSF XEP 0131, July 2006.
636 Authors' Addresses
638 Peter Saint-Andre
639 XMPP Standards Foundation
641 Email: stpeter@jabber.org
642 URI: https://stpeter.im/
644 Joe Hildebrand
645 Jabber, Inc.
647 Email: jhildebrand@jabber.com
649 Bob Wyman
651 Email: bob@wyman.us
653 Full Copyright Statement
655 Copyright (C) The IETF Trust (2008).
657 This document is subject to the rights, licenses and restrictions
658 contained in BCP 78, and except as set forth therein, the authors
659 retain all their rights.
661 This document and the information contained herein are provided on an
662 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
663 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
664 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
665 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
666 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
667 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
669 Intellectual Property
671 The IETF takes no position regarding the validity or scope of any
672 Intellectual Property Rights or other rights that might be claimed to
673 pertain to the implementation or use of the technology described in
674 this document or the extent to which any license under such rights
675 might or might not be available; nor does it represent that it has
676 made any independent effort to identify any such rights. Information
677 on the procedures with respect to rights in RFC documents can be
678 found in BCP 78 and BCP 79.
680 Copies of IPR disclosures made to the IETF Secretariat and any
681 assurances of licenses to be made available, or the result of an
682 attempt made to obtain a general license or permission for the use of
683 such proprietary rights by implementers or users of this
684 specification can be obtained from the IETF on-line IPR repository at
685 http://www.ietf.org/ipr.
687 The IETF invites any interested party to bring to its attention any
688 copyrights, patents or patent applications, or other proprietary
689 rights that may cover technology that may be required to implement
690 this standard. Please address the information to the IETF at
691 ietf-ipr@ietf.org.