<?xml version="1.0"?>
<!DOCTYPE presentation [
  <!ENTITY mdash "&#x2014;">
]>
<presentation xmlns:xinclude="http://www.w3.org/2001/XInclude">

  <title>Syndication: RSS, ATOM, APP, and All That</title>
  <date>Tuesday, October 17, 2006</date>
  <host>XML Developers Network of the Capital District</host>
  <copyright>2005, 2006 Elliotte Rusty Harold</copyright>
  <description>A slide from Elliotte Rusty Harold's Web Syndication for Developers presentation at 
  <host_ref/>, <date_ref/></description>
  <last_modified>October 17, 2006</last_modified>
  <author_name>Elliotte Rusty Harold</author_name>
  <author_url>http://www.elharo.com/</author_url>
  <author_email>elharo@metalab.unc.edu</author_email>
   <abstract>
    Elliotte Rusty Harold's Web Syndication for Developers presentation at <host_ref/>, <date_ref/>
  </abstract>
  <description>A slide from Elliotte Rusty Harold's Web Syndication for Developers presentation
  for <host_ref/>, <date_ref/></description>

<slide>
  <h1 align="center">Syndication: RSS, ATOM, APP, and All That</h1>
   <h2 align="center">Elliotte Rusty Harold</h2>
  <h2 align="center"><img src="images/poly_logo.gif" alt="" width="201" height="76" hspace="5" vspace="5" border="0" /></h2>
   <h3 align="center"><date_ref/></h3>
  <h3 align="center">elharo@metalab.unc.edu</h3>
  <h3 align="center">http://www.cafeconleche.org/</h3>

  <description>A slide from Elliotte Rusty Harold's 
    Web Syndication for Developers presentation at <host_ref/> <date_ref/>
  </description>
  <last_modified>June 5, 2006</last_modified>
</slide>

<slide print="false">
  <title>Please turn off all</title>
   <img src="images/nocellphones.jpg" width="145" 
 height="144" align="right"/> 

 <ul>
   <li>Cell Phones</li>
   <li>Pagers</li>
   <li>Alarm Watches</li>
   <li>etc.</li>
   <li>and set your notebook's volume to zero</li>
 </ul>
 <br clear="all"/>
  <description>
    A slide from Elliotte Rusty Harold's Web Syndication for Developers presentation
at <host_ref/>, <date_ref/>
  </description>
  <last_modified>September 28, 2001</last_modified>
</slide>

<slide>
  <title>News Readers</title>


<img src="images/rssowl.png" alt="" width="480" hspace="5" vspace="5" border="0" align="right" />
<ul>
    <li>Who's using a Weblog client now?</li>

    <li>Anyone publishing their own blog?</li>

   <li>Demo Vienna</li>

    <li>This is not Usenet</li>

    <li>Is this the Web?</li>

    <li>It is HTTP; and it is XML</li>

</ul>
<br clear="all"/>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>June 5, 2006</last_modified>
</slide>


<slide>
  <title>Weblogs</title>

<img src="images/viennapic.png" alt="Vienna Feed Reader" width="480" height="326" hspace="5" vspace="5" border="0" align="right" />
<ul>
  <li><a href="http://www.tbray.org/ongoing/">Ongoing</a></li>

  <li><a href="http://www.dailykos.com/">Daily Kos</a></li>

  <li><a href="http://www.elharo.com/blog/">Mokka mit Schlag</a></li>

  <li><a href="http://citybirder.blogspot.com/">City Birder</a></li>

  <li><a href="http://scobleizer.wordpress.com/">Scobleizer</a></li>
  <li><a href="http://imagineerebirth.blogspot.com/">Re-imagineering</a></li>
</ul>
 <br clear="all"/>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>June 5, 2006</last_modified>
</slide>



<slide>
  <title>RSS Example</title>

From http://www.elharo.com/blog/feed/rss?

<pre><code><xinclude:include href="examples/mokka.rss" parse="text"/></code></pre>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>

<slide>
  <title>How HTTP Fits Into All This</title>
<div align="center"><img src="images/thenextgeneration.gif" alt="NASA GOES public domain image" width="563" height="488" hspace="5" vspace="5" border="0" /></div>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 23, 2006</last_modified>
</slide>


break into separate slides with picture on each one????
<slide>
  <title>The Read-Write Web</title>

<ul>
  <li>At some point qualitative becomes quantitative</li>

  <li>Technically, blogging is no different than publishing a web page</li>

  <li>A phase shift?</li>

  <li>Comments?</li>

  <li>Openness wins. The fewer hoops one has to jump through the more successful something is.</li>

  <li>The web finally becomes as much fun as e-mail and Usenet</li>

  <li>Search and archiving take it to the next level.</li>
</ul>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 11, 2006</last_modified>
</slide>






add links and picture of one of these????

<slide>
  <title>Not Just for Weblogs</title>
<img src="images/weatherrss.png" alt="" width="472" height="308" hspace="5" vspace="5" border="0" align="right" />
<ul>
  <li>Issue trackers</li>

  <li><a href="http://www.nytimes.com/services/xml/rss/userland/Business.xml">Newspapers</a></li>

  <li><a href="http://www.rssweather.com/wx/us/ny/new%20york/avnmos.php">Weather Info</a> </li>

  <li>CVS Commits</li>

  <li><a href="http://biz.yahoo.com/rss.html">Stock Tickers</a></li>

  <li><a href="http://ktyp.com/rss/tv/">TV Schedules</a></li>

  <li><a href="http://groups.google.com/group/comp.infosystems.www.authoring.stylesheets/feeds">Usenet</a></li>

  <li>Bird reports</li>

  <li>Sports Scores</li>

  <li><a href="http://www.simpletracking.com/">Package Tracking</a></li>

  <li><a href="http://www.bensbargains.net/">Coupons and sales</a></li>

  <li><a href="http://www.wordsmith.org/">Word a day</a></li>

  <li>Mailing lists</li>

  <li><a href="http://www.basement.org/archives/2006/01/taking_rss_beyond_headlines_pa.html">What else</a>?</li>
</ul>
<br clear="all"/>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>February 28, 2006</last_modified>
</slide>


<slide>
  <title>The best tools solve many more problems than their inventors intended</title>

<img src="images/ducttape.jpg" alt="" width="208" height="208" hspace="5" vspace="5" border="0" align="right" />
<ul>
  <li>Duct tape</li>

  <li>Calculus</li>

  <li>Computers</li>

  <li>The Internet</li>

  <li>XML</li>

  <li>Atom</li>
</ul>
<br clear="all"/>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>February 28, 2006</last_modified>
</slide>


<slide>
  <title>A Quote From XML-coinventor Tim Bray</title>

<img src="images/bray.jpg" alt="" width="166" height="215" hspace="5" vspace="5" border="0" align="right" />

<blockquote cite="http:/www.tbray.org/ongoing/When/200x/2006/01/08/No-New-XML-Languages"><div>
Suppose you think of your data as a list of, well, anything: stock prices or workflow steps or cake ingredients or sports statistics. Atom might be for you. Suppose the things in the list ought to have human-readable labels and have to carry a timestamp and might be re-aggregated into other lists. Atom is almost certainly what you need. And for a data format that didn’t exist a year ago, there’s a whole great big butt-load of software that understands it.
</div></blockquote>

<p>--Tim Bray, <br class="empty"/>
Read the rest in <a href="http:/www.tbray.org/ongoing/When/200x/2006/01/08/No-New-XML-Languages">Don’t Invent XML Languages</a></p>
<br clear="all"/>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>February 28, 2006</last_modified>
</slide>


<slide>
  <title>Becomes part of Process</title>

<ul>
  <li>Easy to cut apart and combine automatically</li>
  <li>Easy to sort </li>
  <li>Useful metadata</li>
  <li>Show <a href="examples/today.rss">headline feed</a> on <a href="http://www.cafeaulait.org/">Cafe au Lait</a></li>
  <li>Consider the quote of the day</li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>October 17, 2006</last_modified>
</slide>



<slide>
  <title>RSS Documents</title>
<img src="images/rss.gif" alt="" width="180" height="70" hspace="5" vspace="5" border="0" align="right" />
<ul>
  <li>The root <code>channel</code> has
  
  <ul>
  <li><code>title</code></li>
  <li>  <code>link</code> </li>
  <li>  <code>description</code></li>
  <li>  <code>language</code></li>
  <li>  <code>image</code></li>
</ul>
  
  </li>
  <li>Plus <code>item</code>s</li>
</ul>


<a href="specs/rss091.html">Read the Spec</a>

<note>There's a cached copy in examples directory if there's no Internet access</note>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 23. 2006</last_modified>
</slide>


<slide>
  <title>RSS Items</title>

<ul>
  <li>Each <code>item</code> has
  
  <ul>
  <li><code>title</code></li>
  <li>  <code>link</code> </li>
  <li>  <code>description</code></li>
</ul>
  
  </li>
</ul>


<a href="specs/rss091.html">Read the Spec</a>

<note>There's a cached copy in examples directory if there's no Internet access</note>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 24. 2006</last_modified>
</slide>




<slide>
  <title>RSS 0.91 Problems</title>

<ul>
  <li>Length limits</li>

  <li>No embedded markup</li>

  <li>No namespace</li>
  <li>No DTD/schema</li>
  <li>IDs don't have to be unique</li>
</ul>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>



<slide>
  <title>RSS Versions</title>

<ul>
  <li>0.90: Designed by Netscape, based on RDF</li>
  <li><a href="http://backend.userland.com/rss091">0.91</a>: no longer RDF compatible</li>
  <li><a href="http://backend.userland.com/rss092">0.92</a>: removes length limits</li>
  <li>0.93 abandoned</li>
  <li>1.0: RDF based; Winer-less</li>
  <li>2.0</li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>



<slide>
  <title>RSS 0.92</title>

<ul>
  <li>Removes length limits</li>

  <li>Makes <code>language</code> and children of <code>item</code> optional </li>

  <li>Adds <code>source</code>, <code>enclosure</code>, <code>category</code>, and <code>cloud</code> elements</li>

    <li>Explicitly allows escaped HTML in description element but doesn't identify it</li>

  <li><a href="http://backend.userland.com/rss092">Spec</a></li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>


use different example????
<slide>
  <title>RSS 0.92 Example </title>

<ul>
  <li>From The Cafes</li>
</ul>

<pre><code><pre><code><xinclude:include href="examples/thecafes.rss" parse="text"/></code></pre>
</code></pre>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>



replace with one that shows GUID????
<slide>
  <title>RSS 2.0 Example </title>

<ul>
  <li>From <a href="http://tbray.org/ongoing/ongoing.rss">http://tbray.org/ongoing/ongoing.rss</a></li>

  <li>What's different?</li>
</ul>

<pre><code><xinclude:include href="examples/ongoing.rss" parse="text"/></code></pre>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>


<slide>
  <title>RSS 2.0 </title>

<ul>
  <li>Adds <code>guid</code> element to uniquely identify items</li>

  <li>Adds <code>ttl</code> element to <code>channel</code> to indicate maximum number of minutes a channel can be cached without being reloaded</li>


  <li>Adds <code>generator</code> element to <code>channel</code> to indicate product that created the channel; e.g. WordPress</li>

  <li>Adds  <code>lastBuildDate</code> element to <code>channel</code> to indicate when channel was last updated</li>

  <li>Allows elements from other namespaces</li>

  <li><a href="http://blogs.law.harvard.edu/tech/rss">Spec</a></li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>


<slide>
  <title>RSS 1.0 </title>

Based on RDF


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>



<slide>
  <title>RDF</title>

<ul>
  <li>Resource Description Framework</li>

  <li>Based on Triples of form subject-predicate-object</li>

  <li>Subject has Property with Value</li>

  <li>Subjects, properties/predicates, and sometimes values are identified with URIs</li>

  <li>Allows for limited automated reasoning</li>

  <li>Tries to do to AI what the Web Did to Hypertext</li>

  <li>Underpinning of Semantic Web</li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 10, 2006</last_modified>
</slide>


add element info and show rdf mapping; see xian????
<slide>
  <title>Dublin Core</title>
<img src="images/dublincore.png" alt="" width="429" height="141" hspace="5" vspace="5" border="0" align="right" />
<ul>
  <li>Metadata</li>

  <li><a href="cache/Dublin%20Core%20Metadata%20Element%20Set,%20Version%201.1_%20Reference%20Description.html">http://dublincore.org/documents/dces/</a></li>


<li>Elements:

<ul>
	<li> Title</li>
	<li> Creator</li>
	<li> Subject</li>
	<li> Description</li>
	<li> Publisher</li>
	<li> Contributor</li>
	<li> Date</li>
	<li> Type</li>
	<li> Format</li>
	<li> Identifier</li>
	<li> Source</li>
	<li> Language</li>
	<li> Relation</li>
	<li> Coverage</li>
	<li> Rights</li>
</ul>




</li>
</ul>
<br clear="all"/>
  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>June 5, 2006</last_modified>
</slide>




<slide>
  <title>RSS 1.0 Example</title>


From Qube Qorner

<pre><code><xinclude:include href="examples/qube.rdf" parse="text"/></code></pre>

Also see <a href="http://cardboard.nu/feeds/index.rdf">http://cardboard.nu/feeds/index.rdf</a>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>



<slide>
  <title>RSS Autodiscovery</title>

<ul>
  <li>Put this in the <code>head</code>:
  
  <p><code>&lt;link rel="alternate" type="application/rss+xml" title="Cafe con Leche 
  News" href="today.rss" /></code></p></li>

  <li>You can also use regular links</li>

  <li>Support varies from browser to browser</li>
</ul>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>



add slides on yahoo media extensions????

<slide>
<img src="images/ipod.jpg" alt="" width="400" height="537" hspace="5" vspace="5" border="0" align="right" />
  <title>Podcasting</title>
<ul>
  <li>Add an <code>enclosure</code> element to the RSS feed pointing to the MP3:
  
  <pre><code><![CDATA[<enclosure type="audio/mpeg" 
  url="http://comp.uark.edu/~strauss/mathfactor/podcast/02%20The%20Way%20Out%20of%20the%20Forest.m4a" 
  length="4093888" />]]></code></pre></li>

  <li>There are also some optional <a href="http://phobos.apple.com/static/iTunesRSS.html">iTunes extensions</a> for Podcasts and <a href="http://search.yahoo.com/mrss">Yahoo Media RSS extensions</a></li>

  <li><a href="examples/MathFactor.xml">Example podcast RSS file</a></li>
</ul>

<br clear="all"/>
  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>February 28, 2006</last_modified>
</slide>

<slide>

  <title>iTunes Extensions</title>

<pre><code><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd" version="2.0">
  <channel>
    <title>Cafes Audio</title>
    <itunes:author>Elliotte Rusty Harold</itunes:author>
    <link>http://www.elharo.com/podcasts/</link>
    <description>Java, XML, and Related Subjects</description>
    <itunes:subtitle>Ranting and Raving</itunes:subtitle>
    <itunes:summary>Conference sessions and University classes on the subject of Java and XML</itunes:summary>
    <language>en</language>
    <copyright>Elliotte Rusty Harold</copyright>
    <itunes:owner>
      <itunes:name>Elliotte Rusty Harold</itunes:name>
      <itunes:email>elharo@metalab.unc.edu</itunes:email>
    </itunes:owner>
    <itunes:image href="http://www.elharo.com/images/headshot.jpg" />
    <image>
      <url>http://www.elharo.com/images/headshot.jpg</url>
      <title>Cafes Audio</title>
      <link>http://www.elharo.com/podcasts/</link>
    </image>
    <category>Computers</category>
    <itunes:category text="Information Technology" />
    <itunes:keywords>Java, XML, Birds</itunes:keywords>
    <itunes:explicit>no</itunes:explicit>
    <item>
      <title>RSS, ATOM, APP, and All That</title>
      <itunes:author>Elliotte Rusty Harold</itunes:author>
      <description>Which way leads out of the forest of Liars &amp; Truth-tellers</description>
      <itunes:subtitle>Which way leads out of the forest of Liars &amp; Truth-tellers</itunes:subtitle>
      <itunes:summary>XML based syndication is moving from its foundations in weblogs to unexpected arenas: source code control systems, audio narrowcasts, e-mail, bug tracking, stock tickers, and more. News readers like Vienna, NetNewsWire, RSSOwl, and Newsgator are replacing classic web browsers for many uses. This session explores the fundamental technologies underlying this explosion of content: the various versions of RSS, OPML, Atom, and the Atom Publishing Protocol. Learn the tricks and techniques for integrating these XML applications into your products as both clients and serve</itunes:summary>
      <enclosure type="audio/mpeg" 
         url="http://www.nyphp.org/podcasts/RSS%20Atom%20APP%20and%20all%20that.mp3" 
         length="14013332" />
      <guid>http://www.nyphp.org/podcasts/RSS%20Atom%20APP%20and%20all%20that.mp3</guid>
      <pubDate>Tue, 28 Feb 2006 18:30:40 -0500</pubDate>
      <category>Information Technology</category>
      <itunes:explicit>no</itunes:explicit>
      <itunes:duration>01:34:32</itunes:duration>
      <itunes:keywords>RSS, Atom, APP, OPML, XML</itunes:keywords>
    </item>

  </channel>
</rss>]]></code></pre>

<br clear="all"/>
  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>February 28, 2006</last_modified>
</slide>

<slide>
  <title>Atom </title>
<img src="images/atom-logo75px.gif" alt="" width="75" height="75" hspace="5" vspace="5" border="0" align="right" />
<ul>
  <li>RSS was hacked together in the early days of XML by novices</li>

  <li>Limited experience with how or where it would be used; some obvious needs and use cases were missed</li>

  <li>Atom is a second generation spec designed to do things properly</li>

  <li>Atom is replacing RSS fairly rapidly </li>
  <li>RSS is a frozen spec</li>
</ul>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>February 28, 2006</last_modified>
</slide>




<slide>
  <title>Atom Improvements</title>


<ul>
  <li>Categorized content</li>

  <li>Less flat, more nested</li>

  <li>Uses namespaces</li>

  <li>Well-formedness required</li>

  <li>Titles are required for entries</li>

  <li><code>mode</code> attribute specifies whether payload of a text construct 
  is escaped HTML, plain text, or real well-formed HTML, URL to content, some other XML format, or Base-64 encoded binary data</li>

  <li>Supports XML Encryption and XML Digital Signature on individual entries</li>

  <li>Item-level authors instead of one-per-feed</li>

  <li>RELAX NG schema</li>
  <li><code>xml:lang</code> and <code>xml:base</code></li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>June 6, 2006</last_modified>
</slide>



<slide>
  <title>Atom 0.3</title>

<ul>
  <li>First broadly adopted version of Atom</li>

  <li> Atom 0.3 Example: <a href="examples/citibirderatom03.xml">http://citybirder.blogspot.com/atom.xml</a></li>

<li>You may have to consume this, but don't produce it.</li>

</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>June 6, 2006</last_modified>
</slide>



<slide>
  <title>Atom 1.0</title>

<ul>
  <li>Namespace changes from <code>http://purl.org/atom/ns#</code> to <code>http://www.w3.org/2005/Atom</code></li>

  <li><code>version</code> attribute dropped</li>

  <li><code>id</code> required on <code>feed</code> and <code>entry</code></li>

  <li>Multiple <code>author</code> elements allowed</li>

  <li><code>copyright</code> has become <code>rights</code> and is allowed on individual <code>entry</code> elements</li>

  <li>No <code>info</code> or <code>created</code> elements</li>

  <li><code>category</code> element <em>can</em> replace Dublin Core</li>

  <li><code>url</code> has changed to <code>uri</code></li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>




<slide>
  <title>Atom 1.0 Sample</title>

From http://tbray.org/ongoing/ongoing.atom

<pre><code><xinclude:include href="examples/ongoing.atom" parse="text"/></code></pre>



  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>


add picture of traditonal MIME like marceau
<slide>
  <title>MIME types</title>

<ul>
  <li>text/xml vs. application/xml</li>

  <li>application/rss+xml</li>

  <li>application/atom+xml</li>

  <li>.htaccess
  <pre><code>AddType application/rss+xml rss
AddType application/atom+xml .atom
AddDefaultCharset utf-8</code></pre>
  
  </li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>

<slide>
  <title>Feed validator</title>

<ul>
  <li><q source="http://www.tbray.org/ongoing/When/200x/2004/01/11/PostelPilgrim">Anyone who can’t make a syndication feed that’s well-formed XML is an incompetent fool.</q> - Tim Bray</li>

  <li>Check feeds for spec compliance</li>

  <li><a href="http://feedvalidator.org/check?url=http://www.mozillazine.org/atom.xml">http://feedvalidator.org/check?url=http://www.mozillazine.org/atom.xml</a></li>
</ul>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>



<slide>
  <title>Atom Autodiscovery</title>

<ul>
  <li>Put this in the <code>head</code>:
  
  <p><code>&lt;link rel="alternate" type="application/atom+xml" title="Cafe con Leche 
  News" href="fulltext.atom" /></code></p></li>

  <li>You can also use regular links</li>

  <li>Support varies from browser to browser</li>
</ul>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>





<slide>
  <title>OPML</title>

<ul>
  <li>Outline Processor Markup Language </li>

  <li>Used to export/import Weblog feeds</li>

  <li><a href="examples/subscriptions_list.opml">Example</a></li>

  <li><a href="http://www.opml.org/spec">No good spec</a> and that's a problem</li>
</ul>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>




<slide>
  <title>RSS/ATOM is essentially a Reader's API</title>

<ul>
  <li>Based on REST</li>

  <li>Pure GET</li>

  <li>What about writing?</li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>





<slide>
  <title>Publishing APIs</title>

<ul>
  <li><a href="http://www.blogger.com/developers/api/1_docs/">Blogger</a> </li>

  <li><a href="http://www.xmlrpc.com/metaWeblogApi">Metaweblog</a></li>

  <li>Movable Type</li>

  <li>WordPress</li>

  <li>APP</li>
</ul>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 11, 2005</last_modified>
</slide>


<slide>
  <title>XML-RPC: the Dark Side of the Web</title>
<img src="images/vader.jpg" alt="" width="556" height="383" hspace="5" vspace="5" border="0" align="right" />
<ul>
  <li>Insecure </li>

  <li>Weak; no nested markup</li>

  <li>Underspecified</li>

  <li>Remember CORBA? RPC? IIOP? <!-- RPC hasn't worked for 30 years and it isn't going to start working now. Sprinkling XML pixie dust ion a bad idea doesn;t make it a good one. --></li>

  <li><a href="cache/Fallacies.html" target="new">The Eight Fallacies of Distributed Computing</a> by Peter Deutsch</li>

</ul>

<br clear="all"/>
  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 11, 2005</last_modified>
</slide>





replace with charm picture????
<slide>
  <title>Take a REST. It Doesn't have to be that bad.</title>

<!-- <img src="http://joi.typepad.com/photos/menorca2002/photo_25_of_31_1.jpg" alt="" hspace="5" vspace="5" border="0" align="right" /> -->
<div>
<img src="images/sleepingcat.jpg" alt="" width="500" height="496" hspace="5" vspace="5" border="0" />
</div>
  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 11, 2005</last_modified>
</slide>



<slide>
  <title>Atom Publishing Protocol (APP)</title>

According to the <a href="http://ietfreport.isoc.org/idref/draft-ietf-atompub-protocol/">spec</a>,

 <blockquote>
 <p>
 The Atom Publishing Protocol is an application-level protocol for
   publishing and editing Web resources using HTTP [RFC2616] and XML 1.0
   [W3C.REC-xml-20040204].  The protocol supports the creation of
   arbitrary web resources and provides facilities for:
</p>

<ul>
  <li>   Collections: Sets of resources, which may be retrieved in whole or in part.</li>

  <li>  Introspection: Discovering and describing collections.</li>

  <li> Editing: Creating, updating and deleting resources.</li>
</ul>
</blockquote>



  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>




<slide>
  <title>Atom Publishing Protocol</title>

<ul>
  <li>Read the  entries that exist</li>

  <li>Create new entries</li>

  <li>Update entries</li>

  <li>Comment on entries</li>

  <li>Delete entries</li>
</ul>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>


<slide>
  <title>Atom Publishing Protocol</title>

<ul>
  <li>It is a protocol. It is <em>decoupled</em> from implementation details. </li>

  <li>Used remotely by many different clients and types of clients:
<ul>
  <li>Custom GUI programs</li>
   
  <li>Web-based applications:
  
  <ul>
  <li>HTML forms</li>
  <li>XForms</li>
  <li>AJAX</li>
</ul>
  
  </li>
  
  <li>Programs without human authors: stock tickers, weather info, lab monitors, etc.</li>
  
  <li>Existing applications like OpenOffice</li>
  </ul>
  </li>
  <li>On many different platforms:
  
<ul>
  <li>Mac</li>
  <li>Windows</li>
  <li>Linux</li>
  <li>Palm Pilot</li>
  <li>Cell Phones</li>
  <li>Cash Registers</li>
</ul>

  
  </li>
  <li>With authentication</li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 23, 2006</last_modified>
</slide>



<slide>
  <title>Exchange</title>

<ul>
  <li>XML Documents</li>

  <li>Over HTTP</li>

  <li>Using the REST architectural style</li>

</ul>


  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>June 6, 2006</last_modified>
</slide>

<slide>
  <title>HTTP/REST</title>
<ul>
    <li>All resources are identified by an IRI</li>
  <li>GET retrieves a representation of a resource (side effect free)</li>

  <li>POST creates a new  resource for which the server returns  a URI</li>

  <li>PUT creates/replaces resource at a specified URI (idempotent)</li>

  <li>DELETE removes a resource</li>
  <li>Authentication may be required for any or all of these operations</li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 10, 2006</last_modified>
</slide>


need a better example????
<slide>
  <title>Introspection Documents</title>
<ul>
<li>GET this from a known URL to enumerate the workspace on  a server</li>
<li>A workspace is a  server-defined group of collections</li>
<li>
Example from the spec:

<pre><code><pre><code><xinclude:include href="examples/introspection.xml" parse="text"/></code></pre></code></pre>

<blockquote>
 <p>
  This Introspection Document describes two workspaces.  The first,
   called 'Main Site', has two collections called 'My Blog Entries' and
   'Pictures' whose IRIs are 'http://example.org/reilly/main' and
   'http://example.org/reilly/pic' respectively.  'My Blog Entries' is
   an Entry collection and 'Pictures' is a Media collection....
</p>

<p>
   The second workspace is called 'Side Bar Blog' and has a single
   collection called 'Remaindered Links' whose collection IRI is
   'http://example.org/reilly/list'.  'Remaindered Links' is an Entry
   collection.
</p>
</blockquote></li>


<li>application/atomserv+xml media type</li>
</ul>
  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>


add better example???? get introspection document
<slide>
  <title>GETting a document</title>


<pre><code><xinclude:include href="examples/get.txt" parse="text"/></code></pre>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 9, 2006</last_modified>
</slide>



add example????
<slide>
  <title>POSTing a new entry</title>

<pre><code><xinclude:include href="examples/post.txt" parse="text"/></code></pre>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>June 6, 2006</last_modified>
</slide>


<!--
add better example????
<slide>
  <title>POSTing a comment on an entry</title>

<pre><code><xinclude:include href="examples/post_comment.txt" parse="text"/></code></pre>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>

-->


<slide>
  <title>PUTting a new page at a specified URL</title>


<pre><code><xinclude:include href="examples/put.txt" parse="text"/></code></pre>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>June 6, 2006</last_modified>
</slide>


<slide>
  <title>PUTting an update to an entry</title>


<pre><code><xinclude:include href="examples/putupdate.txt" parse="text"/></code></pre>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>June 6, 2006</last_modified>
</slide>



add better example????
<slide>
  <title>DELETEing an entry</title>

<pre><code><xinclude:include href="examples/delete.txt" parse="text"/></code></pre>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>December 1, 2005</last_modified>
</slide>



<slide>
  <title>Net thanks</title>

<ul>
	<li>Thomas Boyer and Tim Bray for looking over and gently correcting these notes</li>
</ul>

  <description>A slide from Elliotte Rusty Harold's 
  Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>June 6, 2006</last_modified>
</slide>





<slide>
<title>To Learn More</title>
  
 <ul>
  <li>This presentation: <a href="http://www.cafeconleche.org/slides/albany/syndication/">http://www.cafeconleche.org/slides/albany/syndication/</a></li>
   <li>The myth of RSS compatibility: <a href="http://diveintomark.org/archives/2004/02/04/incompatible-rss">http://diveintomark.org/archives/2004/02/04/incompatible-rss</a></li>
  <li><a href="http://www.tbray.org/atom/RSS-and-Atom">RSS 2.0 and Atom 1.0, Compared</a> (www.tbray.org)</li>
<li>Atom Enabled: <a href="http://www.atomenabled.org/">http://www.atomenabled.org/</a></li>
<li><a href="http://www.intertwingly.net/wiki/pie/FrontPage">Atom Wiki</a></li>
<li>The Atom specification: <a href="http://ietfreport.isoc.org/rfc/rfc4287.txt">RFC 4287</a></li>
<li>Atom Publishing Protocol: 
<a href="http://ietfreport.isoc.org/idref/draft-ietf-atompub-protocol/">http://ietfreport.isoc.org/idref/draft-ietf-atompub-protocol/</a>
</li>
<li>Wikipedia: <a href="http://en.wikipedia.org/wiki/Atom_(standard)">http://en.wikipedia.org/wiki/Atom_(standard)</a></li>
  </ul>
  <description>A slide from Elliotte Rusty Harold's Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>October 17, 2006</last_modified>

</slide>

<slide print="false">
    <title>Questions?</title>
  
     <div align="center">
    <img src="images/question3.gif" width="215" height="494"/>
    </div> 
  <description>A slide from Elliotte Rusty Harold's Web Syndication for Developers presentation at <host_ref/>, <date_ref/></description>
  <last_modified>January 25, 2004</last_modified>
</slide>

</presentation>
