<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JoeCascio.net &#187; microblogging</title>
	<atom:link href="http://joecascio.net/joecblog/tag/microblogging/feed/" rel="self" type="application/rss+xml" />
	<link>http://joecascio.net/joecblog</link>
	<description>Everyone is entitled to my opinion</description>
	<lastBuildDate>Fri, 27 Jan 2012 13:04:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Announcing SLAP</title>
		<link>http://joecascio.net/joecblog/2009/05/18/announcing-slap/</link>
		<comments>http://joecascio.net/joecblog/2009/05/18/announcing-slap/#comments</comments>
		<pubDate>Mon, 18 May 2009 23:39:20 +0000</pubDate>
		<dc:creator>JoeC</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[announcement]]></category>
		<category><![CDATA[distributed applications]]></category>
		<category><![CDATA[federation]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[protocol]]></category>
		<category><![CDATA[publishing]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[slap]]></category>
		<category><![CDATA[subscribing]]></category>

		<guid isPermaLink="false">http://joecascio.net/joecblog/?p=244</guid>
		<description><![CDATA[SLAP &#8211; Simple Lightweight Announcement Protocol Today, to only two close developer friends, I&#8217;m releasing a first prototype of a new project called SLAP (for Simple Lightweight Announcement Protocol). We&#8217;re going to begin multi-server testing of it as soon as possible. If you&#8217;re not a developer, you may not immediately grasp exactly what SLAP is [...]]]></description>
			<content:encoded><![CDATA[<div class="entry">
<h3>SLAP &#8211; Simple Lightweight Announcement Protocol</h3>
<p>Today, to only two close developer friends, I&#8217;m releasing a first prototype of a new project called SLAP (for Simple Lightweight Announcement Protocol). We&#8217;re going to begin multi-server testing of it as soon as possible. If you&#8217;re not a developer, you may not immediately grasp exactly what SLAP is all about, but I&#8217;m hoping it will help all of us establish our own Social Networks of One, as Jeff Pulver calls it, and not be slaves to the whims of services like Twitter or Facebook, that now determine when and how we can communicate.</p>
<p>SLAP is a project I’ve been developing on and off for a couple of years. SLAP provides a very minimal and fast way to alert content or status subscribers that new or updated information is available, without them having to poll constantly for it.</p>
<p>By eliminating polling we benefit both the subscriber and the publisher. The subscriber gets informed of new content immediately, with no polling period latency and no resources of computing or bandwidth are expended between announcements. Likewise, the publisher does not need to provide sufficient bandwidth and computing resources to respond to polling requests, the vast majority of which result in no new information.</p>
<p>Unlike HTTP and XMPP, SLAP is connectionless, employing UDP (User Datagram Protocol) as its underlying transport mechanism. This is why no significant server or network resources are used between announcements. Although XMPP provides the same immediacy of delivery and elimination of polling, it requires long-lived connections to be maintained even if the frequency of announcements is very low, e.g., once a week. HTTP does not require long-lived connections, but instead requires establishing and terminating much TCP connection overhead in a short amount of time to deliver a very small amount of data.</p>
<h3>The SLAP model</h3>
<p>SLAP defines announcements in terms of feeds and posts to those feeds. Each feed is identified with a URI and each post with a perma-link URI. Further, each announcement is uniquely identified independently of the feed and post it is related to. This allows many announcements of the same feed and post. For example a post may be initially created, then edited many times, or commented on many times. Each edit or comment can result in a new announcement of a change to the post.</p>
<h3>Publishers and Subscribers</h3>
<p>There are two basic roles in the use-case model for SLAP; the Publisher and the Subscriber. The Publisher creates new feed content and emits a SLAP event every time that feed content changes that goes to every Subscriber. The Subscribers receive the announcements and respond with an acknowledgement. The announcements and acknowledgements are all delivered using UDP, which means no connection overhead for either the Publisher or the Subscriber. The protocol is tolerant of off-line Subscribers and noisy, unreliable networks. Publishers retry unacknowledged announcements at a fixed period and for a limited amount of time. One of the strengths of SLAP is that a missed announcement is not the end of the world. The Subscriber can periodically check the Publisher for all feed content and discover a missed post that way.</p>
<p>Strictly speaking, SLAP is not intended to deliver content, but only to announce that new or modified content is available on a feed and to provide the URIs for the feed and the post that allow the subscriber to fetch the content. SLAP does provide for a content summary that may in many cases be all the content there is. Microblogging or automated system status updates would tend to use this feature. In these cases, an attribute of the message could show that the summary is the entire post content. This is an optimization that enables a subscriber to avoid making a content fetch when the summary is all that there is.</p>
<p>Having the publisher be responsible and obligated for content storage allows a subscriber that has been offline for an amount of time to fetch any posts it missed simply by reading the feed as it normally would.</p>
<h3>Separation of subscribing and fetching from announcing</h3>
<p>The core SLAP messaging services deliver and acknowledge announcements, but play almost no part in establishing or terminating subscriptions. Nor do they specify how fetching of post content happens. Subscriptions can be established in any number of ways, as long as the required information for announcement delivery and authentication is provided. The subscription protocol is an open development issue, and your comments and suggestions are welcome. Personally, I see a simple extension to RSS as being the most obvious route. This would allow common blogging or microblogging applications like WordPress or Twitter to add announcement support with a relatively small modification to their current RSS support. RSS feeds could allow SLAP-enabled subscribers to discover the SLAP parameters and automatically connect to those feeds providing SLAP announcements.</p>
<h3>Authentication</h3>
<p>Any protocol that “pushes” information to a destination opens a possible hole for spammers. One of the challenges to making SLAP work is enabling subscribers to authenticate incoming announcement messages as to their source and to do it relatively quickly. This first version of SLAP uses a simple MD-5 hash of the message contents with a subscriber generated key that is exchanged at subscription time, ideally using secure communication.</p>
<h3>Try it, you’ll like it.</h3>
<p>SLAP can be used just for publishing, just for subscribing, or both. You’ll need to run it on a machine that you can open the firewall on, and receive UDP messages on ports 14947 for the subscriber and 14948 for the publisher. Or you can use any SLAP server that you’re given access to.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://joecascio.net/joecblog/2009/05/18/announcing-slap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OAuth and OMB &#8211; missed point</title>
		<link>http://joecascio.net/joecblog/2008/11/23/oauth-and-omb-missed-point/</link>
		<comments>http://joecascio.net/joecblog/2008/11/23/oauth-and-omb-missed-point/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 12:25:09 +0000</pubDate>
		<dc:creator>JoeC</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[OpenMicroblogging]]></category>

		<guid isPermaLink="false">http://joecascio.net/joecblog/?p=124</guid>
		<description><![CDATA[After spending quite a few hours on yesterdays post, OAuth and OMB post-sharing, it occurred to me with the first cup of coffee this morning that I had missed one important user interface twist in the use of OAuth that actually makes it quite necessary. It depends on how the UI for subscribing works. If, [...]]]></description>
			<content:encoded><![CDATA[<p>After spending quite a few hours on yesterdays post, <a title="OAuth and OMB, first post" href="http://joecascio.net/joecblog/2008/11/22/oauth-and-omb-post-sharing/" target="_blank">OAuth and OMB post-sharing</a>, it occurred to me with the first cup of coffee this morning that I had missed one important user interface twist in the use of OAuth that actually makes it quite necessary.</p>
<p>It depends on how the UI for subscribing works. If, as with a feed reader, the subscriber enters the URL of the person they wish to follow, authorization is unnecessary. The user has made their intention known to their own account, and can simply request the posting server to send updates.</p>
<p>However, if the the subscriber subscribes by visting the site of the poster, and the poster allows unrestricted access, then there must be a mechanism for the subscriber to tell his own site that he wishes to subscribe to the poster&#8217;s updates. This is where OAuth comes in, and it is indeed a well-matched use-case for OAuth&#8217;s functionality.</p>
<p>Apologies to Evan at Identi.ca.</p>
]]></content:encoded>
			<wfw:commentRss>http://joecascio.net/joecblog/2008/11/23/oauth-and-omb-missed-point/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OAuth and OMB post-sharing</title>
		<link>http://joecascio.net/joecblog/2008/11/22/oauth-and-omb-post-sharing/</link>
		<comments>http://joecascio.net/joecblog/2008/11/22/oauth-and-omb-post-sharing/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 20:57:58 +0000</pubDate>
		<dc:creator>JoeC</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[OpenMicroblogging]]></category>

		<guid isPermaLink="false">http://joecascio.net/joecblog/?p=104</guid>
		<description><![CDATA[This post has been superseded. I missed an important web UI issue which lead me to an incorrect conclusion. Square peg, round hole The OpenMicroBlogging Specification (OMB) contains a section on the use of OAuth to authorize a remote service to post to a user&#8217;s local service. After spending some time studying the OAuth and [...]]]></description>
			<content:encoded><![CDATA[<h3>This post has been <a title="Follow up retraction" href="http://joecascio.net/joecblog/2008/11/23/oauth-and-omb-missed-point/">superseded</a>. I missed an important web UI issue which lead me to an incorrect conclusion.</h3>
<h3>Square peg, round hole</h3>
<p>The <a title="OMB spec" href="http://openmicroblogging.org/" target="_blank">OpenMicroBlogging Specification</a> (OMB) contains a section on the use of <a title="OAuth home page &amp; spec" href="http://oauth.net/" target="_blank">OAuth</a> to authorize a remote service to post to a user&#8217;s local service. After spending some time studying the OAuth and OMB specs, it seems to me that this is not the use-case that OAuth was designed to solve. A square peg in a round hole, you might say.</p>
<p>This is not to say that authorization is not needed for allowing post-sharing, only that OAuth was designed to address a different situation. The simplest way I can characterize the difference is that OAuth applies to a &#8220;one human, two services&#8221; problem and microblogging post-sharing is a &#8220;two humans, two services&#8221; problem.</p>
<h3>OAuth&#8217;s intended use-case</h3>
<p>So, what problem does OAuth fit? OAuth is intended to solve the problem of a person who has content or resources on Service A and wants to allow his/her account on Service B to access those A resources &#8211; <strong>without giving Service B his/her login credentials for Service A.</strong> Note well that it is the same person having accounts on both A and B. This is the &#8220;one-human, two services&#8221; aspect.</p>
<p>So, for example, let&#8217;s say you have an account on Twitter and want to use one of the many alternate Twitter clients out there, e.g., <a title="Twalala home page" href="http://twalala.com" target="_blank">Twalala</a>. You have an account with Twalala and would like to be able to access your account on Twitter without having to fork over your Twitter password. Using OAuth, you would be able to, in essense, tell Twitter to allow your account on Twalala.com to perform various read or post functions with your Twitter data. By the way, Twitter has been promising for months to implement OAuth for exactly this purpose. Again, note that there is only one person with accounts on both systems.</p>
<h3>OMB post-sharing use-case</h3>
<p>Now, let&#8217;s look at the case of two people on two different OMB-compliant sites who want to share their posts, either unilaterally or bilaterally. Let&#8217;s say I have an account &#8220;joecascio&#8221; on site subscriber.com, and my friend has an account &#8220;johnsmith&#8221; on poster.com and I would like to follow John&#8217;s updates. Note that it should not be necessary for either me to have an account on poster.com nor John to have an account on subscriber.com in order for me to &#8220;see&#8221; his updates. Indeed, this is the whole point of federated microblogging; that we can share posts without having to have accounts on many different services. So simply from this fact alone, OMB post-sharing is clearly not the &#8220;one person, two accounts&#8221; use-case. If post-sharing worked by requiring John to have an account on subscriber.com (the second of the &#8220;two services&#8221;) and then authorizing subscriber.com to let his Poster.com account post there, then yes, that would be the OAuth use-case. But it isn&#8217;t!!</p>
<p>So, what is an appropriate protocol or process for enabling and controlling post-sharing? I don&#8217;t have the complete answer, and I&#8217;m hoping that this post will cause some of the many smart people out there to suggest some. But I can state at least some of the problem characteristics, requirements or constraints.</p>
<h3>Post-sharing is subscribing, not cross-posting</h3>
<p>When I register my interest in someone else&#8217;s microblog posts, when I &#8220;follow&#8221; them, it means I want to subscribe to their post stream, just like I would subscribe to their traditional blog. If it were a traditional blog, I would do this by polling their RSS feed which is a simple GET by the subscriber. It does not involve the poster initiating a transaction to &#8220;send&#8221; me anything. But since microblogging implies a much lower latency, which would be inefficient to perform by polling, OMB introduces an optimization. The service on which the post was originally made proactively sends the new post to all subscribers. Great! We can now be notified that a new update is available within a few second without having to poll every few seconds.</p>
<p>BUT this is point of my observation. I would argue that this proactive send is merely an artifice of the optimization and does not change the fundamental relationship of poster and subscriber. From that basic user point of view, the fact that the poster initiates the data transfer is immaterial. The subscriber is still simply seeing something they expressed interest in reading.</p>
<p>This is where I believe OMB goes astray. It lets an optimization detail obscure the higher level concept. Following someone&#8217;s posts means I want to see those posts in my view, but it does not require that either party perceive it as cross-posting to my site. I could equally accomplish the same viewing of that post by fetching it on demand, albeit not as efficiently.</p>
<h3>Subscribing is implicit authorization</h3>
<p>Keeping firmly in mind the fundamental concept of poster and subscriber, what if any authorization needs to happen when I request to follow &#8216;johnsmith&#8217;? I would say that <strong>the very fact I am requesting to see John&#8217;s posts is an implicit authorization that he can send them to me</strong>. Whether he wants to let me see them is a different story and the subject of another post. Let&#8217;s assume he will let me see his posts and we want to use the OMB optimization of his service (poster.com) proactively sending them to me.</p>
<p>When I request to subscribe, I need to send a URL of where to send the notifications and a means to verify that the sender is who I granted the privilege to.  This could be accomplished to different degrees of security. A fairly loose method would be for the subscriber to send a callback URL in the request that encodes a UID for the poster&#8217;s account. If the request transaction is secure, we can be reasonably certain that only the the &#8220;real&#8221; poster will be sending POSTs to that URL. Of course, this does not prevent the poster from sharing the UID, but the subscriber can always simply invalidate the URL and stop receiving the notifications.</p>
<p>In fact, this is pretty much how the <a title="RSS Cloud API spec" href="http://cyber.law.harvard.edu/rss/soapMeetsRss.html" target="_blank">RSS cloud API </a>works and this could be a more proper model for OMB post-sharing.</p>
<h3>What do you think?</h3>
<p>I would be very interested to hear what others have to say about this post. One thing it does not cover is the complementary function of a subscriber GETting, rather than being sent an update. It also does not cover the perfectly matched use of OAuth to allow a user to grant access to other of his/her services just as described in the Twitter/Twalala example under &#8220;OAuth&#8217;s intended use-case&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://joecascio.net/joecblog/2008/11/22/oauth-and-omb-post-sharing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Decoupling publishing and notification</title>
		<link>http://joecascio.net/joecblog/2008/09/23/decoupling-publishing-and-notification/</link>
		<comments>http://joecascio.net/joecblog/2008/09/23/decoupling-publishing-and-notification/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 15:49:48 +0000</pubDate>
		<dc:creator>JoeC</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[decoupling]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[notification]]></category>
		<category><![CDATA[publishing]]></category>
		<category><![CDATA[xmpp]]></category>
		<category><![CDATA[XRDS]]></category>

		<guid isPermaLink="false">http://joecascio.net/joecblog/?p=39</guid>
		<description><![CDATA[There is renewed interest in trying to construct a microblogging platform using XMPP for the &#8220;push&#8221; or notification of followers. The Open Birdcage project is aiming to establish a full environment for an XMPP based microblogging service. Environment means the full stack necessary beginning from protocol and API definitions to server side and client side [...]]]></description>
			<content:encoded><![CDATA[<p>There is renewed interest in trying to construct a microblogging platform using XMPP for the &#8220;push&#8221; or notification of followers. The <a title="Open Birdcage Wiki site" href="http://trac.jwchat.org/open-birdcage/wiki/WikiStart" target="_blank">Open Birdcage</a> project is aiming to</p>
<blockquote><p>establish a full environment for an XMPP based microblogging service. Environment means the full stack necessary beginning from protocol and API definitions to server side and client side implementations.</p></blockquote>
<p>I am hoping that this project will also be able to make a distinction between publishing of content and notifying subscribers of the publishing event. This is a generally useful function that transcends microblogging. It would be a great boon to live-bloggers, news services, live-streaming video or any publishing endeavor where time is a factor.</p>
<p>I&#8217;ve written in this space previously about the idea of a <a title="Blog post on Personal Publishing" href="http://joecascio.net/joecblog/?p=27" target="_blank">personal publishing platform</a>. OpenBirdcage may give us the opportunity to decouple the notions of creating and posting content from the notion of notifying others that the new content is available.</p>
<p>In this decoupled model, you could choose a notification provider separate from your publishing provider, although certainly the two might be offered by the same site. In addition, you could choose multiple notification providers so if one failed, subscribers could simply fall over to one or more backup site.</p>
<p>This model would allow not only microblogs, but any web publisher to very rapidly notify subscribers of new or changed content without having to poll. Your personal identity and/or publishing site would present XRDS records allowing subscribers to discover your notification provider accounts, which could be totally distinct from your publishing provider.</p>
<p>XMPP publish-subscribe plus Atom is well-suited to this model. It would allow small content like microblog posts to be sent right in the notification, while links would be sent for larger content.</p>
]]></content:encoded>
			<wfw:commentRss>http://joecascio.net/joecblog/2008/09/23/decoupling-publishing-and-notification/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Personal Publishing</title>
		<link>http://joecascio.net/joecblog/2008/07/07/personal-publishing/</link>
		<comments>http://joecascio.net/joecblog/2008/07/07/personal-publishing/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 13:50:04 +0000</pubDate>
		<dc:creator>JoeC</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[diso project]]></category>
		<category><![CDATA[laconica]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[personal publishing]]></category>

		<guid isPermaLink="false">http://peeps.3greeneggs.com/joecblog/?p=25</guid>
		<description><![CDATA[Preface: I&#8217;m not really happy about the conceptual uniformity of this post, but I wanted to get the ideas out. There are really two things I&#8217;m talking about. First is the idea of a Personal Publishing site identified by my OpenID rather than accounts on individual publishing or messaging services. The second is the notion [...]]]></description>
			<content:encoded><![CDATA[<p><em>Preface: I&#8217;m not really happy about the conceptual uniformity of this post, but I wanted to get the ideas out. There are really two things I&#8217;m talking about. First is the idea of a Personal Publishing site identified by my OpenID rather than accounts on individual publishing or messaging services. The second is the notion that all messaging modalities are essentially the same in that they push or notify instead of working by polling.</em></p>
<p>One thing that&#8217;s become obvious to me after working on and thinking about Distributed Microblogging is that all forms of messaging are essentially the same. The only differences between email, IM, chat and microblogging are quantitative not qualitative. There are only matters of degree in length, asynchrony and number of recipients. While it is true that sometimes a matter of degree results in a defacto matter of kind, I&#8217;m  convinced there is some kind of Grand Confluence of these different messaging modalities in our future.</p>
<p>I didn&#8217;t include blogging as messaging because the essence of a message is that the <strong>sender initiates the transfer.</strong> So even though you might subscribe to a blog using RSS, feed readers still operate by polling, i.e., periodically checking for something new. So blogging is still basically a &#8220;pull&#8221; operation, where messaging is a &#8220;push&#8221;.</p>
<p>But blogging and messaging can be thought of as similarly implemented if we separate two notions: message content and message notification. Think of sending a message as two operations. First, I create and store the message content on a place I&#8217;ll call my Personal Publishing Site or PPS. Second, I send out a short notification message to the recipients, with a link or key back to the stored post on my PPS. Third, using the link or key I provided in the notification, the recipients call back and get the content from my PPS. Now, in the case of small messages like IM, chat or microblogging, it would be a time and bandwidth saver to just send the message body along with the notification. One correlation that seems pretty consistent is that short messages like IM, chat or microblogging tend to get sent more frequently and with a shorter delivery requirement than say, email or blog posts, which can languish for days without being read.</p>
<p>What if all messaging operated this way? What if, instead of going to different sites to talk to friends there with different tools and capabilities, we created and sent (published and notified) all messages using our own Personal Publishing Site? What if community or other types of sites could receive our PPS messages and post copies of them or links to them?</p>
<p>We have a glimpse into the possibilities of this world with<a href="http://identi.ca" target="_blank"> Identi.ca </a>and the open source software that powers it, <a href="http://laconi.ca/" target="_blank">Laconica</a>. What if everyone ran their own laconica service? That would be like a Personal Microblogging site. What if our OpenID page contained meta-data about what laconica server to use to contact us? What would that mean for the notion of community sites? Would they become more like simple mailing lists if you didn&#8217;t have to &#8220;go&#8221; there to communicate with your friends who might also be friends there? In this model of the world, we&#8217;d have discussions by a sort of Dueling Banjos publishing. I publish a message which you read, then you respond by publishing a message that I read. Depending on how subscription works only you and I might see the messages, or they might be seen by a wider group of our subscribers or anyone, sort of like an @ conversation on Twitter.</p>
<p><em>ps: The <a href="http://diso-project.org/">DISO project</a> is attempting to address some of these issues, if you want to pop over there and do a little reading.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://joecascio.net/joecblog/2008/07/07/personal-publishing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Distributed Microblogging UI ideas for DevHouseBoston</title>
		<link>http://joecascio.net/joecblog/2008/06/27/distributed-microblogging-ui-ideas-for-devhouseboston/</link>
		<comments>http://joecascio.net/joecblog/2008/06/27/distributed-microblogging-ui-ideas-for-devhouseboston/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 15:49:27 +0000</pubDate>
		<dc:creator>JoeC</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[devhouseboston]]></category>
		<category><![CDATA[distributed]]></category>
		<category><![CDATA[distributed microblogging]]></category>
		<category><![CDATA[distributed microblogging devhouseboston]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://peeps.3greeneggs.com/joecblog/?p=21</guid>
		<description><![CDATA[This Sunday, June 29, 2008, I will be attending DevHouseBoston. I&#8217;ve proposed a project called Distributed Microblogging. My primary goal for the day is to get a UI defined. If we can prototype something, so much the better, but I think the discussions going on in the online community really need to have some attention [...]]]></description>
			<content:encoded><![CDATA[<p>This Sunday, June 29, 2008, I will be attending DevHouseBoston. I&#8217;ve proposed a project called Distributed Microblogging. My primary goal for the day is to get a UI defined. If we can prototype something, so much the better, but I think the discussions going on in the online community really need to have some attention given to exactly what microblogging is, as opposed to how to do it. Many &#8220;how&#8221; proposals miss important requirements or add what I consider unnecessary ones.</p>
<p>So I&#8217;ve been putting together the following list of what I consider to be important features that a good microblogging function should have. In most cases, I&#8217;ve approached it from how it should appear to the user. If you are coming to DevHouseBoston on Sunday, you might want to read this list over and come prepared to argue the merits of different points, add your own, or if you&#8217;re a UI designer, contribute to a discussion of how to design a UI that incorporates these features.</p>
<p>Remember that one of the benefits of an open system is that there can be many different UIs to choose from!</p>
<p>So, following, is the list in a very raw and unpolished form.</p>
<p><strong>Note: DMB means Distributed Microblogging.</strong></p>
<h3>Feature list for dmb UI</h3>
<p>Omnipresent replies, direct messages tabs or buttons.<br />
Tags on other microblogs, on posts, on other tags?</p>
<p>Direct support for conversations, replies, etc.<br />
Main page. Like twitter. Update input box at top, but maybe with separate scrolling list of stream.<br />
Multiple streams showing, replies, all, selected person&#8217;s archive, including user&#8217;s archive.<br />
&#8220;Hide&#8221; check boxes for each user. Clicking it removes their updates from stream list, and places their name in the a &#8220;hidden&#8221; list for easy reinstatement.</p>
<p>Also would be able to show/hide certain groups.</p>
<p>Conversation support. Each tweet would have a &#8220;reply&#8221; button. Clicking it would add the @user_name to the beginning of the update, and also make a database entry linking the update to one or more previous updates. The @&#8217;d user names would be like the &#8220;to&#8221; list on an email. Each update could have multiple other updates it was in-reply-to. This is a many-to-many relationship. An update can be in response to multiple other updates, and clearly an update can have many responses to it.</p>
<p>Updates have GUIDs. Required by IMPP.</p>
<p>Tabs for different subsets of users = from Mike Gaines. &#8220;tag-tab&#8221; <img src='http://joecascio.net/joecblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Separate input area for different tag-tabs.</p>
<p>Topics for User experience<br />
Conversations. What can you do? How are they shown?<br />
Multiple addressees (like email?)<br />
Latest on top or on the bottom? User pref?<br />
Classes of messages<br />
Direct<br />
Narrowcast (to a group tag?)<br />
Broadcast (or is this simply to all tags?)<br />
Temporary silencing (show/hide checkbox) So I can turn off someone who is usually ok, but is just ranting or something.</p>
<p>Ad-hoc grouping. Drag users into a tab where you see only their tweets.<br />
Public ad-hoc groups. All your followers can see tweets. You just filter locally.<br />
Private ad-hoc groups. Just the people in the group see the tweets.</p>
<p>General question.. will adding private groups destroy some of the vibrancy and serendipity of Twitter?</p>
<p>How to present tagging in the UI so it&#8217;s intuitive with what it does for the user, as opposed to a geeky abstract function?</p>
<p>What can be tagged, and hence grouped? Users, convos, even other tags? Locations? languages? specific tweets having to do with a certain subject? others?</p>
<p>Universally unique tags vs. private tags. UUtags would be very helpful for organizing large tagging efforts. But, how to agree on a tag for say, &#8220;SocialMediaBreakfast8&#8243;?</p>
<p>theRQ  would be great to be able to send/post an out &#8220;out of stream&#8221; message to someone that they get upon login- wouldn&#8217;t age off. (subject to spam abuse?)</p>
<p>Search &#8211; Let Google do it? What about private mblogs? Can individual servers be expected to support a general search capability? Thru XMPP? Thru HTTP?</p>
<p>Show me when I have new, unread DMs.</p>
<p>Multiple addressees for DMs. Now it&#8217;s beginning to look like email.</p>
<p>Show me when I have new, unread messages.<br />
Show me when I have new, unread messages from specific people or groups. (on that tag-tab?)</p>
<p>Auto-update (ala chat) vs. manual update.</p>
<p>Rich content. Photos, audio. (How to transmit to mobile devices?)</p>
<p>How to add these features without sacrificing the simplicity?</p>
<p>A few lines when you request to follow, so you can explain why. Either that or a listing of common friends on different sites.</p>
<p>What about the Twitter community? Can it be made part of DMB? Can we build an interface to Twitter? Will Twitter participate in DMB?</p>
<p>What about other communities that start up? Twitter has very amorphous sub-communities.</p>
<h3>Implementation questions:</h3>
<p>Use XMPP archiving or external? (some xmpp archiving options not applicable, like off the record, although they might be of interest)</p>
<p>How to do multiple servers?</p>
<p>How to map mb posts onto &#8220;collections&#8221; in xmpp archiving. Another reason to use external archving?</p>
<p>If we did external archiving it would relieve the burden of archiving on servers that could be used. Although they&#8217;re more likely to support archiving than pubsub.</p>
]]></content:encoded>
			<wfw:commentRss>http://joecascio.net/joecblog/2008/06/27/distributed-microblogging-ui-ideas-for-devhouseboston/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BarCampBoston update and what&#8217;s Coming Up&#8230;</title>
		<link>http://joecascio.net/joecblog/2008/05/20/barcampboston-update-and-whats-coming-up/</link>
		<comments>http://joecascio.net/joecblog/2008/05/20/barcampboston-update-and-whats-coming-up/#comments</comments>
		<pubDate>Tue, 20 May 2008 16:04:45 +0000</pubDate>
		<dc:creator>JoeC</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[barcampboston]]></category>
		<category><![CDATA[barcampboston berk]]></category>
		<category><![CDATA[berkman]]></category>
		<category><![CDATA[distributed]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://peeps.3greeneggs.com/joecblog/?p=13</guid>
		<description><![CDATA[BarCampBoston3 I had the pleasure of speaking at BarCampBoston3 this past Saturday in Cambridge, MA on the topic &#8220;Distributed Twitter&#8221;. This was a well-attended event and the geek energy was high! BarCamps attract and cater to hard-core coders and implementers. Not many marketing, PR or media types were in evidence, but there were quite a [...]]]></description>
			<content:encoded><![CDATA[<p><a title="BarCampBoston web site" href="http://barcampboston.org" target="_blank"><strong>BarCampBoston3</strong></a></p>
<p>I had the pleasure of speaking at BarCampBoston3 this past Saturday in Cambridge, MA on the topic &#8220;Distributed Twitter&#8221;. This was a well-attended event and the geek energy was high! BarCamps attract and cater to hard-core coders and implementers. Not many marketing, PR or media types were in evidence, but there were quite a few startup CEOs there looking for help.</p>
<p>One particularly useful session for me was at the start of the day, when Matt Douglas, CEO of <a title="MyPunchBowl.com web site" href="http://mypunchbowl.com" target="_blank">MyPunchBowl.com, </a>brought together companies looking for help with developers looking for work. It was very informal, we all got 10 seconds to say who we were and what we were looking for. I made a couple of promising connections there, so that in itself was worth the 90 minute drive from my home in Connecticut to Cambridge. Thanks, Matt and MyPunchBowl! This kind of Hook-me-up session should be a part of every BarCamp.</p>
<p>I was pleased that my session on Distributed Twitter attracted a packed room. Unfortunately, I completely zoned and missed the fact that sessions were only 1/2 hour, so I had to cut things short, but I did meet some interesting people who were interested in trying to get a project off the ground to actually build something.</p>
<p>I had some interesting follow-up discussions later in the day with people who were at my talk, but unfortunately, did not get to tell all at the meeting about the Distributed Twitter Google Group. Probably no biggie since I&#8217;m going to have to change the name of the group anyway, to avoid the inevitable cease-and-desist letter from Twitter.com&#8217;s lawyers for using their name.</p>
<p>One of the big reasons I went to BarCamp was to try to connect with mobile developers since a big part of decentralizing a microblogging platform is to provide the mobile connection that Twitter has. Many people use Twitter almost exclusively on their phones. I did meet two young fellows who seemed very interested in creating a mobile app to interface directly to a microblogging platform. Their advice was to skip SMS for demo purposes and simply use the mobile IP connectivity. Their POV was that SMS will go away in due time to be replaced by the more flexible and extensible IP protocol directly to apps on the phone. I&#8217;m not sure I buy the argument that you don&#8217;t need to have an SMS connection. SMS will be around for a while to come yet, and not having it could hamper uptake severely.</p>
<p>I had other interesting conversations regarding the use of XMPP as the &#8220;carrier&#8221; protocol for microblogging services. It was suggested to use Google&#8217;s gTalk service to experiment with since it&#8217;s a fully compliant (I think) XMPP end-point.</p>
<p>I continue to have some challenges with XMPP proponents not fully appreciating that microblogging is more like blogging than instant-messaging or chat. I&#8217;ll confess I don&#8217;t understand the differences completely myself, but I do see that there are some and that they are significant to a proper implementation. For instance, microblogging does not have the requirement or notion of presence. As a user, you don&#8217;t need to be &#8220;present&#8221; to get all the updates that people may send. You should be able to go back at any time and get the complete history of a microblog&#8217;s updates, just like it was a blog. Related to presence is the notion that senders of content aren&#8217;t responsible for keeping a permanent copy around for receivers to reference and search. More about this at a later time, but one shouldn&#8217;t have to rely on being &#8220;present&#8221; or having your receiving server make a copy of everything that a microblog sends to have a complete record. The sender should be responsible for keeping a permanent, permalinkable copy.</p>
<p>So, all in all, BarCampBoston3 was definitely worthwhile but I could have done better had I taken two consecutive sessions, which is allowed, and not have been so pressed for time.</p>
<p><strong>Coming up&#8230;</strong></p>
<p>In the weeks to come, I&#8217;m scheduled to do two more presentations about Distributed Microblogging.</p>
<ol>
<li><a title="IgniteBoston3 announcement" href="http://radar.oreilly.com/archives/2008/05/ignite-boston-3.html" target="_blank">IgniteBoston3 </a>- May 29th, 6 pm at <a title="Tommy Doyle's web site" href="http://www.tommydoyles.com/harvard/" target="_blank">Tommy Doyle&#8217;s</a> in Harvard Square, Cambridge, MA. This will be a quick, 5 minute &#8220;drive-by&#8221; preso just to introduce people to the topic. I&#8217;ll probably just get enough time to describe what it is, why I&#8217;m involved and to pimp preso #2 (next) and refer people to the Google group. If you&#8217;re interested in coming, be sure to register because they always fill up!</li>
<li><a title="Berkman Thursday meetings blog" href="http://blogs.law.harvard.edu/bloggroup/" target="_blank">Berkman Center Thursday Night Meeting </a>- June 5th, (time: tba), at the <a title="Berkman Center main web site" href="http://cyber.law.harvard.edu/" target="_blank">Berkman Center for Internet and Society</a>, Harvard University, 23 Everett St. Cambridge, MA. I&#8217;ll be speaking on Distributed Microblogging. I&#8217;m not sure, but there may be other presenters as well. This is my first time at a Berkman Thursday Night meeting and I&#8217;m very excited.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://joecascio.net/joecblog/2008/05/20/barcampboston-update-and-whats-coming-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Distributed Twitter &#8211; the hard bits</title>
		<link>http://joecascio.net/joecblog/2008/05/06/distributed-twitter-the-hard-bits/</link>
		<comments>http://joecascio.net/joecblog/2008/05/06/distributed-twitter-the-hard-bits/#comments</comments>
		<pubDate>Tue, 06 May 2008 18:32:23 +0000</pubDate>
		<dc:creator>JoeC</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[distributed]]></category>
		<category><![CDATA[distributed, microblogging, twitter]]></category>
		<category><![CDATA[microblogging]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://peeps.3greeneggs.com/joecblog/?p=11</guid>
		<description><![CDATA[If you don&#8217;t read all of this admittedly long post, please do skip to the end and check out the BarCampBoston info. I&#8217;ll be holding a session there on the topic of Distributed Microblogging. Ok, so let&#8217;s talk about the hard bits of doing Distributed Microblogging. It&#8217;s easy to envision a multitude of servers exchanging [...]]]></description>
			<content:encoded><![CDATA[<p><strong>If you don&#8217;t read all of this admittedly long post, </strong>please do skip to the end and check out the <a title="BarCampBoston home page" href="http://www.barcampboston.org/" target="_blank">BarCampBoston </a>info. I&#8217;ll be holding a session there on the topic of Distributed Microblogging.</p>
<p>Ok, so let&#8217;s talk about the hard bits of doing Distributed Microblogging. It&#8217;s easy to envision a multitude of servers exchanging microblog posts, and a UI that simply arranges the posts in chronological order. By the way, chronological order is easy to do if all the servers are synched with a time standard like <a title="National Institute of Standards and Technology" href="http://tf.nist.gov/timefreq/service/its.htm" target="_blank">nist.gov, </a>and most are. But the hard bit is making it work in a way that performs well and scales to large populations of both microblog posters and readers. I&#8217;ve been thinking of some different alternatives for this, which I&#8217;ll lay out here. As always, your thoughts are welcome.</p>
<h3>Performance</h3>
<p>So, what do I mean by &#8220;performs well&#8221;? Well, microblog (ie, Twitter) updates happen much more frequently than what we&#8217;d consider traditional blog posts, but not quite as fast as instant messenger or chat updates. And microblogs don&#8217;t have the notion of presence attached to them. You don&#8217;t worry about whether a Twitter poster is &#8220;on line&#8221; at any particular time, although you may deduce that from the rapidity of their responses to you.</p>
<p>To put a number on it, I&#8217;d say that a microblog post notification should be transmitted in less than a minute, ideally in a few seconds, although a delay of up to 5 minutes is not that objectionable. I frequently will ignore my Twitter feed for many minutes, sometimes hours. I have no expectation that I will see someone&#8217;s posts immediately (i.e., less than a second) nor do I care to. Microblogging is a river of updates. You don&#8217;t expect to see every single one.</p>
<h3>Size</h3>
<p>Now let&#8217;s talk numbers of followers and following. A typical Twitter user has 100 or fewer people that they follow, and a similar number that are following them. But the edge cases are far bigger. Someone like Robert Scoble (@scobleizer) or Chris Brogan (@ChrisBrogan) follow literally thousands of other users, and have even more following them.</p>
<p>Ok, so we need to be able to update thousands of users in nominally less than a minute, but at the exreme less than five minutes. If you don&#8217;t buy that, please leave a comment explaining why these limits are not realistic.</p>
<h3>Alternatives</h3>
<p><strong>RSS feed polling</strong></p>
<p>The simplest solution would be polling, which is reader initiated. Followers would poll the feeds of the microblogs they were interested in. It seems to me that polling has to be discarded as a solution except for occasional or retrospective uses. I think a solution should include RSS feeds but it seems obvious to me that for someone with 100 friends to poll those RSS feeds every minute, or ideally faster because they <strong>might</strong> post something is a stupendous waste of bandwidth.</p>
<p>On the sending side, if that same person had 100 followers, each of those followers would be polling the person&#8217;s RSS feed every few seconds causing a very high server load. Now multiply that by however many people&#8217;s accounts are hosted on that server and the problem quickly blows up.</p>
<p><strong>Notification</strong></p>
<p>A much more efficient solution would be for senders (microblog posters) to notify followers when a new post has been made, and perhaps to proactively send the new content in the notification message. Then, resources are used only when there is actual traffic to send. Both senders and receivers are quiescent when no one is posting. So what are the possibilities for implementing notification? I see the following.</p>
<ol>
<li>RSS cloud API &#8211; a little-known part of the RSS specification, the cloud element allows a feed to publish a web-service address that readers of the feed can register with to be notified of changes using a SOAP or xml-rpc call.</li>
<li>Jabber (XMPP) channels between DMB servers to carry notifications and content.</li>
<li>UDP notification with http callback. UDP is lightweight for both senders and receivers.  No open connections are required between senders and receivers. It&#8217;s sort of like RSS cloud, but narrowly and specifically designed for DMB, as opposed to generalized RSS.</li>
</ol>
<p><a title="RSS cloud spec" href="http://cyber.law.harvard.edu/rss/soapMeetsRss.html" target="_blank"><strong>RSS cloud API</strong></a></p>
<p>The cloud API was specifically designed with this purpose of notifying readers of content updates. Its original intent, judging from the RSS 2.0 spec was to allow actual client feed readers to register with the cloud. In the case of DMB, it would be cooperating servers that would register for notification with each other.</p>
<p>The problem with RSS cloud is overhead. Microblog entries are tiny and frequent compared with blog entries or traditional site updates. To require a follower server to read an entire RSS document to get 140 characters of content, and have this happen every few minutes when the poster updates would be inefficient to say the least. In addition, there is <a title="Forum article on the RSS cloud API" href="http://lists.apple.com/archives/syndication-dev/2006/Jan/msg00032.html" target="_blank">experience with the cloud api</a> that indicates just the HTTP session overhead for notifying many users becomes intolerable, although this was from the perspective of actual clients being notified as opposed to clients&#8217; servers being notified.</p>
<p><strong>Jabber (XMPP)</strong></p>
<p>Jabber is a very tempting candidate for this application, and has been getting quite a bit of discussion in the development community of late. Here&#8217;s <a title="Twitter application of Jabber pubsub" href="http://www.process-one.net/en/blogs/article/introducing_the_xmpp_application_server/" target="_blank">an example</a>. The advantage to Jabber is that it maintains open sessions between servers, which eliminates the session setup/teardown overhead, and allows for almost instantaneous notification of all &#8220;following&#8221; parties.</p>
<p>But this may also be a disadvantage in situations where there are hundreds or thousands of &#8220;followers&#8221; for a single sender. IM or chat is typically one-to-one, or one to a few, but microblogging is frequently one to hundreds or one to thousands. I am not familiar enough with Jabber servers in actual practice to know what their performance or connection limitations are. <strong>Anyone with Jabber implementation or operational experience is strongly encouraged to comment.</strong></p>
<p>Jabber&#8217;s concept of presence could be used to keep the number of messages by only requesting messages updates when a user is actually logged into his/her microblog system. What&#8217;s interesting about this notion is what &#8220;logged in&#8221; means. Microblogging, at least the way Twitter works, does not really require the concept of presence. For instance, you can be &#8220;logged in&#8221; to Twitter, but dormant for hours not getting any updates until you request a page refresh.</p>
<p>In fact, one key aspect of microblogs that differentiates them from IM or chat is that they don&#8217;t typically &#8220;auto-update&#8221;. And rather than this being a disadvantage, I-and I think many others-find this on-demand update to be much more useful than a streaming IM or chat window. It&#8217;s really more like reading small blog posts. I read when <strong>I </strong>want to, not when someone else decides to say something. So, using the presence capability without auto-updating will require a little clever UI design to, in a sense, auto-logoff the user when their web page hasn&#8217;t been refreshed in a certain period of time. This then, will also require the ability of followers to query the senders they follow for &#8220;back posts&#8221;, so they can see what happened in the past without keeping a client logged in all the time to save all the posts.</p>
<p><strong>UDP for notification</strong></p>
<p>In the past year, I did some work on a revamped email protocol I called IMTP that uses small UDP messages to notify receiving servers that the sender has some traffic for them. The receiver then calls back to the sender using TCP to get the message body. This was based on Prof. Daniel Bernstein&#8217;s <a title="Internet Mail 2000 page" href="http://cr.yp.to/im2000.html" target="_blank">Internet Mail 2000 </a>proposal several years ago. He proposed, quite rightly in my opinion, that mail senders should bear the burden of storing the message contents, not the receivers, and that mail content should only be sent when a receiver actually wants to read it.</p>
<p>The advantage to UDP is that it is very light weight for both the sender and the receiver, not requiring any session overhead or setup/teardown. If used for microblogging, UDP notification messages could take the place of the continuously open TCP sessions that Jabber employs, thus reducing the session resource allocation load on both ends.</p>
<p>Now, of course, the issue with UDP is that it is not guaranteed to be delivered. The IMTP service we built would retry the UDP message at some frequency until the receiver called back to either fetch or reject the message.</p>
<p>Conceptually, using UDP messages with a 140 character payload and a message number would fit a microblogging application very well.  Because microblogging has no expectation or requirement of presence or real-time delivery like chat and IM do, a dropped UDP message is not a tragedy. If the sender retried even once or twice per minute, that would be plenty of timeliness for microblogging. Plus, if the UDP messages carry a monotonically increasing message number, the receiver can know if they&#8217;re missed a message and simply call back to the sender to get it. The microblogging UI can reconstruct the sequence easily when the missing pieces, if any, finally come through.</p>
<p>A notification system using UDP would seem to minimize the resource requirements on both senders and receivers, and can perform the same kind of message fan-in/fan-out optimization that Jabber could. In other words, a given microblog update body needs to be sent only once to any server, regardless of how many followers there may be on that destination server.</p>
<p><strong>Comments, please!</strong></p>
<p>I am very interested in what others think and have to say about these issues. This problem of efficient and <em>timely-enough</em> notification, it seems to me, is the tough nut to crack for a good solution to microblogging.</p>
<p>By the way, I am going to do a session on Distributed Twitter (or Microblogging) at <a title="BarCampBoston home page" href="http://www.barcampboston.org/" target="_blank">BarCampBoston3 on May 17, 18. </a>We are going to try to bring in some mobile technology folks to discuss the other really interesting issue with Distributed Twitter, the SMS connection.</p>
<p>Also, at BarCampBoston, I am going to try to organize some kind of group to try implementing a Distributed Microblogging application going forward.</p>
]]></content:encoded>
			<wfw:commentRss>http://joecascio.net/joecblog/2008/05/06/distributed-twitter-the-hard-bits/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  joecascio.net/joecblog/tag/microblogging/feed/ ) in 0.61604 seconds, on Feb 5th, 2012 at 9:54 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 5th, 2012 at 10:54 am UTC -->
