<?xml version="1.0"?>
<opml version="2.0">
	<head>
		<title>rssCloud home</title>
		<dateCreated>Sun, 01 Oct 2017 17:04:35 GMT</dateCreated>
		<dateModified>Tue, 25 Aug 2020 13:03:37 GMT</dateModified>
		<ownerName>Dave</ownerName>
		<ownerId>https://twitter.com/davewiner/</ownerId>
		<expansionState>1,9,18,19</expansionState>
		<vertScrollState>1</vertScrollState>
		<windowTop>631</windowTop>
		<windowLeft>1087</windowLeft>
		<windowBottom>831</windowBottom>
		<windowRight>1472</windowRight>
		<flDisqusComments>false</flDisqusComments>
		<disqusGroup>scripting</disqusGroup>
		<type>blogpost</type>
		<lastCursor>20</lastCursor>
		<urlPublic>http://home.rsscloud.co/</urlPublic>
		</head>
	<body>
		<outline text="Rebooting the RSS cloud" created="Tue, 25 Aug 2020 12:42:13 GMT">
			<outline text="In the early &lt;a href=&quot;http://scripting.com/2001/01/06.html&quot;&gt;days&lt;/a&gt; of &lt;a href=&quot;http://backend.userland.com/rss092#ltcloudgtSubelementOfLtchannelgt&quot;&gt;RSS&lt;/a&gt;, we had the idea that instantaneous updates would be the next step. "/>
			<outline text="That was 2001. It took a little longer than we thought, but now with &quot;realtime&quot; as the Next Big Thing, it's time to reboot all that stuff. "/>
			<outline text="This is where I'll document my efforts." created="Tue, 25 Aug 2020 12:42:32 GMT"/>
			<outline text="Dave Winer&lt;br&gt;August 2020" created="Tue, 25 Aug 2020 12:50:49 GMT"/>
			</outline>
		<outline text="Three sided-cloud" created="Tue, 25 Aug 2020 12:42:37 GMT">
			<outline text="There are three sides to the cloud:" created="Tue, 25 Aug 2020 12:42:43 GMT" flNumberedSubs="true">
				<outline text="The authoring tool. I edit and update a feed. It contains a &amp;lt;cloud&gt; element that says how a subscriber should request to notification of updates." created="Tue, 25 Aug 2020 12:42:57 GMT"/>
				<outline text="The cloud. It is notified of an update, and then in turn notifies all subscribers." created="Tue, 25 Aug 2020 12:43:03 GMT"/>
				<outline text="The subscriber. A feed reader, aggregator, whatever -- that subscribes to feeds that may or may not be part of a cloud. " created="Tue, 25 Aug 2020 12:42:58 GMT"/>
				</outline>
			</outline>
		<outline text="Andrew Shell's rssCloud server" created="Tue, 25 Aug 2020 12:48:25 GMT">
			<outline text="I used to maintain an rssCloud server, but as of August 2020, &lt;a href=&quot;https://blog.andrewshell.org/updating-rsscloud-server/&quot;&gt;Andrew Shell&lt;/a&gt; is doing that. " created="Tue, 25 Aug 2020 12:50:14 GMT"/>
			<outline text="He's also publishing an open source rssCloud server in Node.js, so you can run your own server as well." created="Tue, 25 Aug 2020 12:51:11 GMT"/>
			</outline>
		<outline text="Brief history" created="Tue, 25 Aug 2020 12:51:32 GMT">
			<outline text="The first rssClouds were implemented in 2001 in Manila and Radio UserLand, two products from my company, UserLand Software. &lt;a href=&quot;#threeSidedcloud&quot;&gt;All three sides&lt;/a&gt; of the protocol were implemented. "/>
			<outline text="In 2002, we spun out the server side into an open source release called Radio Community Server, which had other functions that supported communities of Radio users. We operated two such communities, one for our own users, and one in partnership with Salon. A bunch of leading weblogs came out of these services. "/>
			<outline text="The aggregator in Radio UserLand would receive instant updates of feeds of other members of these communities, but not many people noticed. We also had the equivalent of Twitter's &quot;retweet&quot; (that's why the &amp;lt;source&gt; element was added, so the feed would link back to the originator, a feature that Twitter doesn't have). "/>
			<outline text="In any case, polling became the norm, and the cloud functionality didn't get much use outside of our communities."/>
			</outline>
		<outline text="Specs" created="Tue, 25 Aug 2020 12:51:43 GMT">
			<outline text="Scripting.com: &lt;a href=&quot;http://scripting.com/2001/01/06.html&quot;&gt;January 6, 2001&lt;/a&gt;."/>
			<outline text="Two-way Web: &lt;a href=&quot;http://scripting.com/manila/theTwoWayWeb/soapmeetsrss.html&quot;&gt;SOAP Meets RSS&lt;/a&gt;. (2001)" created="Tue, 25 Aug 2020 12:52:57 GMT"/>
			<outline text="Backend.UserLand.com: &lt;a href=&quot;http://backend.userland.com/rss092#ltcloudgtSubelementOfLtchannelgt&quot;&gt;RSS 0.92 spec&lt;/a&gt;. (2001)"/>
			<outline text="Harvard: &lt;a href=&quot;http://cyber.law.harvard.edu/rss/rss.html#ltcloudgtSubelementOfLtchannelgt&quot;&gt;RSS 2.0 spec&lt;/a&gt;. (2003)"/>
			<outline text="Harvard: &lt;a href=&quot;http://cyber.law.harvard.edu/rss/soapMeetsRss.html&quot;&gt;SOAP Meets RSS&lt;/a&gt;. (2007)" created="Tue, 25 Aug 2020 12:58:18 GMT"/>
			<outline text="rssCloud: &lt;a href=&quot;http://walkthrough.rsscloud.co/&quot;&gt;Implementor's Guide&lt;/a&gt;. (2009)" created="Tue, 25 Aug 2020 12:58:19 GMT"/>
			</outline>
		<outline text="Could it work with Atom?">
			<outline text="You bet!"/>
			<outline text="Just define a namespace to have a single element in it, the &amp;lt;cloud&gt; element from RSS 2.0. "/>
			<outline text="If you need a URL for the namespace, please consider using the URL for this site. "/>
			<outline text="Namespaces make ideas portable, and not specific to any format, and don't lock anyone in or out. :-)"/>
			</outline>
		<outline text="http-post protocol" created="Tue, 25 Aug 2020 13:00:46 GMT">
			<outline text="&lt;i&gt;7/15/09; 9:25:11 AM by DW.&lt;/i&gt;"/>
			<outline text="Per Daniel Berlinger's question in a comment, there &lt;i&gt;is&lt;/i&gt; a REST interface coming out of the rssCloud interface. It's mentioned both in the RSS 2.0 spec and in SOAP Meets RSS. " created="Tue, 25 Aug 2020 13:01:01 GMT"/>
			<outline text="However two details are not included in the description, so I've had to fill them in, in my implementation of rssCloud."/>
			<outline text="0. The method is (of course) POST."/>
			<outline text="1. It takes a single parameter named &lt;i&gt;url,&lt;/i&gt; whose value is the address of the feed that updated. (The spec didn't provide the name of the parameter.)"/>
			<outline text="2. The returned value is ignored, as with the returned value of the XML-RPC and SOAP notifications. (The spec didn't explicitly say the returned parameter is ignored.)"/>
			<outline text="I've got a sample handler running at: http://rpc.rsscloud.co:5337/rsscloud/postUpdate. If you call it as described above it returns &lt;i&gt;Thanks for the post.&lt;/i&gt;"/>
			</outline>
		<outline text="Change notes" created="Tue, 25 Aug 2020 13:01:31 GMT">
			<outline text="8/25/20" created="Tue, 25 Aug 2020 13:01:35 GMT">
				<outline text="Updated this page so the links work" created="Tue, 25 Aug 2020 13:01:41 GMT"/>
				<outline text="Instead of pointing to my implementation which is no longer running, I &lt;a href=&quot;#1598359705000&quot;&gt;point&lt;/a&gt; to Andrew Shell's. He has taken over running the public rssCloud server. " created="Tue, 25 Aug 2020 13:03:00 GMT"/>
				</outline>
			<outline text="7/17/09">
				<outline text="Adding cloud support to river2.root">
					<outline text="This is the second time I've implemented it, the original implementation is still here in xml.aggregator. Using that code to guide me."/>
					</outline>
				<outline text="river2suite.init">
					<outline text="New pref, flRequestCloudNotify, if true we do the whole dance and get realtime updates. Only set true if you're not behind a firewall thought."/>
					<outline text="Stats for tracking real-time updates."/>
					</outline>
				<outline text="river2Suite.initFeed">
					<outline text="Init stats.whenLastCloudRenew."/>
					</outline>
				<outline text="river2Suite.renewSubscriptions">
					<outline text="New routine. Every 24 hours it resubs to feeds that have cloud elements."/>
					</outline>
				<outline text="river2Suite.rpcHandlers">
					<outline text="One handler, feedUpdated, receives notification that a feed changed."/>
					</outline>
				<outline text="xml.rss.getFeedItems">
					<outline text="Implement a new sub-table of feedInfo table for each feed, cloud. It's present only if the feed has a cloud element."/>
					</outline>
				</outline>
			<outline text="7/15/09">
				<outline text="Respect the &quot;enabled&quot; boolean everywhere relevant."/>
				<outline text="Timestamp subscriptions and delete after 25 hours."/>
				<outline text="Make log available as a Javascript include, so people can view the log from this site."/>
				<outline text="Log new subscriptions."/>
				<outline text="Add support for http-post protocol for notification, in addition to xml-rpc and soap."/>
				<outline text="Use identi.ca username/password for saving RSS feeds through storage system."/>
				</outline>
			</outline>
		</body>
	</opml>
