| 1 |
<?xml version='1.0' ?> |
| 2 |
<?xml-stylesheet type='text/xsl' href='http://xml.resource.org/authoring/rfc2629.xslt' ?> |
| 3 |
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" |
| 4 |
[ |
| 5 |
<!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'> |
| 6 |
<!ENTITY rfc4287 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4287.xml'> |
| 7 |
<!ENTITY rfc4685 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4685.xml'> |
| 8 |
]> |
| 9 |
<rfc category="info" ipr="none" docName="ostatus10.xml"> |
| 10 |
<?rfc toc="yes" ?> |
| 11 |
<?rfc tocdepth="2" ?> |
| 12 |
<?rfc symrefs="yes" ?> |
| 13 |
<?rfc sortrefs="yes"?> |
| 14 |
<?rfc strict="no" ?> |
| 15 |
<?rfc iprnotified="no" ?> |
| 16 |
<?rfc private="Draft" ?> |
| 17 |
<front> |
| 18 |
<title>OStatus 1.0 Draft 2</title> |
| 19 |
<author initials="E." surname="Prodromou" fullname="Evan Prodromou"> |
| 20 |
<organization>StatusNet Inc</organization> |
| 21 |
<address> |
| 22 |
<email>evan@status.net</email> |
| 23 |
<uri>http://evan.status.net/</uri> |
| 24 |
</address> |
| 25 |
</author> |
| 26 |
<author initials="B." surname="Vibber" fullname="Brion Vibber"> |
| 27 |
<organization>StatusNet Inc</organization> |
| 28 |
<address> |
| 29 |
<email>brion@status.net</email> |
| 30 |
</address> |
| 31 |
</author> |
| 32 |
<author initials="J." surname="Walker" fullname="James Walker"> |
| 33 |
<organization>StatusNet Inc</organization> |
| 34 |
<address> |
| 35 |
<email>james@status.net</email> |
| 36 |
</address> |
| 37 |
</author> |
| 38 |
<author initials="Z." surname="Copley" fullname="Zach Copley"> |
| 39 |
<organization>StatusNet Inc</organization> |
| 40 |
<address> |
| 41 |
<email>zach@status.net</email> |
| 42 |
</address> |
| 43 |
</author> |
| 44 |
<date day="30" month="August" year="2010" /> |
| 45 |
<abstract> |
| 46 |
<t> |
| 47 |
OStatus lets people on different social networks follow each |
| 48 |
other. It applies a group of related protocols (PubSubHubbub, |
| 49 |
ActivityStreams, Salmon, Portable Contacts, and Webfinger) to |
| 50 |
this problem in what we believe is a simple and obvious way. |
| 51 |
</t> |
| 52 |
<t> |
| 53 |
OStatus is a minimal specification for distributed |
| 54 |
status updates or microblogging. Many social applications can |
| 55 |
be modelled with status updates, however. Practically any software |
| 56 |
that generates RSS or Atom feeds could be OStatus-enabled. |
| 57 |
Travel networks, event invitation systems, wikis, photo-sharing |
| 58 |
systems, social news sites, social music sites, podcasting |
| 59 |
servers, blogs, version control systems, and general purpose |
| 60 |
social networks would all be candidates for OStatus use. |
| 61 |
</t> |
| 62 |
<t> |
| 63 |
The authors recognize that most of this protocol suite was |
| 64 |
intended to work together in a natural way. They claim no |
| 65 |
originality or creativity in connecting their use. The authors |
| 66 |
hope that the obviousness of some parts of this specification |
| 67 |
are an argument in favor of its use. |
| 68 |
</t> |
| 69 |
</abstract> |
| 70 |
</front> |
| 71 |
<middle> |
| 72 |
<section title="License"> |
| 73 |
<t>As of 30 August 2010, the following persons or entities have |
| 74 |
made this Specification available under the Open Web Foundation |
| 75 |
Agreement Version 0.9, which is available at |
| 76 |
http://openwebfoundation.org/legal/agreement/ |
| 77 |
<list style="symbols"> |
| 78 |
<t>StatusNet Inc.</t> |
| 79 |
</list> |
| 80 |
</t> |
| 81 |
|
| 82 |
<t>You can review the signed copies of the Open Web |
| 83 |
Foundation Agreement Version 0.9 for this Specification at |
| 84 |
http://ostatus.org/owfa/, which may also include additional parties |
| 85 |
to those listed above.</t> |
| 86 |
|
| 87 |
<t>Your use of this Specification may be subject to other third party |
| 88 |
rights. THIS SPECIFICATION IS PROVIDED “AS IS.” The contributors |
| 89 |
expressly disclaim any warranties (express, implied, or otherwise), |
| 90 |
including implied warranties of merchantability, non-infringement, |
| 91 |
fitness for a particular purpose, or title, related to the |
| 92 |
Specification. The entire risk as to implementing or otherwise using |
| 93 |
the Specification is assumed by the Specification implementer and |
| 94 |
user. IN NO EVENT WILL ANY PARTY BE LIABLE TO ANY OTHER PARTY FOR LOST |
| 95 |
PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL |
| 96 |
DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH |
| 97 |
RESPECT TO THIS SPECIFICATION OR ITS GOVERNING AGREEMENT, WHETHER |
| 98 |
BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR |
| 99 |
OTHERWISE, AND WHETHER OR NOT THE OTHER PARTY HAS BEEN ADVISED OF THE |
| 100 |
POSSIBILITY OF SUCH DAMAGE.</t> |
| 101 |
</section> |
| 102 |
<section title="Notation and Conventions"> |
| 103 |
<t> |
| 104 |
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", |
| 105 |
"SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", |
| 106 |
and "OPTIONAL" in this document are to be interpreted as |
| 107 |
described in <xref target="RFC2119"/>. |
| 108 |
</t> |
| 109 |
<t> |
| 110 |
XML namespace prefixes used in this document: |
| 111 |
<list style="hanging"> |
| 112 |
<t hangText="atom:">http://www.w3.org/2005/Atom</t> |
| 113 |
<t hangText="activity:">http://activitystrea.ms/spec/1.0/</t> |
| 114 |
<t hangText="schema:">http://activitystrea.ms/spec/1.0/</t> |
| 115 |
<t hangText="ostatus:">http://ostatus.org/schema/1.0/</t> |
| 116 |
<t hangText="thr:">http://purl.org/syndication/thread/1.0</t> |
| 117 |
</list> |
| 118 |
</t> |
| 119 |
</section> |
| 120 |
<section anchor="definitions" title="Definitions"> |
| 121 |
<t> |
| 122 |
<list style="hanging"> |
| 123 |
<t hangText="User:"> |
| 124 |
A person or organization, or a program that mimics a person |
| 125 |
or organization ("bot"). |
| 126 |
</t> |
| 127 |
<t hangText="Group:"> |
| 128 |
A set of users. |
| 129 |
</t> |
| 130 |
<t hangText="Update:"> |
| 131 |
Notification of a change in a user's status or an action |
| 132 |
taken by a user. Updates can be automatically generated |
| 133 |
by software or composed by the user. |
| 134 |
</t> |
| 135 |
<t hangText="Feed:"> |
| 136 |
A list of related updates. For example, a feed may |
| 137 |
consist of all updates by a user, all updates by |
| 138 |
users that are members of a group, updates that |
| 139 |
match a search query. |
| 140 |
</t> |
| 141 |
<t hangText="Publisher:"> |
| 142 |
A user or group that makes their updates available for others. |
| 143 |
</t> |
| 144 |
<t hangText="Subscriber:"> |
| 145 |
A user who receives updates from one or more publishers. |
| 146 |
Also known as "follower". |
| 147 |
</t> |
| 148 |
<t hangText="Follow:"> |
| 149 |
Receive updates from a publisher. |
| 150 |
</t> |
| 151 |
<t hangText="publisher server:"> |
| 152 |
the Web-accessible server that the publisher uses to |
| 153 |
make updates available. |
| 154 |
</t> |
| 155 |
<t hangText="subscriber server:"> |
| 156 |
the Web-accessible server that the subscriber uses to |
| 157 |
receive updates. |
| 158 |
</t> |
| 159 |
</list> |
| 160 |
</t> |
| 161 |
</section> |
| 162 |
<section title="Requirements"> |
| 163 |
<t>These are the parameters of the problem we wish to solve.</t> |
| 164 |
<t> |
| 165 |
<list style="symbols"> |
| 166 |
<t>An update may be represented with plain text in UTF-8 encoding.</t> |
| 167 |
<t>An update may be represented with HTML.</t> |
| 168 |
<t>An update may include one or more attached files.</t> |
| 169 |
<t>An update may be a response to another update.</t> |
| 170 |
<t>An update can be a forwarded or shared copy of another update. ("repeat", |
| 171 |
"retweet").</t> |
| 172 |
<t>An update can be about a topic.</t> |
| 173 |
<t>An update can be directed to the attention of a particular recipient. |
| 174 |
("mention").</t> |
| 175 |
<t>An update can be related to a location on Earth.</t> |
| 176 |
<t>Anyone can mark an update as a "favorite", or remove that mark.</t> |
| 177 |
<t>Users have a unique identity.</t> |
| 178 |
<t>Users have profile information like name, location, |
| 179 |
nickname or username, bio, related URLs.</t> |
| 180 |
<t>Users can be represented with a image ("avatar").</t> |
| 181 |
<t>Subscriber can receive Publisher's updates very soon after |
| 182 |
publication. ("Real time", "near real time") (Upshot: we want |
| 183 |
push.)</t> |
| 184 |
<t>Publisher server can store a list of all Subscribers for a given |
| 185 |
Publisher, including identities and profile data.</t> |
| 186 |
<t>Subscriber server can store a list of all Publishers for a given |
| 187 |
Subscriber, including identities and profile data.</t> |
| 188 |
<t>Publisher server can store a list of all responses to an update |
| 189 |
by a publisher.</t> |
| 190 |
<t>Publisher server can store a list of all forwarded copies of an update |
| 191 |
by a publisher.</t> |
| 192 |
<t>Publisher server can store a list of all "favorites" of an update by |
| 193 |
a Publisher.</t> |
| 194 |
<t>Servers can determine update context and metadata without |
| 195 |
parsing the plain text according to a particular syntax.</t> |
| 196 |
<t>Subscribers can subscribe to a feed with multiple authors, such |
| 197 |
as a group, a search feed, or a tag feed.</t> |
| 198 |
</list> |
| 199 |
</t> |
| 200 |
</section> |
| 201 |
<section title="Out of scope"> |
| 202 |
<t>The following common elements of microblogging and status update |
| 203 |
systems are out of scope for OStatus.</t> |
| 204 |
<t> |
| 205 |
<list style="hanging"> |
| 206 |
<t hangText="Microblogging syntax:">Microblogging servers use a number of |
| 207 |
different idioms for adding metadata to an update. Notable examples |
| 208 |
are hashtags (#hashtag) and @-replies (@username). We defer to |
| 209 |
microsyntax.org for developing these idioms and encourage innovation. |
| 210 |
Publisher and subscriber servers should be able to process received |
| 211 |
updates without parsing the plain text content.</t> |
| 212 |
<t hangText="Client API">Microblogging systems typically allow many forms of |
| 213 |
communication between the publisher and the publisher server as well |
| 214 |
as the subscriber and the subscriber server. Some examples: Web |
| 215 |
interface, email, IM, SMS, and a Web API. By analogy with email, |
| 216 |
OStatus is to client interfaces as SMTP is to IMAP or POP.</t> |
| 217 |
<t hangText="Private messaging:">OStatus does |
| 218 |
not directly address sending 1-to-1 private messages or private streams.</t> |
| 219 |
<t hangText="Social graph:">OStatus does not specify |
| 220 |
a static representation of the social graph nor a |
| 221 |
protocol for retrieving that representation for a user. |
| 222 |
We defer to FOAF or XFN where this is required.</t> |
| 223 |
</list> |
| 224 |
</t> |
| 225 |
</section> |
| 226 |
<section title="Update representation"> |
| 227 |
<t>Updates are represented as <xref target="activitiesinatom">Activities</xref> |
| 228 |
in <xref target="RFC4287">Atom</xref>. Typical updates would be represented in the <xref |
| 229 |
target="activityschema">default Activity Schema</xref> with activity verb |
| 230 |
"Post" and activity object type "Note", |
| 231 |
"Status" or "Comment". Servers SHOULD |
| 232 |
support these default types, and MAY support others. |
| 233 |
</t> |
| 234 |
<t>A spatial location for the update object should be encoded as <xref |
| 235 |
target="georss">GeoRSS</xref> element as part of the activity.</t> |
| 236 |
<t>Attachments to an update should be represented as |
| 237 |
enclosures.</t> |
| 238 |
<t>If an update represents a notice made in reply to another, |
| 239 |
this should be represented using the in-reply-to element from |
| 240 |
<xref target="RFC4685" />.</t> |
| 241 |
<t>Tag information should be represented as Atom categories.</t> |
| 242 |
<t>OStatus defines two custom extensions to Activity streams. |
| 243 |
<list style="hanging"> |
| 244 |
<t hangText="link[@rel=ostatus:attention]/@href">When an update |
| 245 |
is directed to the attention of someone, or mentions |
| 246 |
someone, this link stores that user's URI.</t> |
| 247 |
<t hangText="link[@rel=ostatus:conversation]/@href"> |
| 248 |
When an update is part of a distributed conversation, this |
| 249 |
is the URI of that conversation. |
| 250 |
</t> |
| 251 |
</list> |
| 252 |
</t> |
| 253 |
</section> |
| 254 |
<section title="User representation"> |
| 255 |
<t>Users are identified by URIs.</t> |
| 256 |
<t>Users are represented as activity objects of the appropriate |
| 257 |
object type. A typical user would have type "Person".</t> |
| 258 |
<t>In the absence of additional information, a default Atom or RSS feed |
| 259 |
without additional Activity data will be represented as with activity |
| 260 |
verb "Post" and activity object type |
| 261 |
"Note", with the Atom author as the implied activity |
| 262 |
actor. In this case, the author element MUST have a unique |
| 263 |
identifier, that is, either the <email> or <uri< |
| 264 |
elements must be present.</t> |
| 265 |
<t>Subscribers MUST search for the URI in the following order: |
| 266 |
the Activity object's <id> element if available, else |
| 267 |
the Atom author's <uri> element if available, else the |
| 268 |
Atom author's <email> element treated as a Webfinger acct: URI. |
| 269 |
Publishers MAY use a profile URL as the URI, but if so |
| 270 |
MUST ensure that they are stable permalinks.</t> |
| 271 |
<t>Users SHOULD have a profile URL, which SHOULD be an HTTP |
| 272 |
or HTTPS reference to an HTML page including discovery |
| 273 |
information for the user's feed. |
| 274 |
The profile URL SHOULD be represented as a |
| 275 |
link[@rel=alternate,@type=text/html] in the Activity subject, |
| 276 |
actor, or object item, otherwise the URI MAY be used if it is |
| 277 |
an HTTP or HTTPS URL.</t> |
| 278 |
<t>To provide additional profile information, the author or |
| 279 |
actor element can be extended with optional <xref |
| 280 |
target="poco">Portable Contacts</xref>-structured data. Some |
| 281 |
elements worth highlighting: |
| 282 |
<list style="hanging"> |
| 283 |
<t hangText="preferredUsername:">A login or username.</t> |
| 284 |
<t hangText="displayName:">Full name. If present, it SHOULD be |
| 285 |
identical to the author/name or actor/title value.</t> |
| 286 |
<t hangText="note:">A free text description of the user.</t> |
| 287 |
<t hangText="address/formatted:">A free text description of |
| 288 |
the user's current location or usual location.</t> |
| 289 |
<t hangText="urls[type=home]/value:">URL of a representative |
| 290 |
page for the user. Note that this is distinct from |
| 291 |
the link[@rel=alternate,@type=text/html] required for |
| 292 |
activity actors.</t> |
| 293 |
</list> |
| 294 |
</t> |
| 295 |
<t>Subscribers MAY use other sources of profile information such |
| 296 |
as microformats on the profile page, but are not required to.</t> |
| 297 |
</section> |
| 298 |
<section title="Feed representation"> |
| 299 |
<t>Feeds are Activity feeds per <xref target="activitiesinatom" />.</t> |
| 300 |
<t>All feeds SHOULD have an activity:subject element. |
| 301 |
User feeds SHOULD have a single activity:subject or atom:author. |
| 302 |
Group feeds SHOULD have a single activity:subject |
| 303 |
representing the group.</t> |
| 304 |
<t>All feeds MUST have a link[@rel=hub] to identify a PubSubHubbub |
| 305 |
endpoint URL to establish update subscriptions.</t> |
| 306 |
<t>All feeds SHOULD have a link[@rel=salmon] to identify the Salmon |
| 307 |
endpoint URL to receive replies and notifications.</t> |
| 308 |
</section> |
| 309 |
<section title="Update publication"> |
| 310 |
<t>The publisher server uses <xref |
| 311 |
target="push">PubSubHubbub</xref> to notify subscribers of new updates.</t> |
| 312 |
<t>If multiple subscribers using the same subscriber server |
| 313 |
subscribe to the same publisher, the subscriber server SHOULD use |
| 314 |
the one PubSubHubbub subscription for all of them.</t> |
| 315 |
</section> |
| 316 |
<section title="User notification"> |
| 317 |
<t>Servers use <xref target="salmon">Salmon</xref> to post |
| 318 |
social events to users or groups. Servers MUST NOT assume that |
| 319 |
updates that were modeled as activities in a PubSubHubbub-enabled |
| 320 |
feed were received by the user.</t> |
| 321 |
<t>Note that sender and receiver of a notification MAY NOT |
| 322 |
have a subscriber-publisher relationship.</t> |
| 323 |
<t>Important social events and related activities: |
| 324 |
<list style="hanging"> |
| 325 |
<t hangText="Attention:">When a user posts an update to the |
| 326 |
attention of another user or a group, their server sends the update |
| 327 |
to the salmon endpoint of that user or group. The update MUST have the |
| 328 |
ostatus:attention link set to the URI of the receiving |
| 329 |
user or group.</t> |
| 330 |
<t hangText="Reply:">When a user posts an update in reply to |
| 331 |
another update, their server SHOULD post it as a Salmon |
| 332 |
entry to the author of the original update. The reply |
| 333 |
MUST have the thr:in-reply-to element set to the URI of |
| 334 |
the original notice. The reply MAY have the |
| 335 |
ostatus:attention link set to the URI of the original |
| 336 |
update's author.</t> |
| 337 |
<t hangText="Subscribe:">When a subscriber starts |
| 338 |
following a user, the subscription server sends a |
| 339 |
schema:follow activity.</t> |
| 340 |
<t hangText="Unsubscribe:">When a subscriber stops following |
| 341 |
a user the subscription server sends an |
| 342 |
ostatus:unfollow activity.</t> |
| 343 |
<t hangText="Join:">When a subscriber starts |
| 344 |
following a group, the subscriber server sends a |
| 345 |
schema:follow activity.</t> |
| 346 |
<t hangText="Leave:">When a subscriber stops following |
| 347 |
a user the subscriber server sends an |
| 348 |
ostatus:leave activity.</t> |
| 349 |
<t hangText="Favorite:">When a user marks another user's |
| 350 |
update as a favorite, their server sends an update with |
| 351 |
verb schema:favorite.</t> |
| 352 |
<t hangText="Unfavorite:">When a user has marked another |
| 353 |
user's update as a favorite, and removes that mark, |
| 354 |
their server sends an update with verb ostatus:unfavorite.</t> |
| 355 |
<t hangText="Repeat:">When a user publishes a copy of an |
| 356 |
update to their own feed, their server sends an update |
| 357 |
with verb schema:share to the original verb.</t> |
| 358 |
</list> |
| 359 |
</t> |
| 360 |
</section> |
| 361 |
<section title="Discovery"> |
| 362 |
<t>Information necessary to establish a subscription or post a |
| 363 |
notification can be determined from the feed for a user or |
| 364 |
group. The profile data, salmon endpoint, and PubSubHubbub hub |
| 365 |
are all encoded in the feed itself.</t> |
| 366 |
<t>There are three ways to discover the location of the feed. |
| 367 |
<list style="numbers"> |
| 368 |
<t>Direct input from the user.</t> |
| 369 |
<t>From |
| 370 |
Link/Rel=http://schemas.google.com/g/2010#updates-from element |
| 371 |
of a related XRD file for the user.</t> |
| 372 |
<t>From a link[@rel=alternate,@type=application/atom+xml] |
| 373 |
element in the HTML of a profile page.</t> |
| 374 |
</list> |
| 375 |
</t> |
| 376 |
<t>There are two ways to get a profile page URL. |
| 377 |
<list style="numbers"> |
| 378 |
<t>Direct input from a user.</t> |
| 379 |
<t>From |
| 380 |
Link/Rel=http://webfinger.net/rel/profile-page |
| 381 |
of a related XRD file for the user.</t> |
| 382 |
</list> |
| 383 |
</t> |
| 384 |
<t>There are two ways to get a related XRD file for a user. |
| 385 |
<list style="numbers"> |
| 386 |
<t>Given an acct: URI like nickname@example.com, use |
| 387 |
<xref target="Webfinger" /> to discover the user's XRD file.</t> |
| 388 |
<t>From a Link: HTTP header for the related profile page, use |
| 389 |
<xref target="LRDD" />.</t> |
| 390 |
</list> |
| 391 |
</t> |
| 392 |
<t>The user's XRD document MAY have an additional link template with Rel |
| 393 |
equal to http://ostatus.org/schema/1.0/subscribe to |
| 394 |
indicate the endpoint to use for initiating a subscription on |
| 395 |
the user's subscription server. The template should take a |
| 396 |
single argument, uri, for the account to subscribe to.</t> |
| 397 |
</section> |
| 398 |
|
| 399 |
<section title="Usage scenarios"> |
| 400 |
|
| 401 |
<t>These are some rough scripts for some important processes in this |
| 402 |
system. They are non-normative.</t> |
| 403 |
|
| 404 |
<section title="Subscription from Subscriber server"> |
| 405 |
|
| 406 |
<t> |
| 407 |
<list style="numbers"> |
| 408 |
<t>Subscriber notifies Subscriber server of a feed to which she |
| 409 |
wants to subscribe (e.g., by providing a HTTP URL, a |
| 410 |
Webfinger account, or choosing from a list of known feeds).</t> |
| 411 |
<t>The subscriber server discovers the URL of the feed.</t> |
| 412 |
<t>If the Subscriber server already has a subscription to this feed, |
| 413 |
it skips to step 6.</t> |
| 414 |
<t>Subscriber server downloads the feed using HTTP.</t> |
| 415 |
<t>Subscriber server checks for a PubSubHubbub URL in the feed document. If |
| 416 |
there's no PubSubHubbub URL, the server MAY end the subscription. Any other |
| 417 |
subscription, e.g. one using polling, is out-of-band for |
| 418 |
OStatus.</t> |
| 419 |
<t>Subscriber server subscribes to the feed using PubSubHubbub subscription |
| 420 |
mechanism.</t> |
| 421 |
<t>Subscriber server checks the feed for a Salmon endpoint. If none |
| 422 |
exists, the process is complete.</t> |
| 423 |
<t>Subscriber server uses Salmon to push a representation of the subscription to the Publisher |
| 424 |
server.</t> |
| 425 |
</list> |
| 426 |
</t> |
| 427 |
|
| 428 |
</section> |
| 429 |
|
| 430 |
<section title="Subscription from Publisher server"> |
| 431 |
<t> |
| 432 |
<list style="numbers"> |
| 433 |
<t>Subscriber provides a WebFinger account to the Publisher server |
| 434 |
(say, in an HTML form).</t> |
| 435 |
<t>Publisher server uses WebFinger to discover the subscription |
| 436 |
URITemplate for this user.</t> |
| 437 |
<t>Publisher server substitutes Publisher's feed URL into |
| 438 |
URITemplate.</t> |
| 439 |
<t>Publisher server redirects user's browser to |
| 440 |
substituted URL.</t> |
| 441 |
<t>Subscription continues from step 1 of previous case.</t> |
| 442 |
</list> |
| 443 |
</t> |
| 444 |
</section> |
| 445 |
|
| 446 |
</section> |
| 447 |
|
| 448 |
</middle> |
| 449 |
|
| 450 |
<back> |
| 451 |
|
| 452 |
<references> |
| 453 |
|
| 454 |
<reference anchor="activitiesinatom"> |
| 455 |
<front> |
| 456 |
<title>Atom Activity Extensions (Draft)</title> |
| 457 |
<author initials="M." fullname="Martin Atkins" surname="Atkins"> |
| 458 |
<organization>Six Apart</organization> |
| 459 |
</author> |
| 460 |
<author initials="D." fullname="David Recordon" surname="Recordon"> |
| 461 |
<organization>Facebook</organization> |
| 462 |
</author> |
| 463 |
<author fullname="Chris Messina" initials="C." surname="Messina"> |
| 464 |
<organization>Citizen Agency</organization> |
| 465 |
</author> |
| 466 |
<author fullname="Monica Keller" initials="M." surname="Keller"> |
| 467 |
<organization>MySpace</organization> |
| 468 |
</author> |
| 469 |
<author fullname="Ari Steinberg" initials="A." surname="Steinberg"> |
| 470 |
<organization>Facebook</organization> |
| 471 |
</author> |
| 472 |
<author fullname="Rob Dolin" initials="R." surname="Dolin"> |
| 473 |
<organization>Microsoft</organization> |
| 474 |
</author> |
| 475 |
<date month="March" day="1" year="2010" /> |
| 476 |
</front> |
| 477 |
<format type="HTML" target="http://martin.atkins.me.uk/specs/activitystreams/atomactivity" /> |
| 478 |
</reference> |
| 479 |
|
| 480 |
<reference anchor="activityschema"> |
| 481 |
<front> |
| 482 |
<title>Atom Activity Base Schema (Draft)</title> |
| 483 |
<author fullname="Martin Atkins" initials="M." surname="Atkins"> |
| 484 |
<organization>Six Apart</organization> |
| 485 |
</author> |
| 486 |
<author fullname="David Recordon" initials="D." surname="Recordon"> |
| 487 |
<organization>Six Apart</organization> |
| 488 |
</author> |
| 489 |
<author fullname="Chris Messina" initials="C." surname="Messina"> |
| 490 |
<organization>Diso Project</organization> |
| 491 |
</author> |
| 492 |
<author fullname="Monica Keller" initials="M." surname="Keller"> |
| 493 |
<organization>MySpace</organization> |
| 494 |
</author> |
| 495 |
<author fullname="Ari Steinberg" initials="A." surname="Steinberg"> |
| 496 |
<organization>Facebook</organization> |
| 497 |
</author> |
| 498 |
<author fullname="Rob Dolin" initials="R." surname="Dolin"> |
| 499 |
<organization>Microsoft</organization> |
| 500 |
</author> |
| 501 |
<date month="March" day="1" year="2010" /> |
| 502 |
</front> |
| 503 |
<format type="HTML" target="http://martin.atkins.me.uk/specs/activitystreams/activityschema" /> |
| 504 |
</reference> |
| 505 |
|
| 506 |
<reference anchor="push"> |
| 507 |
<front> |
| 508 |
<title>PubSubHubbub Core 0.3 -- Working Draft</title> |
| 509 |
<author fullname="Brad Fitzpatrick" initials="B." surname="Fitzpatrick"> |
| 510 |
<organization>Google, Inc</organization> |
| 511 |
<address> |
| 512 |
<email>brad@danga.com</email> |
| 513 |
</address> |
| 514 |
</author> |
| 515 |
<author fullname="Brett Slatkin" initials="B." surname="Slatkin"> |
| 516 |
<organization>Google, Inc</organization> |
| 517 |
<address> |
| 518 |
<email>bslatkin@gmail.com</email> |
| 519 |
</address> |
| 520 |
</author> |
| 521 |
<author fullname="Martin Atkins" |
| 522 |
initials="M." surname="Atkins"> |
| 523 |
<organization>Six Apart Ltd.</organization> |
| 524 |
<address> |
| 525 |
<email>mart@degeneration.co.uk</email> |
| 526 |
</address> |
| 527 |
</author> |
| 528 |
<date day="8" month="February" year="2010" /> |
| 529 |
</front> |
| 530 |
<format type="HTML" target="http://pubsubhubbub.googlecode.com/svn/trunk/pubsubhubbub-core-0.3.html" /> |
| 531 |
</reference> |
| 532 |
|
| 533 |
<reference anchor="salmon"> |
| 534 |
<front> |
| 535 |
<title abbrev="The Salmon Protocol">The Salmon Protocol</title> |
| 536 |
<author fullname="John Panzer" initials="J." surname="Panzer"> |
| 537 |
<organization>Google Inc.</organization> |
| 538 |
<address> |
| 539 |
<email>jpanzer@google.com</email> |
| 540 |
</address> |
| 541 |
</author> |
| 542 |
<date month="February" year="2010"/> |
| 543 |
</front> |
| 544 |
<format type="HTML" target="http://salmon-protocol.googlecode.com/svn/trunk/draft-panzer-salmon-00.html" /> |
| 545 |
</reference> |
| 546 |
|
| 547 |
<reference anchor="poco"> |
| 548 |
<front> |
| 549 |
<title>Portable Contacts 1.0 Draft C</title> |
| 550 |
<author fullname="Joseph Smarr" initials="J." surname="Smarr"> |
| 551 |
<organization>Plaxo</organization> |
| 552 |
<address> |
| 553 |
<email>joseph@plaxo.com</email> |
| 554 |
</address> |
| 555 |
</author> |
| 556 |
<date month="August" day="5" year="2008" /> |
| 557 |
</front> |
| 558 |
<format type="HTML" |
| 559 |
target="http://portablecontacts.net/draft-spec.html" /> |
| 560 |
</reference> |
| 561 |
<reference anchor="LRDD"> |
| 562 |
<front> |
| 563 |
<title>Link-based Resource Descriptor Discovery</title> |
| 564 |
<author fullname="Eran Hammer-Lahav" initials="E." surname="Hammer-Lahav"> |
| 565 |
<organization>Yahoo!</organization> |
| 566 |
</author> |
| 567 |
<date month="March" day="3" year="2010" /> |
| 568 |
</front> |
| 569 |
<format type="TXT" target="http://tools.ietf.org/html/draft-hammer-discovery-03" /> |
| 570 |
</reference> |
| 571 |
<reference anchor="georss"> |
| 572 |
<front> |
| 573 |
<title>GeoRSS-Simple</title> |
| 574 |
</front> |
| 575 |
<format type="HTML" target="http://www.georss.org/simple" /> |
| 576 |
</reference> |
| 577 |
<reference anchor="Webfinger"> |
| 578 |
<front> |
| 579 |
<title>the WebFinger protocol</title> |
| 580 |
</front> |
| 581 |
<format type="HTML" target="http://code.google.com/p/webfinger/wiki/WebFingerProtocol" /> |
| 582 |
</reference> |
| 583 |
&rfc2119; |
| 584 |
&rfc4287; |
| 585 |
&rfc4685; |
| 586 |
</references> |
| 587 |
</back> |
| 588 |
|
| 589 |
</rfc> |