<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://hueniverse.com/wp-atom.php">
	<title type="text">hueniverse</title>
	<subtitle type="text">Thoughts on Technology, Standards, and the Open Web</subtitle>

	<updated>2010-09-06T06:16:57Z</updated>

	<link rel="alternate" type="text/html" href="http://hueniverse.com" />
	<id>http://hueniverse.com/feed/atom/</id>
	

	<generator uri="http://wordpress.org/" version="3.0.1">WordPress</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Hueniverse" /><feedburner:info uri="hueniverse" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by/3.0/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><feedburner:emailServiceId>Hueniverse</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[How to Enter a Standards Working Group]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/oqemuOCuPng/" />
		<id>http://hueniverse.com/?p=1350</id>
		<updated>2010-09-06T06:16:57Z</updated>
		<published>2010-09-06T06:16:57Z</published>
		<category scheme="http://hueniverse.com" term="Open Web" />		<summary type="html"><![CDATA[As the OAuth specification editor, I am approached daily with comments, questions, ideas, and some very odd solicitations. It is quite fun. It seems that most people joining the work are determined to undermine their contribution by doing their best to alienate or insult the community, and often the editor. This is not unique to [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/09/how-to-enter-a-standards-working-group/">&lt;p&gt;As the OAuth specification editor, I am approached daily with comments, questions, ideas, and some very odd solicitations. It is quite fun. It seems that most people joining the work are determined to undermine their contribution by doing their best to alienate or insult the community, and often the editor.&lt;/p&gt;
&lt;p&gt;This is not unique to OAuth &amp;#8211; I have seen the same mistakes in many other places. Since working on an early draft of the OAuth 2.0 specification, I started collecting tips for newcomers. Here are some that would make your entrance into a standards working group much smoother and productive.&lt;span id="more-1350"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Don&amp;#8217;t start with a proposal, start with a question.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Assume you don&amp;#8217;t understand everything, especially if you have feedback or ideas for changes. Instead of jumping in with some new re-architecture of the entire protocol, start by asking why it is the way it is. Engage the community first with a question, and work your way to change requests based on the answer you receive. By asking a question, you allow for the possibility that whatever if bugging you has a valid reason.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keep your message as short and to the point as possible.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You are an unknown so people will look for reasons to ignore your  message. Most people don&amp;#8217;t even open messages from newcomers. Instead,  they wait to see if a thread develops. In other words, they wait until  someone else puts in the extra work to deal with the new guy. If your  message is short, it is more likely not to be ignored.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Don&amp;#8217;t email the editor privately, asking for permission before asking the list.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You don&amp;#8217;t need permission to ask questions or post to the list. All the specification editors I know (and certainly me) are usually busy and work in bursts. This means your email is most likely going to be moved to some queue of questions and feedback about the specification, to be processed right before the next editorial cycle. You are also wasting their time by forcing them to read your message twice (once directly and once on the list), and in many cases, repeat the discussion. This is why we have a public list &amp;#8211; just join and post away.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Don&amp;#8217;t prefix your message with I&amp;#8217;m new here.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s never a good idea to start a relationship with an excuse. The only reason to put an &amp;#8220;I&amp;#8217;m new here&amp;#8221; disclaimer on your message is if you were too lazy to do your homework, read group archives, read the full specification (and revision history), and think before writing. If you do all that, your contribution is as valid and relevant as that of anyone else. The working group regulars know you are new.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Focus on what you know best.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pick an area where you have experience and provide feedback to show you know what you are talking about. Don&amp;#8217;t start with a multi-page review of the entire specification. Instead, focus on the areas you are most knowledgeable about and demonstrate your skills and experience through the quality of your contribution. Don&amp;#8217;t provide a summary of your career &amp;#8211; saying you have many years of experience is the least effective way to get that message across. Let you work speak for itself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Never start with an editorial suggestion.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Editors like to write, and they take pride in their work. They also have their own unique voice. Starting a relationship with a specification editor by criticizing their style is not a good way to get them to listen. Typos, mistakes, and other technical issues with the specification are always welcomed, but offering replacement text or ideas on how to say something differently will most likely be ignored, no matter how good the suggestions are. Wait for an editor to ask you to suggest text before sending in your own revision.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Start with a compliment, show good progress.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pick something you think is good about the work, and highlight it. This isn&amp;#8217;t rocket science, just common sense. Don&amp;#8217;t compliment any one person in particular (like the editor or chair). Compliment the work and the community and do it in a way that adds value, like highlighting what is strong and good about the work, providing additional support.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Clearly state your role and introduce yourself.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Spend a few words to introduce yourself the first time you write something. Don&amp;#8217;t just barge in &amp;#8211; it&amp;#8217;s rude. Also, standards are highly political, and in a political environment, people want to know who they are dealing with. No need for life story, just the basic facts (lurker, developer, representative for a big company). And don&amp;#8217;t assume everyone know who you are just because you think you are important.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do your political homework.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Identify the key participants and align yourself with those you agree with, showing you are well versed in the internal politics. Joining the discussion through agreement with a primary participant allows you to establish a work relationship with those most likely to be in a position to listen and impact. Agreeing with someone is usually better than disagreeing &amp;#8211; it adds emphasis to an existing view, and doesn&amp;#8217;t cost you political points going directly against someone else.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Make sure to be right if you are going to keep a thread going.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you are going to stand your ground and keep an argument going, against the group consensus, make sure you know what you are talking about. It is perfectly fine to keep an issue going if you are unhappy with the resolution, but if you are new, this behavior is more likely to alienate the group than win your argument. If you are going to keep at it, make sure to add new facts and new examples to make your point.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Don&amp;#8217;t explain basic standards principals.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Assume everyone knows what bike-shedding, design by committee, or KISS are. Don&amp;#8217;t lecture the working group about process and other philosophical ideals. For most of the people involved, this is probably not the first standard.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Don&amp;#8217;t prefix more messages with &amp;#8220;I&amp;#8217;m still new here&amp;#8221;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You didn&amp;#8217;t need to state it the first time, so please don&amp;#8217;t keep  repeating you are (still) new. Yes, we got it, you are new here.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/oqemuOCuPng" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/09/how-to-enter-a-standards-working-group/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/09/how-to-enter-a-standards-working-group/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/09/how-to-enter-a-standards-working-group/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[All This Twitter OAuth Security Nonsense]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/3fObPZN5EYM/" />
		<id>http://hueniverse.com/?p=1343</id>
		<updated>2010-09-02T22:53:58Z</updated>
		<published>2010-09-02T22:49:13Z</published>
		<category scheme="http://hueniverse.com" term="OAuth" />		<summary type="html"><![CDATA[In a wordy article that could have been much shorter and a lot less sensational, Ryan Paul of ArsTechnica throws mud mostly at Twitter, but saves plenty to throw at OAuth. Unfortunately, Ryan Paul (who clearly is a smart guy) is heavy on the accusation but light on the arguments. Typically, I would go over [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/09/all-this-twitter-oauth-security-nonsense/">&lt;p&gt;In a &lt;strong&gt;wordy &lt;/strong&gt;&lt;a href="http://arstechnica.com/security/guides/2010/09/twitter-a-case-study-on-how-to-do-oauth-wrong.ars"&gt;article &lt;/a&gt;that could have been much shorter and a lot less sensational, &lt;a href="http://arstechnica.com/security/guides/2010/09/twitter-a-case-study-on-how-to-do-oauth-wrong.ars"&gt;Ryan Paul of ArsTechnica throws&lt;/a&gt; mud mostly at Twitter, but saves plenty to throw at OAuth. Unfortunately, Ryan Paul (who clearly is a smart guy) is heavy on the accusation but light on the arguments. Typically, I would go over this article an item at a time, but I’m right in the middle of draft 11 of OAuth 2.0 which is a much better use of my time. If you want to read a great rebuttal, &lt;a href="http://benlog.com/articles/2010/09/02/an-unwarranted-bashing-of-twitters-oauth/"&gt;Ben Adida&amp;#8217;s response&lt;/a&gt; (as always) is a great read.&lt;span id="more-1343"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The OAuth standard has many significant weaknesses and limitations. A number of major Web companies are collaborating through the IETF to devise an update that will fix some of the problems, but it&amp;#8217;s still largely a work in progress. The current version of the standard—OAuth 1.0a—is an inelegant hack that lacks maturity and fails to provide clear guidance on many critical issues that are essential to building a robust authentication system.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;First, the current version of the standard is &lt;a href="http://tools.ietf.org/html/rfc5849"&gt;RFC 5849&lt;/a&gt;. The RFC not only changed a lot of the terminology, highlighted the known security limitations, and has completely new prose, it also explicitly clarified at least one of the author’s issues regarding the handling of timestamps (which most companies don’t even bother to check anyway).&lt;/p&gt;
&lt;p&gt;My favorite silliness from the article, when discussing the lack of specification details about using client secrets in installed applications:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Part of the problem is that the specification doesn&amp;#8217;t provide much guidance about what implementers should do instead, which has forced them to improvise. Facebook and Google Buzz have both come up with reasonable solutions and offer desktop-appropriate OAuth authentication flows that do not require a secret key or require the end user to go through a complicated copy/paste process.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The specification is very clear (as the article quotes) – don’t use client secrets in installed applications! The reason why the specification doesn’t say much more is because there is no solution. It does not exist for a distributed application unless you issue a different secret to each installation. To say that Facebook and Google came up with reasonable solutions is pure sensationalism. What is their reasonable solution? They don’t use client secrets. In other words, they do exactly what the specification says.&lt;/p&gt;
&lt;p&gt;The article does bring up important points implementers should pay attention to when using OAuth, such as the secrecy of their client credentials, the exact details of their user experience, how they authenticate the user (cookies, etc.), and an overall awareness to phishing. But OAuth, just like other security protocols, is designed to be implemented by security experts. In addition, there are simply no widely available solutions for many of these problems.&lt;/p&gt;
&lt;p&gt;If Twitter uses the client secret in installed application for anything other than gathering statistics, well, they should &lt;strong&gt;reconsider&lt;/strong&gt;. But it’s not like they have other alternative. That’s the only valid “news” the article has to offers.&lt;/p&gt;
&lt;p&gt;It’s easy to&lt;a href="http://hueniverse.com/2010/06/xauth-a-terrible-horrible-no-good-very-bad-idea/"&gt; throw mud without getting dirty with making a fully baked technical argument&lt;/a&gt; – and it makes for a fun read too. But when it comes to a widely deployed security protocol, scoring page views by scaring readers about security is&lt;strong&gt; not fair game&lt;/strong&gt;. It is always valuable to highlight OAuth&amp;#8217;s weakness, but in context, with the right security risk analysis, and with clear comparison to other alternatives.&lt;/p&gt;
&lt;p&gt;I expect more from ArsTechnica.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/3fObPZN5EYM" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/09/all-this-twitter-oauth-security-nonsense/#comments" thr:count="7" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/09/all-this-twitter-oauth-security-nonsense/feed/atom/" thr:count="7" />
		<thr:total>7</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/09/all-this-twitter-oauth-security-nonsense/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Will Meyer</name>
						<uri>http://www.willmeyer.com/</uri>
					</author>
		<title type="html"><![CDATA[An Introduction to OExchange]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/XKL0mV7WSck/" />
		<id>http://hueniverse.com/?p=1329</id>
		<updated>2010-06-10T06:19:05Z</updated>
		<published>2010-06-10T06:19:05Z</published>
		<category scheme="http://hueniverse.com" term="Discovery" /><category scheme="http://hueniverse.com" term="Guest Writer" /><category scheme="http://hueniverse.com" term="WebFinger" /><category scheme="http://hueniverse.com" term="XRD" /><category scheme="http://hueniverse.com" term="oexchange" />		<summary type="html"><![CDATA[OExchange is a newly-introduced protocol stack that allows users to share URL-based content with any service on the web. It covers posting links to social networks as well as sending content to things like online translation and printing services. The protocol &#8212; driven by the folks at Clearspring (where I work) with the support of [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/06/an-introduction-to-oexchange/">&lt;p&gt;&lt;a href="http://hueniverse.com/wp-content/uploads/2010/06/oexchange_128x128.png"&gt;&lt;img class="alignleft size-full wp-image-1338" style="margin: 10px;" title="oexchange_128x128" src="http://hueniverse.com/wp-content/uploads/2010/06/oexchange_128x128.png" alt="" width="128" height="128" /&gt;&lt;/a&gt;&lt;strong&gt;OExchange&lt;/strong&gt; is a &lt;a href="http://techcrunch.com/2010/06/02/oexchange"&gt;newly-introduced&lt;/a&gt; protocol stack that allows users to share URL-based content with any service on the web. It covers posting links to social networks as well as sending content to things like online translation and printing services.&lt;/p&gt;
&lt;p&gt;The protocol &amp;#8212; driven by the folks at &lt;a href="http://www.clearspring.com"&gt;Clearspring&lt;/a&gt; (where I work) with the support of a long list of online services &amp;#8212; builds on several existing open web specifications.  It is backed by an open development &lt;a href="http://groups.google.com/group/oexchange"&gt;list&lt;/a&gt;, &lt;a href="http://www.oexchange.org/tools"&gt;tools&lt;/a&gt; for developers, and lots of additional &lt;a href="http://www.oexchange.org"&gt;resources&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;&lt;span id="more-1329"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Lots of services accept URL-based content — social networks, news and bookmarking sites, communication tools, long-tail forums, translation utilities — and more appear every day.  Why do blogs only allow users to share to the top few social networks?  Why can&amp;#8217;t users engage with more personal, relevant, dynamically-discovered options? Why are sharing tools and publishers still &amp;#8220;integrating&amp;#8221; with services individually?&lt;/p&gt;
&lt;p&gt;As I&amp;#8217;ve written &lt;a href="http://www.addthis.com/blog/2010/06/02/the-future-of-open-sharing-is-the-web"&gt;before&lt;/a&gt;, users should be able to send content to any of an unbounded number of services. Sharing features should dynamically adapt to support the communities of interest users actually participate in and the tools they use, whatever platforms they are built on, and whether or not they are well-known. Services should be able to receive content from anywhere, in a common way.  Basic interoperability benefits the web at large &amp;#8212; services, users, and content providers &amp;#8212; and we see a tremendous gap when it comes to simple URL exchange.&lt;/p&gt;
&lt;h3&gt;The Solution&lt;/h3&gt;
&lt;p&gt;A common protocol means more content for services, easier integration for tools, more personalization for users, and more traffic back to publishers.  OExchange defines the technical solution in three areas (take a look at the complete &lt;a href="http://www.oexchange.org/spec/"&gt;spec&lt;/a&gt; for all the gory details).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. A way for services to receive content&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Known as an &amp;#8220;Offer&amp;#8221; in OExchange terminology, this method maps onto the dominant model already deployed widely today.  Specifically, for a service to be able to accept content via OExchange, it exposes an endpoint of the form:&lt;/p&gt;
&lt;pre&gt;http://www.example.com/share.php?url=http://hueniverse.com&lt;/pre&gt;
&lt;p&gt;This endpoint (which can be located at any path) accepts a set of &lt;a href="http://www.oexchange.org/spec/#offer"&gt;standard&lt;/a&gt; arguments. Only one of these arguments, the url, is required.  Anyone can send content to this service by sending the user&amp;#8217;s browser to this endpoint.  The receiving service controls any relevant authentication as well as other aspects of the user experience &amp;#8212; the service is the one that defines what actually happens once the user sends their URL there.&lt;/p&gt;
&lt;p&gt;A common method removes any and all service-specific integration requirements &amp;#8212; all supporting services can accept content in the same way.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. A way for services to make themselves discoverable&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By building on top of the established &lt;a href="http://hueniverse.com/xrd/"&gt;XRD&lt;/a&gt; and &lt;a href="http://tools.ietf.org/html/draft-hammer-hostmeta-12"&gt;host-meta&lt;/a&gt; specifications, OExchange makes it possible to integrate with services that you, as a content publisher or sharing tool, didn&amp;#8217;t even know about at development time.&lt;/p&gt;
&lt;p&gt;A service defines everything about itself in a structured and machine-readable document format (known as the OExchange &lt;a href="http://www.oexchange.org/spec/#target-xrd"&gt;Target XRD&lt;/a&gt;), and anyone that wants to integrate with it can easily locate this document using established means (such as host-meta references).&lt;/p&gt;
&lt;p&gt;This makes it possible to determine that a service exists, and how to send content to it, dynamically as opposed through manual integration.  The full discovery flow is outlined in the &lt;a href="http://www.oexchange.org/spec/#discovery"&gt;spec&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. A decentralized, user-centric model for expressing preferred services&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We are big believers in the promise of &lt;a href="http://www.abstractioneer.org/2009/04/personal-web-discovery.html"&gt;personal discovery&lt;/a&gt;.  In OExchange, we recommend the use of &lt;a href="http://hueniverse.com/2009/08/introducing-webfinger/"&gt;WebFinger&lt;/a&gt; and, eventually, &lt;a href="http://xrdprovisioning.net/"&gt;XRD Provisioning&lt;/a&gt;, to let a user publish a set of services they actually care about, in the form of service XRD URLs.  The key idea here is that it should be possible to look up the set of link-accepting services (each expressed as machine-readable documents) appropriate for a given user.  Tools can inspect this list and present the right options to the user at runtime.&lt;/p&gt;
&lt;p&gt;Importantly, this list may include services the tool doesn&amp;#8217;t actually know about &amp;#8212; it can use the basic OExchange discovery mechanism to then figure out how to send content to this service.  For example, imagine visiting a blog and being presented with not only the option to share content to the mainstream social networking service on which you have an account, but also the long-tail service no one but you and your 5 friends has heard of.&lt;/p&gt;
&lt;h3&gt;Do we need another protocol?&lt;/h3&gt;
&lt;p&gt;There is quite an open web capability stack available at this point, and OExchange leverages established protocols extensively.  That said, there are a few things missing to accomplish certain domain-specific use-cases.  For example, though there are any number of relatively domain-specific protocols that can be used to send content from one service to another, there are none which can offer a simple interoperability layer without introducing substantial requirements on the implementor.  Its our belief that these requirements can counteract the benefit of the additional content to the service, and hamper adoption.&lt;/p&gt;
&lt;p&gt;For anything that OExchange is newly-defining, it therefore keeps the recommendations as simple as possible, and actually takes pains to map onto predeployed models.  Really, OExchange is as much a packaging of existing protocols into a specific use-case stack as it is a new protocol.&lt;/p&gt;
&lt;h3&gt;What next?&lt;/h3&gt;
&lt;p&gt;The strategy we&amp;#8217;ve taken with the specification is to first codify an existing practice and be compatible with a wide range of existing deployed services, then to add a new service discovery capability on top of that, then to expand from that point into additional protocol actions and modes.  In this vein, along with encouraging adoption and working to support the stack in the products we&amp;#8217;re all building, we&amp;#8217;re now beginning to focus in earnest on the additional capabilities.  One often-cited example is an exchange mode that can take place without popping a new browser window/tab.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re interested in getting involved in the development of the spec, please join &lt;a href="http://groups.google.com/group/oexchange"&gt;the discussion&lt;/a&gt;.  If you just want to get going on implementing it, check out the quick start &lt;a href="http://www.oexchange.org/guide"&gt;guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;re pretty excited about a more interoperable web, thanks for the chance to outline it!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/XKL0mV7WSck" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/06/an-introduction-to-oexchange/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/06/an-introduction-to-oexchange/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/06/an-introduction-to-oexchange/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[How the Open Community Can Beat Facebook]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/-eX4Be1Fcwc/" />
		<id>http://hueniverse.com/?p=1325</id>
		<updated>2010-06-08T07:38:40Z</updated>
		<published>2010-06-08T07:38:30Z</published>
		<category scheme="http://hueniverse.com" term="Open Web" />		<summary type="html"><![CDATA[Well, the open community can&#8217;t beat Facebook. But companies using open technologies can &#8211; by building better products. Outside the echo chamber of web standards fanatics, the vast majority of web users don&#8217;t care about how the web works. They care about their user experience, where their friends are, and when something goes wrong, protecting [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/06/how-the-open-community-can-beat-facebook/">&lt;p&gt;Well, the open community can&amp;#8217;t beat Facebook.&lt;/p&gt;
&lt;p&gt;But companies using open technologies can &amp;#8211; by building better products. Outside the echo chamber of web standards fanatics, the vast majority of web users don&amp;#8217;t care about how the web works. They care about their user experience, where their friends are, and when something goes wrong, protecting their privacy.&lt;/p&gt;
&lt;p&gt;When I read about Google Buzz (and other open-based products), it is repeatedly described as the open alternative to Facebook. Does this information help me (as a consumer) make a better decision about which product to use? No. That&amp;#8217;s like telling the average cell phone buyer that the difference between the iPhone and Android is that the latter uses an open source operating system. When it comes to selling phones, Google relies on their search reputation and brand, not the openness of their platform.&lt;br /&gt;
&lt;span id="more-1325"&gt;&lt;/span&gt;&lt;br /&gt;
Getting consumers to use your products, like any other retail interaction, requires offering something useful that is better than other alternatives. It is true that sometimes a backlash against one company leads consumers to switch to someone else, but they don&amp;#8217;t &amp;#8220;vote for the new guy&amp;#8221;, they &amp;#8220;vote out the old guy&amp;#8221;. If users leave Facebook to use Google, it is not a victory for Google &amp;#8211; it is a loss for Facebook.&lt;/p&gt;
&lt;p&gt;When it comes to showing the value in open technology, very few efforts can show how being open makes products better. Even if OpenID solved all its problems, &lt;a href="http://hueniverse.com/2010/06/xauth-a-terrible-horrible-no-good-very-bad-idea/"&gt;found a less offensive solution to the NASCAR problem&lt;/a&gt;, got providers certified and trusted, provided a legal framework for managing liability, educated consumers, and actually worked, it will still fail without the wealth of data offered by Facebook.&lt;/p&gt;
&lt;p&gt;Why should publishers (content and service providers) choose a solution that doesn&amp;#8217;t deliver actual consumer value?&lt;/p&gt;
&lt;p&gt;In an attempt to address this, the OpenID community has been looking for ways to compete with Facebook. The OpenID/OAuth Hybrid proposal was one approach. Adding rich profile data was another (in the &lt;a href="http://factoryjoe.com/blog/2010/01/04/openid-connect/"&gt;conceptual proposal for OpenID Connect&lt;/a&gt;). But these are all focused on enabling technologies, not products. Even if there was a complete open solution for every Facebook feature, it would still not offer a compelling value proposition because without actual data behind it, it is nothing but empty containers.&lt;/p&gt;
&lt;p&gt;If Facebook asked me, I would recommend using open technologies because it is good for business (when available and applicable). But to everyone else I would recommend focusing more on the product and less about the openness of the platform. Open is certainly a selling point in the enterprise market, but it is not in the consumer market.&lt;/p&gt;
&lt;p&gt;Two years ago the big fight was against the &amp;#8220;walled-gardens&amp;#8221; and user data, now it is about open standards. It didn&amp;#8217;t make a difference back then (users didn&amp;#8217;t care) and it won&amp;#8217;t make one now. Facebook didn&amp;#8217;t change their data policies because of what users wanted &amp;#8211; they changed it because of what publishers demanded, and the publishers asked for data, in whatever shape or form Facebook wanted to give it.&lt;/p&gt;
&lt;p&gt;The reason why the &lt;a href="http://openidconnect.com/"&gt;newly proposed OpenID Connect protocol&lt;/a&gt; is actually promising is that it focuses on mobility instead of federation. Instead of trying to build a fully distributed and federated identity framework, the proposal uses &lt;a href="http://hueniverse.com/2010/05/introducing-oauth-2-0/"&gt;OAuth 2.0&lt;/a&gt; to build vendor-specific identity solutions that are all implemented the same way. By allowing publishers to move from one compliant vendor to another, it lays the groundwork for future federation and distribution.&lt;/p&gt;
&lt;p&gt;In other words, the fact that it doesn&amp;#8217;t embrace discovery at its core, but starts with reliance on client registration and vendor specific relationship is an assets because it guarantees better products with built-in mobility. That mobility will allow publishers to take their business elsewhere if they don&amp;#8217;t get the data and services they want.&lt;/p&gt;
&lt;p&gt;Good technology enables better products. Being open is just the cherry-on-top.&lt;/p&gt;
&lt;p&gt;Then of course, there is the other option: &lt;a href="http://hueniverse.com/2010/05/open-vs-fast-good-vs-evil-google-vs-facebook/"&gt;if you can&amp;#8217;t beat them, join them&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/-eX4Be1Fcwc" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/06/how-the-open-community-can-beat-facebook/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/06/how-the-open-community-can-beat-facebook/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/06/how-the-open-community-can-beat-facebook/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[XAuth &#8211; a Terrible, Horrible, No Good, Very Bad Idea]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/jnWH4kwFr3c/" />
		<id>http://hueniverse.com/?p=1318</id>
		<updated>2010-06-08T05:27:42Z</updated>
		<published>2010-06-06T06:31:12Z</published>
		<category scheme="http://hueniverse.com" term="Open Web" /><category scheme="http://hueniverse.com" term="OpenID" /><category scheme="http://hueniverse.com" term="Social Web" />		<summary type="html"><![CDATA[A few weeks ago, a handful of web companies lead by Meebo and Google (with moral support from Yahoo!) announced their support for a new protocol called XAuth. The idea is very simple and seemingly appealing &#8211; create a sort of shared-cookie service for sites to use to store and find which identity providers a [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/06/xauth-a-terrible-horrible-no-good-very-bad-idea/">&lt;p&gt;&lt;a href="http://hueniverse.com/wp-content/uploads/2010/06/xauth.png"&gt;&lt;img class="alignright size-full wp-image-1320" title="xauth" src="http://hueniverse.com/wp-content/uploads/2010/06/xauth.png" alt="" width="188" height="306" /&gt;&lt;/a&gt;A few weeks ago, a handful of web companies lead by Meebo and Google (with moral support from Yahoo!) &lt;a href="http://googlesocialweb.blogspot.com/2010/04/simplifying-social-web-with-xauth.html"&gt;announced their support&lt;/a&gt; for a new protocol called &lt;a href="http://xauth.org/info/"&gt;XAuth&lt;/a&gt;. The idea is very simple and seemingly appealing &amp;#8211; create a sort of shared-cookie service for sites to use to store and find which identity providers a user prefers, solving the &lt;a href="http://factoryjoe.com/blog/2009/04/06/does-openid-need-to-be-hard/"&gt;OpenID NASCAR problem&lt;/a&gt;. It is a similar idea to existing commercial products such as &lt;a href="http://www.janrain.com/products/rpx"&gt;JanRain&amp;#8217;s RPX&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve heard about this proposal a few months ago and have been rolling my eyes ever since. Why? Because this is &amp;#8211; to borrow from one of my son&amp;#8217;s &lt;a href="http://www.amazon.com/Alexander-Terrible-Horrible-Good-Very/dp/0689300727"&gt;favorite book&lt;/a&gt; &amp;#8211; &lt;strong&gt;a terrible, horrible, no good, very bad idea&lt;/strong&gt;. It is a dangerous and over simplified hack aimed at solving a complex problem &amp;#8211; how to manage online identities and improve the usability of distributed identity providers.&lt;br /&gt;
&lt;span id="more-1318"&gt;&lt;/span&gt;&lt;br /&gt;
The &lt;a href="http://xauth.org/spec/"&gt;XAuth proposal&lt;/a&gt; is a privacy and security nightmare. It relies on the use of a single, shared domain name which is currently &lt;a href="http://www.networksolutions.com/whois-search/xauth.org"&gt;under the control of one company &amp;#8211; Meebo&lt;/a&gt;. While I have nothing against Meebo, other than proposing and promoting this, I certainly don&amp;#8217;t trust it to manage the web&amp;#8217;s identity preference layer. I heard suggestions of handing control over to the OpenID Foundation, but I don&amp;#8217;t trust it either. If it is controlled by a single entity, it fails the most basic test of distributed identity services.&lt;/p&gt;
&lt;p&gt;In addition, XAuth is a cookie-like mechanism that suffers from all the same problems, and as such, is an easy target for abuse and manipulation. And guess what &amp;#8211; it is an &lt;a href="http://xauth.org/"&gt;opt-out mechanism&lt;/a&gt; per browser.&lt;/p&gt;
&lt;p&gt;This is a misguided attempt to solve a problem browser vendors have failed to address. It is true that getting browser vendors to care about identity and innovate in the space is a huge challenge, but solving it with a server-hosted, centralized solution goes against everything the distributed identity movement has tried to accomplish over the past few years.&lt;/p&gt;
&lt;p&gt;As for the name, I resent the association between XAuth and the OAuth brand, using a cloned logo and a very confusing name. This is especially true considering it has nothing to do with OAuth, and everything to do with OpenID. And by the way, the name is &lt;a href="http://en.wikipedia.org/wiki/X_Window_authorization"&gt;already taken&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amazon.com/Alexander-Terrible-Horrible-Good-Very/dp/0689300727"&gt;I think I&amp;#8217;ll move to Australia.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: This post &lt;a href="http://www.abstractioneer.org/2010/06/xauth-is-lot-like-democracy.html"&gt;sparked a response&lt;/a&gt; from Google&amp;#8217;s John Panzer (someone I highly respect, and respectfully disagree with) as well as an &lt;a href="http://lists.openid.net/pipermail/openid-specs/2010-June/thread.html"&gt;interesting thread on the OpenID list&lt;/a&gt;. A couple quotes I complete agree with:&lt;/p&gt;
&lt;p&gt;From &lt;a href="http://lists.openid.net/pipermail/openid-specs/2010-June/007166.html"&gt;Peter Watkins&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The current XAuth implementation has sites using IFRAME elements to access the XAuth service/JS code. Web browsers send Referer headers with IFRAME, so whoever runs xauth.org is in a position to see information about what Extender and Receiver sites a user accesses. Currently auth.org has pretty good settings &amp;#8212; cache control headers telling browsers they can cache the page for a week. But that could change. Move responsibility into the browser and that problem is solved.&lt;/p&gt;
&lt;p&gt;Also, xauth.org could start delivering JS code that reports information to the xauth.org mothership in addition to simply &amp;#8220;working&amp;#8221;. Say the local government tries to compel xauth.org to deliver additional code to specific IP addresses (not that Google has *ever* had any trouble with any government legal pressure, right?). xauth.org could deliver pristine, trustworthy JS to everyone else. How would the government targets, let&amp;#8217;s say political activists maybe, be able to tell their privacy was being subverted? Move the function to the browser and that hole is closed.&lt;/p&gt;
&lt;p&gt;This is by no means a comprehensive list (shoot, it&amp;#8217;s been less than 24 hours since I startd reading up on XAuth), but I think it&amp;#8217;s enough that you can&amp;#8217;t say there are no privacy issues that going to an in-browser model would solve no privacy issues.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;From &lt;a href="http://lists.openid.net/pipermail/openid-specs/2010-June/007169.html"&gt;Philip Hallam-Baker&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;As often happens in these debates, we have a proposal that has an acknowledged issue that we are being told isn&amp;#8217;t an issue because the developers don&amp;#8217;t see it as an issue.&lt;/p&gt;
&lt;p&gt;I really take offense when I raise an issue and someone says &amp;#8216;that does not matter to anyone&amp;#8217; or &amp;#8216;that issue has been dealt with&amp;#8217;. The one issue that I have never found it difficult to get the industry to agree on is the necessity of ensuring that no party gains a proprietary leverage in a communication protocol.&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t see how the promise that the issue will be fixed in future changes anything. Either the centralization is easy to eliminate from the protocol or it isn&amp;#8217;t. And if it is easy to eliminate then why introduce it in the first place?&lt;/p&gt;
&lt;p&gt;The starting point for identity in my view is that I have to entirely own my name. There cannot be any entity that can use the investment I make in my name to extract rent at a future date. No corporation, no not-for-profit, no non-profit, no industry group. Nothing.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;(Image adapted from the book &amp;#8220;Alexander and the Terrible, Horrible, No Good, Very Bad Day&amp;#8221; by Judith Viorst, illustrated by Ray Cruz.)&lt;/em&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/jnWH4kwFr3c" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/06/xauth-a-terrible-horrible-no-good-very-bad-idea/#comments" thr:count="18" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/06/xauth-a-terrible-horrible-no-good-very-bad-idea/feed/atom/" thr:count="18" />
		<thr:total>18</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/06/xauth-a-terrible-horrible-no-good-very-bad-idea/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[Open vs. Fast, Good vs. Evil, Google vs. Facebook]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/mYJCnph-jsU/" />
		<id>http://hueniverse.com/?p=1315</id>
		<updated>2010-05-28T18:34:02Z</updated>
		<published>2010-05-28T18:34:02Z</published>
		<category scheme="http://hueniverse.com" term="Open Web" /><category scheme="http://hueniverse.com" term="Social Web" />		<summary type="html"><![CDATA[The landscape of the community-engineered social web, the one based on open technologies, has changed dramatically over the past few months. If you took a year off and just came back, you would probably not recognize it at all. The movement that started with protocols such as OpenID, OAuth, and Activity Streams, is now mostly [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/05/open-vs-fast-good-vs-evil-google-vs-facebook/">&lt;p&gt;The landscape of the community-engineered social web, the one based on open technologies, has changed dramatically over the past few months. If you took a year off and just came back, you would probably not recognize it at all.&lt;/p&gt;
&lt;p&gt;The movement that started with protocols such as OpenID, OAuth, and Activity Streams, is now mostly gone. All the cool kids got grownup jobs and the market is back again driven by a small number of corporations. In fact, it is so small it can be counted on two fingers. A year ago, a meeting with Chris Messina, David Recordon, Joseph Smarr, Monica Keller, Will Norris, Luke Shepard, and John Panzer represented 7 different organizations or communities &amp;#8211; a well-balanced mix of big and small, corporate and independent.&lt;/p&gt;
&lt;p&gt;Today it&amp;#8217;s just Facebook and Google and that has significant implications. But when examining how these two companies engage in the development of open technologies, the findings are quite surprising. On the product side, Google is famous for their openness while Facebook is notorious for their closed garden. But when it comes to their community engagement, these two giants behave in a rather reverse fashion.&lt;br /&gt;
&lt;span id="more-1315"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;Open technology is slow by definition&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s assuming you accept my definition of Open Technology:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span&gt;Developed in the open with full transparency&lt;br /&gt;
Open process for anyone to participate freely&lt;br /&gt;
Everyone is free to implement&lt;br /&gt;
Decisions are made based on technical merit&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Open technology doesn&amp;#8217;t have to happen in a standards body or format open source organization, but important work usually does; because if it&amp;#8217;s important, there are simply too many people collaborating to be successful without a well-defined process and governance. Successful open technology acts very much like a proprietary one &amp;#8211; they both tend to block or delay new innovation. As soon as something becomes successful, it poses high risk to those absent from the process.&lt;/p&gt;
&lt;p&gt;OAuth 1.0 created a myth that it is possible to develop open technology fast. But in reality, &lt;a href="http://hueniverse.com/oauth/guide/history/"&gt;OAuth 1.0 took a little over a year&lt;/a&gt;, and that&amp;#8217;s with a tiny, well-aligned group of people almost exclusively from one town, with very little at stake. The numbers are even less impressive if you include getting to revision A as part of the 1.0 lifecycle.&lt;/p&gt;
&lt;p&gt;OpenID had a very similar experience where version 1.0 (really 1.1) took little time (mostly created by two people) while version 2.0 took a very long time. Deciding what the next version of OpenID looks like seems to take even longer.&lt;/p&gt;
&lt;p&gt;Two years ago I was one of the leaders of this movement. It was the main driving force behind creating the &lt;a href="http://hueniverse.com/2009/03/explaining-the-open-web-foundation-why-a-new-process/"&gt;Open Web Foundation&lt;/a&gt; (i.e. a &lt;a href="http://hueniverse.com/2009/03/explaining-the-open-web-foundation-new-kind-of-legal-framework/"&gt;lightweight legal framework&lt;/a&gt; suited for small, community driven projects). The problem with this approach is that it ignores why and how companies develop open technology, and the real reasons why it takes time.&lt;/p&gt;
&lt;p&gt;People new to standards like to accuse the excessive process and legal framework for the time it takes to produce a standard. But this argument is simply not grounded in reality. For example, XRD 1.0 which is quickly becoming one of the building blocks of the social web took over 2 years to mature from XRDS through XRDS-Simple to XRD. During those 2 plus years, the OASIS process (where the work was done) did not slow us down by more than a week or two. What slowed XRD&amp;#8217;s development was lack of feedback, review, and editorial time. But even these factors were not the primary reason.&lt;/p&gt;
&lt;p&gt;There are two reasons why specifications take time: building consensus and reaching maturity. Consensus time is usually a function of the group size. The bigger the group the longer it takes. Maturity however, is a function of taking intentional breaks during the process to let the technology sink in, and allow time for experimentation. Maturity is what differentiates a useful technology from an essential one.&lt;/p&gt;
&lt;p&gt;If I listened to the many calls to get XRDS-Simple done two years ago because people wanted to ship stuff &amp;#8220;&lt;strong&gt;now&lt;/strong&gt;&amp;#8220;, we would have ended with broken discovery architecture and a complex format that no one really needed. On occasion, these demands for finalizing specifications took the form of subtle threats to develop competing proposals. Getting the right people to read specifications takes time, and it often means waiting for the use cases to catch up with the vision.&lt;/p&gt;
&lt;p&gt;If you compare the &lt;a href="http://hueniverse.com/2009/11/host-meta-aka-site-meta-and-well-known-uris/"&gt;initial proposal of site-meta&lt;/a&gt; with the final &lt;a href="http://hueniverse.com/2010/04/rfc-5785-defining-well-known-uris/"&gt;RFC for Well-Known URIs&lt;/a&gt;, you immediately notice a remarkable transformation which was the result of a yearlong discussion and collaboration across three standards bodies. My discovery work follows the same pattern, from the initial OAuth Discovery work to the current, much simplified host-meta proposal (and the retirement of the LRDD stand-alone specification).&lt;/p&gt;
&lt;p&gt;Like anything else, early adopters have to accommodate this reality, and it can often lead to frustration. The Open Web Foundation is one example for how this frustration with standards bodies materialized into an (&lt;a href="http://hueniverse.com/2009/12/whats-in-a-name-that-which-we-call-the-open-web-foundation/"&gt;unsuccessful&lt;/a&gt;) attempt to create a whole new framework. While the foundation was very successful in creating a useful legal license, it was not significant enough to get new technology out faster. Ironically, it made it much easier for companies to develop new technologies internally, the open them up when done.&lt;/p&gt;
&lt;p&gt;In order to understand the forces that drive the development of open technologies, we must first examine how companies address these issues. There are generally three categories of companies when it comes to interaction with open technology: &lt;em&gt;&lt;strong&gt;conservative, agile, and delayed-open&lt;/strong&gt;&lt;/em&gt;. It is important to understand that these categories are specific to how companies interact with open technology, and are not an indication of how the interact in the marketplace.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Traditional &lt;/strong&gt;&lt;/em&gt;companies are rarely first to adopt new technology, wait for final versions before implementing, and actively participates only when a specification takes a wrong turn. They are usually absent from the process or lurk around, but engage with some form of indirect support (such as sponsoring events or supporting the community). Traditional companies tend to focus on building business relationships with other similar companies and establish back-channel alignment, which enables them to let others represent their interests.  Yahoo! and Twitter are good examples of traditional companies.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Agile &lt;/strong&gt;&lt;/em&gt;companies live on the cutting edge, deploying early drafts and are not afraid to change quickly. They are usually very hands on, often leading the development efforts, and maintain some level of control over the process, which helps reduce risk by having better understanding of the proposal&amp;#8217;s stability. Agile companies are usually very small where being agile provides a necessary edge, or very big where they can afford to take more risk and experiment because of their market dominance. Facebook and (the now defunct) Pownce are good examples of agile companies.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Delayed-open&lt;/strong&gt;&lt;/em&gt; companies are very selective in what they choose to participate in, and are rarely involved in efforts they do not control. The basic strategy of delayed-open companies is to develop as much as possible internally and confidentially. They only share their work when they are ready to ship a product or when they are confident in the stability of the technology. While these technologies end up being open (typically by opening their development to final enhancements, or by contributing them to a standards body), by the time they are opened up, very little can really change. Google and Microsoft are good examples of delayed-open companies.&lt;/p&gt;
&lt;p&gt;Companies looking to engage in the development and utilization of open technologies must find the right balance that fits their culture and market needs. Google and Facebook provide important case studies on how companies approach open technology from opposite ends of a given market. When it comes to social web applications, Facebook is the undisputed market leader, while Google is one of the (hardest trying but) least successful players.&lt;/p&gt;
&lt;p&gt;Both companies recently made high profile hiring moves, grabbing every free-agent open technologist in the space. Facebook hired David Recordon and Monica Keller (joining Luke Shepard and others), while Google hired Chris Messina, Joseph Smarr, and Willl Noris (joining John Panzer, Brad Fitzpatrick, and others). But their reasons for doing so are fundamentally different, dictated by their involvement category.&lt;/p&gt;
&lt;p&gt;Facebook, with time on their side, hired people to help open up their technology and use their market dominance to influence and lead new efforts. Their position allowed them to deploy an early draft of OAuth 2.0 in a highly publicized fashion, and to promise keeping their production code up to date as the specification matures. To accomplish that, their engineers engaged early and intensely, contributing the first draft and running code. The more Facebook invests in open technologies, the longer it takes these technologies to mature (due to their sudden importance and popularity), but with a higher likelihood of maturity.&lt;/p&gt;
&lt;p&gt;Google on the other hand, hired top caliber talent for very different reasons. Google is significantly behind Facebook and cannot afford to take years (or even months) for new technologies to mature. They need to build products and ship them quickly, and that requires much more control than is available in open development. By hiring highly respected individuals like Chris Messina and Joseph Smarr, Google is hoping to get away with doing more work delayed-open. Salmon, PubSubHubbub, WRAP, and their OpenID extensions are all examples of past technologies developed successfully using this method.&lt;/p&gt;
&lt;p&gt;While Facebook shipped an early draft of OAuth 2.0, Google shipped WRAP. Both promised to ship the final OAuth 2.0 protocol.&lt;/p&gt;
&lt;p&gt;It is hard to say which category ends up making the biggest contribution to the development of open technologies. Google is clearly a leader in adopting open technology in general, but the way in which they get comfortable doing so isn’t always the most open or polite. Google&amp;#8217;s style helps get more free technology faster, but it also makes is much harder for other companies to participate when the foundation is established. Google is leading an Open war, and in war, there are often innocent casualties.&lt;/p&gt;
&lt;p&gt;There is a direct correlation between a company&amp;#8217;s ability to control the process and their embrace of the technology. Facebook came in late to the WRAP party, leading them to favor the (at the time) less prominent and less successful OAuth 2.0 effort at the IETF (while Google did their very best to derail the IETF effort). In the same spirit, Google&amp;#8217;s bear hug of HTML5 came only after they guaranteed their strong control over the process by hiring the specification editor (for the sole purpose of getting HTML5 done fast).&lt;/p&gt;
&lt;p&gt;The manifestation of these two approaches is sometimes ironic. Facebook who is not known for their embrace of open protocols and technology, is the one enabling open communities to take their time and spend a little longer to get the details right. On the other hand, Google who is considered the biggest champion of openness is doing their best to push efforts to a quick conclusion, strongly aligned with their immediate needs.&lt;/p&gt;
&lt;p&gt;While this analysis includes a slight bias in favor of the contribution of agile companies, delayed-open companies play an important role in creating alternatives, not possible by purely open means alone. Facebook only turned the page and joined the open community when it felt the open community no longer posed a threat to their dominance, and their behavior depends greatly on the individuals leading the effort. The Facebook influence at the hands of David Recordon (who at this point is by far the most influential voice in advocating open technologies) is an extremely constructive force. However, it is clear that without Google chasing their tail and portraying them as closed, Facebook will be much less motivated to open up.&lt;/p&gt;
&lt;p&gt;It is also important to remember the significant contribution of traditional companies. They provide the final seal of approval for new technologies and are the key to mass adoption. They are also critical in getting enough community sponsorship to allow work to continue.&lt;/p&gt;
&lt;p&gt;At the end we rely on a few individuals to do the right thing. On the Google side, we rely on people like Chris Messina and Joseph Smarr to know where to draw the line between delayed-open and fully-open. Because delayed-open leave very little for the community at large to influence, they must find the right balance between pragmatic time-to-market and forcing their own ideas on the rest of us. When Chris and Joseph joined Google, I &lt;a href="http://www.readwriteweb.com/archives/how_chris_messina_got_a_job_at_google.php"&gt;predicted exactly this kind of shift&lt;/a&gt;. I have confidence that their work will continue to be innovative and inspiring, but the silence and disengagement coming from the Google team over the past six months is a real cause for concern.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/mYJCnph-jsU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/05/open-vs-fast-good-vs-evil-google-vs-facebook/#comments" thr:count="6" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/05/open-vs-fast-good-vs-evil-google-vs-facebook/feed/atom/" thr:count="6" />
		<thr:total>6</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/05/open-vs-fast-good-vs-evil-google-vs-facebook/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[Introducing OAuth 2.0]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/tcIZROyNnNs/" />
		<id>http://hueniverse.com/?p=1303</id>
		<updated>2010-05-15T07:13:43Z</updated>
		<published>2010-05-15T07:06:38Z</published>
		<category scheme="http://hueniverse.com" term="OAuth" />		<summary type="html"><![CDATA[Two weeks ago, the IETF OAuth Working Group published the first draft of the OAuth 2.0 protocol. OAuth is a security protocol that enables users to grant third-party access to their web resources without sharing their passwords. OAuth 1.0 was published in December 2007 and quickly become the industry standard for web-based access delegation. A [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/05/introducing-oauth-2-0/">&lt;p&gt;&lt;a href="http://hueniverse.com/wp-content/uploads/2010/05/OAuth2.png"&gt;&lt;img class="size-full wp-image-1305 alignright" style="margin: 10px;" title="OAuth2" src="http://hueniverse.com/wp-content/uploads/2010/05/OAuth2.png" alt="" width="223" height="223" /&gt;&lt;/a&gt;Two weeks ago, the &lt;a href="http://tools.ietf.org/wg/oauth/"&gt;IETF OAuth Working Group&lt;/a&gt; published the first draft of the &lt;a href="http://tools.ietf.org/html/draft-ietf-oauth-v2"&gt;OAuth 2.0 protocol&lt;/a&gt;. OAuth is a security protocol that enables users to grant third-party access to their web resources without sharing their passwords. &lt;a href="http://oauth.net/core/1.0"&gt;OAuth 1.0&lt;/a&gt; was published in December 2007 and quickly become the industry standard for web-based access delegation. A minor revision (&lt;a href="http://oauth.net/core/1.0a"&gt;OAuth 1.0 Revision A&lt;/a&gt;) was published in June 2008 to fix a security hole. In April 2010, OAuth 1.0 was published as &lt;a href="http://tools.ietf.org/html/rfc5849"&gt;RFC 5849&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OAuth 2.0 is a completely new protocol&lt;/strong&gt; and is not backwards compatible with previous versions. However, it retains the overall architecture and approach established by the previous versions, and the same introduction (from the Official Guide to OAuth 1.0) still very much applies.&lt;span id="more-1303"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Many luxury cars come with a valet key. It is a special key you give the parking attendant and unlike your regular key, will only allow the car to be driven a short distance while blocking access to the trunk and the onboard cell phone. Regardless of the restrictions the valet key imposes, the idea is very clever. You give someone limited access to your car with a special key, while using another key to unlock everything else.&lt;/p&gt;
&lt;p&gt;As the web grows, more and more sites rely on distributed services and cloud computing: a photo lab printing your Flickr photos, a social network using your Google address book to look for friends, or a third-party application utilizing APIs from multiple services.&lt;/p&gt;
&lt;p&gt;The problem is, in order for these applications to access user data on other sites, they ask for usernames and passwords. Not only does this require exposing user passwords to someone else – often the same passwords used for online banking and other sites – it also provide these application unlimited access to do as they wish. They can do anything, including changing the passwords and lock users out.&lt;/p&gt;
&lt;p&gt;OAuth provides a method for users to grant third-party access to their resources without sharing their passwords. It also provides a way to grant limited access (in scope, duration, etc.).&lt;/p&gt;
&lt;p&gt;For example, a web user (resource owner) can grant a printing service (client) access to her private photos stored at a photo sharing service (server), without sharing her username and password with the printing service.  Instead, she authenticates directly with the photo sharing service which issues the printing service delegation-specific credentials.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The &lt;a href="http://tools.ietf.org/html/draft-ietf-oauth-v2"&gt;new draft&lt;/a&gt; represents a yearlong &lt;a href="http://www.ietf.org/mail-archive/web/oauth/current/maillist.html"&gt;discussion&lt;/a&gt; around &lt;a href="http://hueniverse.com/2009/11/planning-for-oauth-2-0/"&gt;goals and requirements&lt;/a&gt; for the protocol with participants from a wide range of companies including Yahoo!, Facebook, Salesforce, Microsoft, Twitter, Deutsche Telekom, Intuit, Mozilla, and Google. OAuth has long been the poster-child of rapid open technology adoption, and 2.0 is no exception &amp;#8211; Facebook and Twitter already announced support even before the first draft was officially published.&lt;/p&gt;
&lt;h3&gt;Why a New Version?&lt;/h3&gt;
&lt;p&gt;OAuth 1.0 was largely based on two existing proprietary protocols: Flickr&amp;#8217;s API Auth and Google&amp;#8217;s AuthSub. The result represented the best solution based on actual implementation experience. With over 3 years of experience working with the protocol, the community learned enough to rethink and improve the protocol in three main areas where OAuth 1.0 proved limited or confusing:&lt;/p&gt;
&lt;h4&gt;Authentication and Signatures&lt;/h4&gt;
&lt;p&gt;The majority of failed OAuth 1.0 implementation attempts are caused by the complexity of the cryptographic requirements of the specification. The fact that the original specification was poorly written didn’t help, but even with the newly published &lt;a href="http://tools.ietf.org/html/rfc5849"&gt;RFC 5849&lt;/a&gt;, OAuth 1.0 is still not trivial to use on the client side. The convenient and ease offered by simply using passwords is sorely missing in OAuth.&lt;/p&gt;
&lt;p&gt;For example, developers can quickly write Twitter scripts to do useful things by using their username and password. With the move to OAuth, these developers are now forced to find, install, and configure libraries in order to accomplish what was before possible with a single line of &lt;a href="http://curl.haxx.se/"&gt;cURL&lt;/a&gt; script.&lt;/p&gt;
&lt;h4&gt;User Experience and Alternative Token Issuance Options&lt;/h4&gt;
&lt;p&gt;OAuth includes two main parts: obtaining a token by asking the user to grant access, and using tokens to access protected resources. The methods for obtaining an access token are called &lt;strong&gt;flows&lt;/strong&gt;. OAuth 1.0 started out with 3 flows: web-based applications, desktop clients, and mobile or limited devices. However, as the specification evolved, the three flows were merged into one which (on paper) enabled all three client types. In practice, the flow works fine for web-based applications but provides an inferior experience elsewhere.&lt;/p&gt;
&lt;p&gt;As more sites started using OAuth, especially Twitter, developers realized that the single flow offered by OAuth was &lt;a href="http://hueniverse.com/2009/02/beyond-the-oauth-web-redirection-flow/"&gt;very limited and often produced poor user experiences&lt;/a&gt;. On the other hand, Facebook Connect offered a richer set of flows suitable for web applications, mobile devices, and game consoles.&lt;/p&gt;
&lt;h4&gt;Performance at Scale&lt;/h4&gt;
&lt;p&gt;As large providers started using OAuth, the community realized that the protocol does not scale well. It requires state management across different steps, temporary credentials which are more often than not discarded unused, and typically requires issuing long lasting credentials which are less secure and harder to manage (and synchronize across data centers).&lt;/p&gt;
&lt;p&gt;In addition, OAuth 1.0 requires that the protected resources endpoints have access to the client credentials in order to validate the request. This breaks the typical architecture of most large providers in which a centralized authorization server is used for issuing credentials, and a separate server is used for API calls. OAuth 1.0 requires the use of both set of credentials: the client credentials and the token credentials which makes this separation very hard.&lt;/p&gt;
&lt;h3&gt;So What&amp;#8217;s New?&lt;/h3&gt;
&lt;p&gt;The following is a subset of the new features available in OAuth 2.0:&lt;/p&gt;
&lt;h4&gt;6 New Flows&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;User-Agent Flow&lt;/strong&gt; &amp;#8211; for clients running inside a user-agent (typically a web browser).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web Server Flow&lt;/strong&gt; &amp;#8211; for clients that are part of a web server application, accessible via HTTP requests. This is a simpler version of the flow provided by OAuth 1.0.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Device Flow&lt;/strong&gt; &amp;#8211; suitable for clients executing on limited devices, but where the end-user has separate access to a browser on another computer or device.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Username and Password Flow&lt;/strong&gt; &amp;#8211; used in cases where the user trusts the client to handle its credentials but it is still undesirable for the client to store the user&amp;#8217;s username and password.  This flow is only suitable when there is a high degree of trust between the user and the client.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Client Credentials Flow&lt;/strong&gt; &amp;#8211; the client uses its credentials to obtain an access token. This flow supports what is known as the 2-legged scenario.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Assertion Flow&lt;/strong&gt; &amp;#8211; the client presents an assertion such as a SAML assertion to the authorization server in exchange for an access token.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Native application support (applications running on a desktop or mobile device) can be implemented using many of the flows above.&lt;/p&gt;
&lt;h4&gt;Bearer tokens&lt;/h4&gt;
&lt;p&gt;OAuth 2.0 provides a cryptography-free option for authentication which is based on existing cookie authentication architecture. Instead of sending signed requests using HMAC and token secrets, the token itself is used as a secret sent over HTTPS. This allows making API calls using cURL and other simple scripting tools without having to canonicalize the request and sign it.&lt;/p&gt;
&lt;h4&gt;Simplified signatures&lt;/h4&gt;
&lt;p&gt;Signature support has been significantly simplified to remove the need for special parsing, encoding, and sorting of parameters. It also uses a single secret instead of two.&lt;/p&gt;
&lt;h4&gt;Short-lived tokens with Long-lived authorizations&lt;/h4&gt;
&lt;p&gt;Instead of issuing a long lasting token (typically good for a year or unlimited lifetime), the server can issues a short-lived access token and a long lived refresh token. This allows clienta to obtain a new access token without having to involve the user again, but keeps access tokens limited. This feature was adopted from Yahoo!’s BBAuth protocol and later its OAuth 1.0 Session Extension.&lt;/p&gt;
&lt;h4&gt;Separation of Roles&lt;/h4&gt;
&lt;p&gt;OAuth 2.0 separates the role of the authorization server responsible for obtaining user authorization and issuing tokens from that of the resource server handling API calls.&lt;/p&gt;
&lt;h3&gt;When is it coming out?&lt;/h3&gt;
&lt;p&gt;OAuth 2.0 is currently in development by the &lt;a href="http://tools.ietf.org/wg/oauth/"&gt;IETF OAuth Working Group&lt;/a&gt;. The &lt;a href="http://tools.ietf.org/html/draft-ietf-oauth-v2"&gt;latest draft&lt;/a&gt; is considered stable but with many features being changed or added. Partial support is already available from Facebook and Twitter. The final specification is expected by the end of the year.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/tcIZROyNnNs" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/05/introducing-oauth-2-0/#comments" thr:count="14" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/05/introducing-oauth-2-0/feed/atom/" thr:count="14" />
		<thr:total>14</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/05/introducing-oauth-2-0/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[JRD, the Other Resource Descriptor]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/byLljp_5Qis/" />
		<id>http://hueniverse.com/?p=1282</id>
		<updated>2010-05-24T23:21:54Z</updated>
		<published>2010-05-14T07:39:55Z</published>
		<category scheme="http://hueniverse.com" term="XRD" />		<summary type="html"><![CDATA[(Yes, that was a LRDD-inspired pun.) XRD 1.0 is the result of 5 years of community development and actual deployment experience. It represents the most concise, yet extensible way to describe web resources using well understood constructs such as links. It uses XML as its extensible backbone, enabling protocols to extend pretty much every element [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/05/jrd-the-other-resource-descriptor/">&lt;p&gt;&lt;a href="http://hueniverse.com/wp-content/uploads/2010/05/jrd.png"&gt;&lt;img class="alignright size-full wp-image-1294" title="jrd" src="http://hueniverse.com/wp-content/uploads/2010/05/jrd.png" alt="" width="253" height="85" /&gt;&lt;/a&gt;(Yes, that was a &lt;a href="http://tools.ietf.org/html/draft-hammer-discovery"&gt;LRDD&lt;/a&gt;-inspired pun.)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hueniverse.com/xrd/"&gt;XRD 1.0&lt;/a&gt; is the result of 5 years of community development and actual deployment experience. It represents the most concise, yet extensible way to describe web resources using well understood constructs such as links. It uses XML as its extensible backbone, enabling protocols to extend pretty much every element as needed. For a long time, XML was the source of XRD&amp;#8217;s (and its predecessor, XRDS&amp;#8217;s) extensibility.&lt;span id="more-1282"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;But XML is no longer what puts the &amp;#8216;X&amp;#8217; in XRD. XRD utilizes the &lt;a href="http://tools.ietf.org/html/draft-nottingham-http-link-header"&gt;Web Linking&lt;/a&gt; framework for accomplishing cross-format interoperability of link relation types, as well as URI-namespaced key-value properties (for both the resource properties and links). XRD 1.0 is extensible without having to define new elements or attributes. It is accomplished simply by using its &amp;lt;Link&amp;gt; and &amp;lt;Property&amp;gt; elements as-is.&lt;/p&gt;
&lt;p&gt;There might be cases where protocols will want to extend the schema, and that is where the XML foundation comes in handy. In addition, XML provides a mechanism for digital signature (which has as many critics as fans), and a clean way to add new elements without name collisions.&lt;/p&gt;
&lt;p&gt;However, XML is a heavy format, and is no longer the format of choice in many new web protocols. &lt;a href="http://json.org/"&gt;JSON&lt;/a&gt;, a simple but powerful serialization format is getting more and more popular. OAuth 2.0 is likely to support JSON, following its adoption by popular services such as Twitter and Facebook as the default format of their APIs.&lt;/p&gt;
&lt;h3&gt;Introducing JRD&lt;/h3&gt;
&lt;p&gt;JRD, pronounced &amp;#8220;Jared&amp;#8221; and stands for JSON Resource Descriptor, is a JSON-formatted XRD document. It takes the XRD schema and converts it to a JSON structure, giving up some XML-based features, but gaining simplicity and adaptability to JSON-centric protocols and applications. JRD is based on a few simple rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XRD is the canonical representation; JRD is meant as an alternative format offered in addition to XRD.&lt;/li&gt;
&lt;li&gt;JRD does not include support for new extension objects (XRD elements); it is meant for cases where the core XRD elements are sufficient.&lt;/li&gt;
&lt;li&gt;XRD can be converted to JRD; a lossless conversion of JRD back to XRD is not always possible.&lt;/li&gt;
&lt;li&gt;Obtaining JRD is designed as a special case request for an XRD using the HTTP Accept header or format request parameter; JRD is available where XRD is available.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, services should continue using XRD as the primary format for their descriptor documents, and XRD should remain the default format for resource descriptors using the XRD schema. However, services may also support obtaining a JRD version of the document by allowing clients to specify a preference for JSON instead.&lt;/p&gt;
&lt;p&gt;JRD supports the following XRD elements: &amp;lt;Subject&amp;gt;, &amp;lt;Alias&amp;gt;, &amp;lt;Expires&amp;gt;, &amp;lt;Property&amp;gt;, &amp;lt;Link&amp;gt;, and &amp;lt;Title&amp;gt;, as well as the attributes of the &amp;lt;Link&amp;gt;, &amp;lt;Property&amp;gt;, and &amp;lt;Title&amp;gt; elements. It does not support digital signatures.&lt;/p&gt;
&lt;p&gt;Since nothing explains formats better than examples, the following fully-featured XRD document:&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;

&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;
&amp;lt;XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'&amp;gt;

  &amp;lt;Subject&amp;gt;http://blog.example.com/article/id/314&amp;lt;/Subject&amp;gt;
  &amp;lt;Expires&amp;gt;2010-01-30T09:30:00Z&amp;lt;/Expires&amp;gt;

  &amp;lt;Alias&amp;gt;http://blog.example.com/cool_new_thing&amp;lt;/Alias&amp;gt;

  &amp;lt;Property type='http://blgx.example.net/ns/version'&amp;gt;1.2&amp;lt;/Property&amp;gt;
  &amp;lt;Property type='http://blgx.example.net/ns/ext' /&amp;gt;

  &amp;lt;Link rel='author' type='text/html'
        href='http://blog.example.com/author/steve'&amp;gt;
    &amp;lt;Title&amp;gt;About the Author&amp;lt;/Title&amp;gt;
    &amp;lt;Title xml:lang='en-us'&amp;gt;Author Information&amp;lt;/Title&amp;gt;
    &amp;lt;Property type='http://example.com/author/role'&amp;gt;editor&amp;lt;/Property&amp;gt;
  &amp;lt;/Link&amp;gt;

  &amp;lt;Link rel='author' href='http://example.com/author/john'&amp;gt;
    &amp;lt;Title&amp;gt;The other guy&amp;lt;/Title&amp;gt;
  &amp;lt;/Link&amp;gt;

  &amp;lt;Link rel='copyright' href='http://example.com/copyright' /&amp;gt;
&amp;lt;/XRD&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Is represented by the following JRD document:&lt;/p&gt;
&lt;pre class="brush: jscript;"&gt;

{
 &amp;quot;subject&amp;quot;:&amp;quot;http://blog.example.com/article/id/314&amp;quot;,
 &amp;quot;expires&amp;quot;:&amp;quot;2010-01-30T09:30:00Z&amp;quot;,
 &amp;quot;aliases&amp;quot;:
 [
   &amp;quot;http://blog.example.com/cool_new_thing&amp;quot;
 ],
 &amp;quot;properties&amp;quot;:
 {
   &amp;quot;http://blgx.example.net/ns/version&amp;quot;:&amp;quot;1.2&amp;quot;,
   &amp;quot;http://blgx.example.net/ns/ext&amp;quot;:null
 },
 &amp;quot;links&amp;quot;:
 {
   &amp;quot;author&amp;quot;:
   [
     {
       &amp;quot;type&amp;quot;:&amp;quot;text/html&amp;quot;,
       &amp;quot;href&amp;quot;:&amp;quot;http://blog.example.com/author/steve&amp;quot;,
       &amp;quot;title&amp;quot;:&amp;quot;About the Author&amp;quot;,
       &amp;quot;titles&amp;quot;:
       {
         &amp;quot;en-us&amp;quot;:&amp;quot;Author Information&amp;quot;
       },
       &amp;quot;properties&amp;quot;:
       {
         &amp;quot;http://example.com/author/role&amp;quot;:&amp;quot;editor&amp;quot;
       }
     },
     {
       &amp;quot;href&amp;quot;:&amp;quot;http://example.com/author/john&amp;quot;,
       &amp;quot;title&amp;quot;:&amp;quot;The other guy&amp;quot;
     }
   ],
   &amp;quot;copyright&amp;quot;:
   [
     {
       &amp;quot;href&amp;quot;:&amp;quot;http://example.com/copyright&amp;quot;
     }
   ]
 }
}
&lt;/pre&gt;
&lt;p&gt;JRD does not support extension XRD elements or attributes. Future specification with use cases for extending JRD can define how to avoid name collisions (such as using a public wiki, registry, or namespaces).&lt;/p&gt;
&lt;h3&gt;Obtaining a JRD Document&lt;/h3&gt;
&lt;p&gt;In general, endpoints should not return a JRD representation by default. They should return an XRD document. Clients looking for a JRD representation make their preference known by using the HTTP &amp;#8216;&lt;strong&gt;Accept&lt;/strong&gt;&amp;#8216; header with the &amp;#8216;&lt;strong&gt;application/xrd+json&lt;/strong&gt;&amp;#8216; media type, or include the &amp;#8216;&lt;strong&gt;format&lt;/strong&gt;&amp;#8216; parameter with a value of &amp;#8216;&lt;strong&gt;json&lt;/strong&gt;&amp;#8216; in the request (or both).&lt;/p&gt;
&lt;p&gt;For example, requesting a host-meta using JRD:&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;

&amp;gt; GET /.well-known/host-meta?format=json HTTP/1.1
&amp;gt; Host: example.com
&amp;gt; Accept: application/xrd+json
&lt;/pre&gt;
&lt;h3&gt;Updates&lt;/h3&gt;
&lt;p&gt;5/24: Removed extensibility, changed array names to plural, turned links into a hashed list using rel values. Added title and titles object for the simple and complex use cases. Changed mime type to application/xrd+json.&lt;/p&gt;
&lt;p&gt;5/14: Changed &amp;#8216;namespace&amp;#8217; to &amp;#8216;ns&amp;#8217; and &amp;#8216;title&amp;#8217;, &amp;#8216;ns&amp;#8217;, and &amp;#8216;properties&amp;#8217; from array of objects to an object.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/byLljp_5Qis" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/05/jrd-the-other-resource-descriptor/#comments" thr:count="21" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/05/jrd-the-other-resource-descriptor/feed/atom/" thr:count="21" />
		<thr:total>21</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/05/jrd-the-other-resource-descriptor/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[The Light at the End of the Discovery Tunnel]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/A1RLpXHBiIw/" />
		<id>http://hueniverse.com/?p=1275</id>
		<updated>2010-05-12T07:08:22Z</updated>
		<published>2010-05-12T07:04:40Z</published>
		<category scheme="http://hueniverse.com" term="Discovery" /><category scheme="http://hueniverse.com" term="WebFinger" /><category scheme="http://hueniverse.com" term="XRD" />		<summary type="html"><![CDATA[After almost three years working on various discovery proposals, I&#8217;m finally starting to see the light at the end of the tunnel. While slow, good progress is being made and the drafts are reaching maturity and gaining popularity. Just a quick update on the status of the various parts of the discovery stack (aka The [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/05/the-light-at-the-end-of-the-discovery-tunnel/">&lt;p&gt;&lt;a href="http://hueniverse.com/wp-content/uploads/2009/11/Hammer-Stack.png"&gt;&lt;img class="alignright size-full wp-image-858" style="margin-left: 10px; margin-right: 10px;" title="Hammer Stack" src="http://hueniverse.com/wp-content/uploads/2009/11/Hammer-Stack.png" alt="" width="194" height="189" /&gt;&lt;/a&gt;After almost three years working on various &lt;a href="http://hueniverse.com/discovery/"&gt;discovery&lt;/a&gt; proposals, I&amp;#8217;m finally starting to see the light at the end of the tunnel. While slow, good progress is being made and the drafts are reaching maturity and gaining popularity.&lt;/p&gt;
&lt;p&gt;Just a quick update on the status of the various parts of the discovery stack (aka &lt;a href="http://hueniverse.com/2009/11/the-discovery-protocol-stack-redux/"&gt;&lt;em&gt;The Hammer Stack&lt;/em&gt;&lt;/a&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What &lt;a href="http://hueniverse.com/2009/11/host-meta-aka-site-meta-and-well-known-uris/"&gt;started as site-meta and changed into Well-known URIs&lt;/a&gt; is now &lt;a href="http://hueniverse.com/2010/04/rfc-5785-defining-well-known-uris/"&gt;RFC 5785&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tools.ietf.org/html/draft-nottingham-http-link-header"&gt;Web Linking&lt;/a&gt;, the heart of the entire discovery stack was finally approved for RFC publication with a new registry for link relation types coming shortly.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hueniverse.com/xrd/"&gt;XRD 1.0&lt;/a&gt; concluded its second public review with no material changes and is moving to Committee Standard next week.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tools.ietf.org/html/draft-hammer-hostmeta"&gt;host-meta&lt;/a&gt; is under review by the IETF Applications area director and pending IETF Last-Call.&lt;/li&gt;
&lt;li&gt;New draft available for &lt;a href="http://tools.ietf.org/html/draft-hammer-discovery"&gt;LRDD&lt;/a&gt; &amp;#8211; the top-most component of the discovery stack where everything comes together into a single discovery flow. The new draft incorporates all the feedback received (mostly editorial), and is hopefully ready for last-call in a week or so.&lt;/li&gt;
&lt;li&gt;First draft of the &lt;a href="http://hueniverse.com/2009/08/making-the-case-for-a-new-acct-uri-scheme/"&gt;&amp;#8216;acct&amp;#8217; URI&lt;/a&gt; specification (as used by the &lt;a href="http://hueniverse.com/2009/09/implementing-webfinger/"&gt;WebFinger protocol&lt;/a&gt;) is due shortly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you care about any of this, it is critical to review the &lt;a href="http://tools.ietf.org/html/draft-hammer-hostmeta"&gt;host-meta&lt;/a&gt; and &lt;a href="http://tools.ietf.org/html/draft-hammer-discovery"&gt;LRDD&lt;/a&gt; documents. They are both short and include plenty of detailed examples. Feedback would be greatly appreciated on the &lt;a href="https://www.ietf.org/mailman/listinfo/apps-discuss"&gt;Apps Discuss list&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/A1RLpXHBiIw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/05/the-light-at-the-end-of-the-discovery-tunnel/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/05/the-light-at-the-end-of-the-discovery-tunnel/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/05/the-light-at-the-end-of-the-discovery-tunnel/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Anthony Bryan</name>
						<uri>http://metalinker.org</uri>
					</author>
		<title type="html"><![CDATA[Metalink/HTTP]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/EpSEKkILdYk/" />
		<id>http://hueniverse.com/?p=1272</id>
		<updated>2010-05-12T06:54:19Z</updated>
		<published>2010-05-11T17:36:37Z</published>
		<category scheme="http://hueniverse.com" term="Guest Writer" />		<summary type="html"><![CDATA[Metalink is an XML format for describing downloads. Publishers pack information about a download into a Metalink XML file, such as mirrors and checksums, to overcome many common download problems like a server going down or file corruption. Other useful information can be included as well. Metalink/HTTP, or mirrors &#38; hashes in HTTP Headers, is [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/05/metalinkhttp/">&lt;p&gt;&lt;a href="http://www.metalinker.org/"&gt;&lt;/a&gt;&lt;a href="http://hueniverse.com/wp-content/uploads/2009/11/Metalink.png"&gt;&lt;img class="size-full wp-image-982 alignright" style="border: 0pt none; margin: 10px;" title="Metalink" src="http://hueniverse.com/wp-content/uploads/2009/11/Metalink.png" alt="" width="185" height="57" /&gt;&lt;/a&gt;Metalink is an &lt;a href="http://hueniverse.com/2009/12/introducing-metalink/"&gt;XML format for describing downloads&lt;/a&gt;. Publishers pack information about a download into a Metalink XML file, such as mirrors and checksums, to overcome many common download problems like a server going down or file corruption. Other useful information can be included as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Metalink/HTTP&lt;/strong&gt;, or mirrors &amp;amp; hashes in HTTP Headers, is another way currently being developed to improve the download situation. It relies on &lt;a href="http://tools.ietf.org/html/draft-nottingham-http-link-header"&gt;Web Linking&lt;/a&gt; (recently approved for RFC publication as a proposed standard) for mirrors and Instance Digests (&lt;a href="http://tools.ietf.org/html/rfc3230"&gt;RFC 3230&lt;/a&gt;) for cryptographic hashes.&lt;span id="more-1272"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The nice thing is that it relies on existing standards (using a newly proposed &amp;#8220;duplicate&amp;#8221; relation type) with the addition of &lt;a href="http://tools.ietf.org/html/draft-bryan-ftp-hash"&gt;FTP HASH&lt;/a&gt; &amp;#8211; a way to request the hash of a file over FTP.&lt;/p&gt;
&lt;p&gt;Metalink/HTTP can use Metalink/XML too, for certain features like partial file hashes that would be too verbose over HTTP headers. At this stage, Metalink/HTTP only has a few implementations, but existing Metalink/XML clients can be converted to support it quickly.&lt;/p&gt;
&lt;p&gt;Metalink/HTTP clients begin a download with a standard HTTP GET request to the Metalink server. Alternatively, they can use a HEAD request to the Metalink server to discover mirrors via Link headers. After that, the client follows with a GET request to the desired mirrors.&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;
&amp;gt; GET /distribution/example.ext HTTP/1.1
&amp;gt; Host: www.example.com
&lt;/pre&gt;
&lt;p&gt;The Metalink server responds with the data and these headers:&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;
&amp;lt; HTTP/1.1 200 OK
&amp;lt; Accept-Ranges: bytes
&amp;lt; Content-Length: 14867603
&amp;lt; Content-Type: application/x-cd-image
&amp;lt; Etag: &amp;quot;thvDyvhfIqlvFe+A9MYgxAfm1q5=&amp;quot;
&amp;lt; Link: &amp;lt;http://www2.example.com/example.ext&amp;gt;; rel=&amp;quot;duplicate&amp;quot; pref=1
&amp;lt; Link: &amp;lt;ftp://ftp.example.com/example.ext&amp;gt;; rel=&amp;quot;duplicate&amp;quot;
&amp;lt; Link: &amp;lt;http://example.com/example.ext.torrent&amp;gt;; rel=&amp;quot;describedby&amp;quot;; type=&amp;quot;application/x-bittorrent&amp;quot;
&amp;lt; Link: &amp;lt;http://example.com/example.ext.metalink&amp;gt;; rel=&amp;quot;describedby&amp;quot;; type=&amp;quot;application/metalink4+xml&amp;quot;
&amp;lt; Link: &amp;lt;http://example.com/example.ext.asc&amp;gt;; rel=&amp;quot;describedby&amp;quot;; type=&amp;quot;application/pgp-signature&amp;quot;
&amp;lt; Digest: SHA-256=MWVkMWQxYTRiMzk5MDQ0MzI3NGU5NDEyZTk5OWY1ZGFmNzgyZTJlODYzYjRjYzFhOTlmNTQwYzI2M2QwM2U2MQ==
&lt;/pre&gt;
&lt;p&gt;From the Metalink server response the client learns some or all of the following metadata about the requested object, in addition to also starting to receive the object:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;File size.&lt;/li&gt;
&lt;li&gt;ETag.&lt;/li&gt;
&lt;li&gt; Mirror profile link, which may describe the mirror&amp;#8217;s priority, whether it shares the ETag policy of the originating Metalink server, geographical location, and mirror depth.&lt;/li&gt;
&lt;li&gt;Peer-to-peer information.&lt;/li&gt;
&lt;li&gt;Metalink/XML, which can include partial file checksums to repair a file.&lt;/li&gt;
&lt;li&gt;Digital signature.&lt;/li&gt;
&lt;li&gt;Instance Digest, which is the whole file checksum.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A client request to a mirror server, using the Range header:&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;
&amp;gt; GET /example.ext HTTP/1.1
&amp;gt; Host: www2.example.com
&amp;gt; Range: bytes=7433802-
&amp;gt; If-Match: &amp;quot;thvDyvhfIqlvFe+A9MYgxAfm1q5=&amp;quot;
&amp;gt; Referer: http://www.example.com/distribution/example.ext
&lt;/pre&gt;
&lt;p&gt;The mirror servers respond with a 206 Partial Content HTTP status code and appropriate &amp;#8220;Content-Length&amp;#8221; and &amp;#8220;Content Range&amp;#8221; header fields.  The mirror server response, with data, to the above request:&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;
&amp;lt; HTTP/1.1 206 Partial Content
&amp;lt; Accept-Ranges: bytes
&amp;lt; Content-Length: 7433801
&amp;lt; Content-Range: bytes 7433802-14867602/14867603
&amp;lt; Etag: &amp;quot;thvDyvhfIqlvFe+A9MYgxAfm1q5=&amp;quot;
&amp;lt; Digest: SHA-256=MWVkMWQxYTRiMzk5MDQ0MzI3NGU5NDEyZTk5OWY1ZGFmNzgyZTJlODYzYjRjYzFhOTlmNTQwYzI2M2QwM2U2MQ==
&lt;/pre&gt;
&lt;p&gt;Partial file checksums are especially useful for large files. HTTP mirrors can be coordinated, meaning they share the same ETag policy which allows for early detection of file mismatches.&lt;/p&gt;
&lt;p&gt;One of the nice things about Metalink/HTTP is that there is no dependency on XML, unless you want partial file hashes. Drawbacks include requiring changes to server software, where the XML version can even be created by users and requires no server side changes.&lt;/p&gt;
&lt;p&gt;Metalink/HTTP is also bound to HTTP, where FTP or P2P clients won&amp;#8217;t be using it unless they also support HTTP, unlike Metalink/XML.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;ve been working on Metalink/HTTP for about 7 months and it&amp;#8217;s still experimental, so if you have any ideas or comments then &lt;a href="http://lists.w3.org/Archives/Public/ietf-http-wg/"&gt;help us make it better&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/EpSEKkILdYk" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/05/metalinkhttp/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/05/metalinkhttp/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/05/metalinkhttp/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[RFC 5785: Defining Well-Known URIs]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/britQhbVocE/" />
		<id>http://hueniverse.com/?p=1269</id>
		<updated>2010-04-06T22:49:41Z</updated>
		<published>2010-04-06T22:49:41Z</published>
		<category scheme="http://hueniverse.com" term="Discovery" />		<summary type="html"><![CDATA[This first piece of the discovery stack was published today as an RFC. RFC 5785 defines a registry for new well-known URIs which will provide a standard location for the host-meta document. This work started a year and a half ago as a well-known document called /site-meta, and slowly evolved into a simple registry. While [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/04/rfc-5785-defining-well-known-uris/">&lt;p&gt;This first piece of the discovery stack was published today as an RFC. &lt;a href="http://tools.ietf.org/html/rfc5785"&gt;RFC 5785&lt;/a&gt; defines a registry for new well-known URIs which will provide a standard location for the &lt;a href="http://tools.ietf.org/html/draft-hammer-hostmeta"&gt;host-meta&lt;/a&gt; document. This work started a year and a half ago as a well-known document called /site-meta, and slowly &lt;a href="http://hueniverse.com/2009/11/host-meta-aka-site-meta-and-well-known-uris/"&gt;evolved into a simple registry&lt;/a&gt;. While this isn&amp;#8217;t a breakthrough idea, it does codify existing behavior and hopefully encourages people to share ideas, discuss proposals, and reusing existing well-known URIs.&lt;/p&gt;
&lt;p&gt;Many thanks to my co-author &lt;a href="http://www.mnot.net"&gt;Mark Nottingham&lt;/a&gt; for got this ball rolling.&lt;span id="more-1269"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;From &lt;a href="http://tools.ietf.org/html/rfc5785"&gt;RFC 5785&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;It is increasingly common for Web-based protocols to require the discovery of policy or other information about a host (&amp;#8220;site-wide metadata&amp;#8221;) before making a request.  For example, the Robots Exclusion Protocol specifies a way for automated processes to obtain permission to access resources; likewise, the Platform for Privacy Preferences tells user-agents how to discover privacy policy beforehand.&lt;/p&gt;
&lt;p&gt;While there are several ways to access per-resource metadata (e.g., HTTP headers, WebDAV&amp;#8217;s PROPFIND), the perceived overhead (either in terms of client-perceived latency and/or deployment difficulties) associated with them often precludes their use in these scenarios.&lt;/p&gt;
&lt;p&gt;When this happens, it is common to designate a &amp;#8220;well-known location&amp;#8221; for such data, so that it can be easily located.  However, this approach has the drawback of risking collisions, both with other such designated &amp;#8220;well-known locations&amp;#8221; and with pre-existing resources.&lt;/p&gt;
&lt;p&gt;To address this, this memo defines a path prefix in HTTP(S) URIs for these &amp;#8220;well-known locations&amp;#8221;, &amp;#8220;/.well-known/&amp;#8221;.  Future specifications that need to define a resource for such site-wide metadata can register their use to avoid collisions and minimise impingement upon sites&amp;#8217; URI space.&lt;/p&gt;&lt;/blockquote&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/britQhbVocE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/04/rfc-5785-defining-well-known-uris/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/04/rfc-5785-defining-well-known-uris/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/04/rfc-5785-defining-well-known-uris/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[Open Questions About OAuth 2.0 Authentication]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/yxxRHCoZna0/" />
		<id>http://hueniverse.com/?p=1265</id>
		<updated>2010-01-15T05:49:37Z</updated>
		<published>2010-01-15T05:49:37Z</published>
		<category scheme="http://hueniverse.com" term="OAuth" />		<summary type="html"><![CDATA[In an effort to resume work on the OAuth 2.0 protocol at the IETF OAuth Working Group, I posed three questions about the authentication half of the protocol. From my perspective as the specification editor, these questions are the main open issues currently standing between us and a draft covering the authentication process in OAuth [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/01/open-questions-about-oauth-2-0-authentication/">&lt;p&gt;In an effort to resume work on the &lt;a href="http://hueniverse.com/2009/11/planning-for-oauth-2-0/"&gt;OAuth 2.0 protocol&lt;/a&gt; at the &lt;a href="http://tools.ietf.org/wg/oauth/"&gt;IETF OAuth Working Group&lt;/a&gt;, I posed three questions about the authentication half of the protocol. From my perspective as the specification editor, these questions are the main open issues currently standing between us and a draft covering the authentication process in OAuth 2.0 (of course, being an IETF effort, I might be completely off base).&lt;/p&gt;
&lt;p&gt;Below are the questions with their explanations, as well as my personal views after each question.&lt;span id="more-1265"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;1. Should OAuth 2.0 Require HTTPS for Any Unsigned Request?&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://hueniverse.com/2010/01/whats-going-on-with-oauth/"&gt;WRAP&lt;/a&gt; got &lt;a href="http://benlog.com/articles/2009/12/22/its-a-wrap/"&gt;some&lt;/a&gt; &lt;a href="http://www.links.org/?p=833"&gt;negative&lt;/a&gt; &lt;a href="http://www.links.org/?p=846"&gt;attention&lt;/a&gt; because of how it sends requests without using signatures or over a secure channel. WRAP uses HTTPS only for obtaining tokens but does not mandate (or even suggests) using HTTPS for making protected resources requests. Instead, WRAP recommends short lived tokens that must be refreshed (using HTTPS). In other words, WRAP uses secrets that are easy to steal, but which are good for a short period of time, limiting their damage.&lt;/p&gt;
&lt;p&gt;In a &lt;a href="http://www.ietf.org/mail-archive/web/oauth/current/msg00951.html"&gt;recent thread&lt;/a&gt; on the OAuth WG list, we reach a (low participation) consensus that the &lt;strong&gt;OAuth 1.0 protocol should be changed in the RFC draft to mandate HTTPS (or others technologies offing the same or greater protection) for the PLAINTEXT method and when requesting token credentials&lt;/strong&gt;. The original community edition only &lt;strong&gt;recommends&lt;/strong&gt; using HTTPS, but every implementation (known to me) requires HTTPS.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Are there any valid reasons (such that will pass IETF security review scrutiny) for allowing unsigned requests to be sent in the clear over an insecure channel? Are there real use cases for this kind of insecure flavor (not just speculations but actual services which we can point to)?&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span&gt;Yes, OAuth 2.0 must require the use of a secure channel when making unsigned requests. I understand that some providers will not want to bother with the extra security for cost of performance reasons. I am willing to assume they are doing this fully aware of the repercussions of their actions. What I don&amp;#8217;t understand is why should the protocol &amp;#8211; which is aimed at interoperability &amp;#8211; bother with it?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The working group includes people representing many companies, large and small. Can one of them please raise their hand and ask for this feature? And if they do, can they explain how they justify providing poor security to their developers?&lt;/p&gt;
&lt;p&gt;I am no longer interested in the argument that somewhere there are valid use cases. Writing a protocol for scenarios that are not anchored in reality is bad. OAuth 1.0 does not require using a secure channel for sending token secrets because people claimed it will be a problem for some providers. So far, no such providers showed up.&lt;/p&gt;
&lt;p&gt;If someone wants to argue the need of no-cryptography / no-secure-channel option, while showing how that need justifies subjecting the web to more bad protocols and poor foresight, I am eager to listen.&lt;/p&gt;
&lt;p&gt;If a provider doesn&amp;#8217;t care about security, it is free to implement the protocol poorly. There is no OAuth Police to force providers to check signatures and reject requests with bad ones. By forcing such providers to break the protocol, we are forcing them to make an explicit decision and we get their developers to notice.&lt;/p&gt;
&lt;p&gt;There is also a case to be made about pushing the envelope when it comes to security. The more services use TLS, the cheaper and easier it will get. That&amp;#8217;s economics 101. And unlike writing new code for new OAuth signatures, requiring TLS will simply mean linking another library and making a function call.&lt;/p&gt;
&lt;p&gt;My vote is to start with an HTTPS requirement for any unsigned request, and let those who have real reasons to object show up. None of the current users of OAuth 1.0 will be able to claim this since they all use HTTPS for all such requests.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3&gt;2. What to Sign?&lt;/h3&gt;
&lt;p&gt;The &lt;a href="http://oauth.net/core/1.0a"&gt;community edition&lt;/a&gt; of the OAuth Core 1.0 protocol was designed to sign &lt;strong&gt;API requests&lt;/strong&gt; which use common form-encoded parameters (in the URI or body). The main component of the 1.0 signature base string are the parameters. The host and HTTP methods are important but were never the focus on the signed content.&lt;/p&gt;
&lt;p&gt;The new &lt;a href="http://tools.ietf.org/html/draft-hammer-oauth"&gt;OAuth 1.0 RFC draft&lt;/a&gt; does not change the process but does describe it very differently, changing the focus form signing API requests and parameters to &lt;strong&gt;signing HTTP requests&lt;/strong&gt; (partially). The new &lt;a href="http://tools.ietf.org/html/draft-hammer-http-token-auth"&gt;Token Authentication draft&lt;/a&gt; (which is proposed as the basis for half of OAuth 2.0) takes this approach a step further and focuses on signing the &lt;strong&gt;raw HTTP request&lt;/strong&gt; components, completely ignoring their meaning as used by API calls.&lt;/p&gt;
&lt;p&gt;The end result is very similar but the differences are important.&lt;/p&gt;
&lt;p&gt;Last month Brian Eaton &amp;#8211; a WRAP co-author and a long time OAuth contributor working for Google &amp;#8211; &lt;a href="http://www.ietf.org/mail-archive/web/oauth/current/msg00890.html"&gt;proposed an alternative approach&lt;/a&gt; in which a message is signed instead of the API call or HTTP request. In his proposal, the HTTP request (or API call, whatever your perspective) is transformed into a message (Eaton&amp;#8217;s proposal uses a JSON-based format) which is then signed. This additional layer of abstraction allows using the method with other transports, or in use cases in which parameters are not part of the request URI or body.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Ignoring the details and proposed format of the message,) which style should OAuth 2.0 use?&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Process the HTTP request into a base string for signing (OAuth RFC draft style),&lt;/em&gt;&lt;/li&gt;
&lt;li&gt; &lt;em&gt;Treat the request as an API call with form-encoded parameters (OAuth 1.0 community edition style), or&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Convert the request into a normalized message and sign it (Eaton style).&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;Given the interest in using OAuth with XMPP, SIP, and other protocol, I think there is great value in introducing a simple process for converting the request into a message, and then signing that message. The part of the proposal I am not yet sold on is the added complexity of using JSON and the multi-tier structure.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3&gt;3. Should the Normalized Request String Get Sent with the Request?&lt;/h3&gt;
&lt;p&gt;In OAuth 1.0 the request is normalized into the signature base string by the client and the server independently. The base string itself is never sent with the request. In his &lt;a href="http://www.ietf.org/mail-archive/web/oauth/current/msg00890.html"&gt;outline&lt;/a&gt;, Eaton proposed to include the signed string (message) with the request, removing the need for the server to regenerate the normalized string. It also allows the client to use the included string to send additional (signed) information that is not part of the HTTP request.&lt;/p&gt;
&lt;p&gt;This is a significant departure from OAuth 1.0, but one that deserves an in-depth discussion.&lt;/p&gt;
&lt;p&gt;Some advantages to this approach are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The server can easily verify what is being signed&lt;/li&gt;
&lt;li&gt;The client can include additional parameters in the signed message&lt;/li&gt;
&lt;li&gt;The request remains valid even if changed by proxies or other intermediaries&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some disadvantages are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The request is sent twice, once raw and once normalized&lt;/li&gt;
&lt;li&gt;It adds another place to make mistakes and create security holes if the server uses the raw data without fully comparing it to the normalized (signed) data&lt;/li&gt;
&lt;li&gt;Since any server enforcing security will only use the data contained in the normalized portion, it will create a de-facto standard for API requests (not nearly as heavy as SOAP or WS-*, but) in which case the request itself is normalized before sending.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;What are some other advantaged and disadvantages to this approach? Should the normalized string be included with the request or even replace it?&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Unless someone raises some additional advantages, I can&amp;#8217;t see how this makes sense. The request itself is what matters.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Got answers? Please &lt;a href="https://www.ietf.org/mailman/listinfo/oauth"&gt;join the conversation&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/yxxRHCoZna0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/01/open-questions-about-oauth-2-0-authentication/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/01/open-questions-about-oauth-2-0-authentication/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/01/open-questions-about-oauth-2-0-authentication/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[What&#8217;s going on with OAuth?]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/pbMAvmu8a7Y/" />
		<id>http://hueniverse.com/?p=1262</id>
		<updated>2010-01-08T17:17:35Z</updated>
		<published>2010-01-08T17:17:35Z</published>
		<category scheme="http://hueniverse.com" term="Guest Writer" /><category scheme="http://hueniverse.com" term="OAuth" />		<summary type="html"><![CDATA[This post was written as a collaboration between Chris Messina (Google), Dick Hardt (Microsoft), David Recordon (Facebook), and I, and was originally published on O&#8217;Reilly Radar. The OAuth protocol and community have seen a lot of changes over the past couple of years. With the recent introduction of WRAP, the IETF working group, and discussions [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2010/01/whats-going-on-with-oauth/">&lt;p&gt;&lt;em&gt;This post was written as a collaboration between  &lt;a href="http://factoryjoe.com/"&gt;Chris Messina&lt;/a&gt; (Google), &lt;a href="http://twitter.com/DickHardt"&gt;Dick Hardt&lt;/a&gt; (Microsoft), &lt;a href="http://davidrecordon.com/"&gt;David Recordon&lt;/a&gt; (Facebook), and I, and was &lt;a href="http://radar.oreilly.com/2010/01/whats-going-on-with-oauth.html"&gt;originally published on O&amp;#8217;Reilly Radar&lt;/a&gt;.&lt;br /&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="float: right; margin-left: 15px;" src="http://radar.oreilly.com/2010/01/07/OAuth-Shine-200.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;The OAuth protocol and community have &lt;a href="http://hueniverse.com/2009/11/wrap-and-the-demise-of-the-oauth-community/"&gt;seen a lot of changes&lt;/a&gt; over the past couple of years. With the recent introduction of WRAP, the IETF working group, and discussions about OAuth 2.0, many developers were &lt;a href="http://www.scripting.com/stories/2010/01/01/oauthIsBecomingACautionary.html"&gt;left confused&lt;/a&gt; as to what was going on.&lt;/p&gt;
&lt;p&gt;The OAuth protocol enables users to provide third-party access to their web resources without sharing their passwords; kind of like a valet key for the web.  To date, OAuth 1.0a is the most successful such protocol deployed on the web.  The &lt;a href="http://hueniverse.com/oauth/guide/history/"&gt;origins of OAuth&lt;/a&gt; date back to late 2006, when a small group of web engineers, tired of reinventing the API authorization wheel, came together to find a common, open solution.&lt;span id="more-1262"&gt;&lt;/span&gt;The protocol was derived from several existing API authorization protocols, including AOL, Flickr, Google, Microsoft, and Yahoo!. By developing a unified approach to API authorization, the goal was to reduce the burden of implementing any one of these protocols, and provide third party applications a more convenient and secure way to access user data.  It is also well-established that security protocols are hard and often suffer from potential exploits. By focusing on an single, open protocol, the community could reduce the likelihood of an attack and respond faster when one occurs.&lt;/p&gt;
&lt;p&gt;In the past two years, the number of services that require users to divulge their passwords to enable third-party access — the so-called &lt;a href="http://adactio.com/journal/1357"&gt;&lt;em&gt;password anti-pattern&lt;/em&gt;&lt;/a&gt; — has decreased dramatically.  Today the most well-known and used deployment of OAuth 1.0a is the &lt;a href="http://apiwiki.twitter.com/Authentication"&gt;Twitter&amp;#8217;s API&lt;/a&gt;.  (If you&amp;#8217;re interested in a more detailed explanation of OAuth, check out &lt;a href="http://hueniverse.com/oauth/guide/"&gt;The Authoritative Guide to OAuth 1.0&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;Last year &lt;a href="http://www.ietf.org/dyn/wg/charter/oauth-charter.html"&gt;OAuth transitioned to the IETF as a new Working Group&lt;/a&gt; to produce version 1.1 which would be suitable for publication as an &lt;a href="http://en.wikipedia.org/wiki/Internet_standard"&gt;Internet Standard&lt;/a&gt;. The working group was tasked with reviewing the security and interoperability properties of the protocol, while maintaining as much backwards-compatibility as possible. As is sometimes the case in such efforts, there was little interest among the community in such a minor cleanup.&lt;/p&gt;
&lt;h3&gt;Introducing WRAP&lt;/h3&gt;
&lt;p&gt;At the same time, new use cases emerged as well as a significant amount of hands-on experience about the shortcomings and gaps in the 1.0a version of the protocol.  A small group of developers herded by Dick Hardt started work on simplifying the protocol, inspired by the  &lt;a href="http://oauth.googlecode.com/svn/spec/ext/session/1.0/drafts/1/spec.html"&gt;OAuth Session Extension&lt;/a&gt; proposed by Yahoo!.  Originally dubbed &amp;#8220;Simple OAuth&amp;#8221;, it was later renamed to WRAP (Web Resource Authorization Protocol) to reflect the fact that it is a different protocol. It is now known as &lt;a href="https://oauth.pbworks.com/OAuth-WRAP"&gt;OAuth WRAP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;WRAP attempts to simplify the OAuth protocol, primarily by dropping the signatures, and replacing them with a requirement to acquire short lived tokens over SSL.  It is not an even trade-off, and the new proposal has a different set of security characteristics, benefits, and shortcomings.&lt;/p&gt;
&lt;p&gt;In 2007 when OAuth 1.0 was being created, SSL was used sparingly for APIs.  As CPUs have become faster and more specialized SSL hardware has been deployed, it has become increasingly possible to operate APIs over SSL.  Some APIs, like the &lt;a href="http://code.google.com/apis/health/docs/2.0/developers_guide_protocol.html"&gt;Google Health Data API&lt;/a&gt; or Yahoo!&amp;#8217;s &lt;a href="http://fireeagle.yahoo.net/developer/documentation/calling_the_api"&gt;Fire Eagle API&lt;/a&gt;, operate fully over SSL anyway as developers are interacting with non-public data. Using SSL obviates the primary purpose of the cryptography used in OAuth 1.0a, which was designed for transferring data over insecure channels.&lt;/p&gt;
&lt;p&gt;WRAP addresses two areas in which the 1.0a protocol is lacking: it offers new ways to obtain tokens, and it evolves the architecture to enable other roles to issue tokens (other than the server).  OAuth 1.0a offers a single browser-based redirection flow used to send the user from the application to the server, obtain approval, and return to the application.&lt;/p&gt;
&lt;p&gt;WRAP adds a few new flows for obtaining authorization and tokens mainly designed around providing better experiences on devices such as your XBox, desktop applications like TweetDeck, or fully JavaScript based implementations like Facebook Connect.  And unlike 1.0a where the server issues and verifies every token, the tokens in OAuth WRAP are short lived and can represent claims issued by an authorization server, providing scale and security benefits for large operators.&lt;/p&gt;
&lt;p&gt;Judging by the original &amp;#8220;Simple OAuth&amp;#8221; moniker, the goal behind WRAP was not to confuse developers or compete with OAuth. The intention, rather, was to promote OAuth and increase long term adoption by offering an SSL variant. Therefore, if you&amp;#8217;re building a new API today and are trying to decide between deploying OAuth 1.0a or OAuth WRAP, nine times out of ten you should &lt;strong&gt;continue deploying OAuth 1.0a&lt;/strong&gt;. But start experimenting with WRAP when its features are important to you and you are comfortable making changes as it evolves.&lt;/p&gt;
&lt;h3&gt;Building OAuth 2.0&lt;/h3&gt;
&lt;p&gt;WRAP brought the use cases and experiences that inspired it to the attention of the IETF working group. The consensus is that we now have enough implementation experience and new requirements to begin work on OAuth 2.0, instead of a minor revision. OAuth 2.0 will likely contain two parts, one defining an authentication scheme for accessing resources using tokens, and the second defining a rich set of authorization schemes for obtaining such tokens.  By separating the two parts, we will be able to provide the right level of abstraction and modularity to support both the SSL-based approach taken by WRAP as well as the existing signature-based approach taken by 1.0a.&lt;/p&gt;
&lt;p&gt;In many ways, OAuth 2.0 will be the result of combining the best ideas from both protocols. The authentication part will built on top of 1.0a while the authorization part will build on top of WRAP.  It is important to remember that it is very early in the process, and that all these decision will be made by the members of the IETF OAuth working group. In other words, by those who show up. The goal is to have a set of stable drafts for OAuth 2.0 by the upcoming IETF OAuth Working Group meeting in March at the &lt;a href="http://www.ietf.org/meeting/upcoming.html"&gt;77th IETF meeting&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For those implementing OAuth 1.0a today, a new edition has been published as an &lt;a href="http://tools.ietf.org/html/draft-hammer-oauth"&gt;RFC draft&lt;/a&gt; which was accepted by the community as a replacement for the original 1.0a specification.  This new specification does not change the protocol, but is more readable, includes many clarifications, errata, and examples, and thus easier to implement.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re interested in keeping track of what&amp;#8217;s going on with OAuth, &lt;a href="http://hueniverse.com/oauth/"&gt;Hueinverse&amp;#8217;s OAuth page&lt;/a&gt; is a great place to watch. To get involved and take part in this important work, dig into the &lt;a href="https://www.ietf.org/mailman/listinfo/oauth"&gt;IETF OAuth Working Group&lt;/a&gt; and &lt;a href="http://groups.google.com/group/oauth-wrap-wg"&gt;WRAP discussion list&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/pbMAvmu8a7Y" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/01/whats-going-on-with-oauth/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/01/whats-going-on-with-oauth/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/01/whats-going-on-with-oauth/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Christopher Carrasco</name>
						<uri>http://chriscarrasco.tripod.com/</uri>
					</author>
		<title type="html"><![CDATA[Who Needs Open When You Have Twitter?]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/m3wXnr61yh0/" />
		<id>http://hueniverse.com/?p=1259</id>
		<updated>2010-01-07T22:44:29Z</updated>
		<published>2010-01-07T22:44:29Z</published>
		<category scheme="http://hueniverse.com" term="Cartoons" /><category scheme="http://hueniverse.com" term="Open Web" />		<summary type="html" />
		<content type="html" xml:base="http://hueniverse.com/2010/01/who-needs-open-when-you-have-twitter/">&lt;p style="text-align: center;"&gt;&lt;a href="http://hueniverse.com/wp-content/uploads/2010/01/Twitter-API.png"&gt;&lt;img class="size-large wp-image-1260  aligncenter" title="Twitter API" src="http://hueniverse.com/wp-content/uploads/2010/01/Twitter-API-1024x439.png" alt="" width="617" height="264" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/m3wXnr61yh0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2010/01/who-needs-open-when-you-have-twitter/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2010/01/who-needs-open-when-you-have-twitter/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://hueniverse.com/2010/01/who-needs-open-when-you-have-twitter/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[2009 Year-End Status Report]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/1f7I54JB1zo/" />
		<id>http://hueniverse.com/?p=1255</id>
		<updated>2009-12-31T08:22:39Z</updated>
		<published>2009-12-31T08:22:29Z</published>
		<category scheme="http://hueniverse.com" term="Discovery" /><category scheme="http://hueniverse.com" term="OAuth" /><category scheme="http://hueniverse.com" term="WebFinger" /><category scheme="http://hueniverse.com" term="XRD" />		<summary type="html"><![CDATA[We made a lot of important progress in 2009, even if it doesn&#8217;t feel like it. While there were no big new ideas, no final drafts, and very little overall progress, the progress made was still extremely valuable. It represents the maturity and stabilization of these efforts and technologies. We are getting close to the [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/12/2009-year-end-status-report/">&lt;p&gt;We made a lot of important progress in 2009, even if it doesn&amp;#8217;t feel like it. While there were no big new ideas, no final drafts, and very little overall progress, the progress made was still extremely valuable. It represents the maturity and stabilization of these efforts and technologies. We are getting close to the finish line of the discovery stack.&lt;/p&gt;
&lt;p&gt;The following is a quick report on the status of the efforts I am involved in and what to expect in the next few months.&lt;span id="more-1255"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;XRD&lt;/h3&gt;
&lt;p&gt;The &lt;a href="http://www.oasis-open.org/committees/download.php/35678/xrd-1.0-wd11.html"&gt;XRD 1.0 specification&lt;/a&gt; is &lt;strong&gt;stable, ready for implementations&lt;/strong&gt;, and pending final review.&lt;/p&gt;
&lt;p&gt;The latest draft is Working Draft 11 which will be elevated to Committee Draft 2 shortly after the end of the public review period on January 6th, 2010. Working Draft 11 already accommodates all the changes and feedback received during the review period. It is mostly a matter of following the OASIS process at this point to get XRD 1.0 published as a standard. The next steps include publishing a second Committee Draft, a shorter public review period, and if no significant comments are received, moving forward with an OASIS standard vote.&lt;/p&gt;
&lt;p&gt;The XRD schema has &lt;a href="http://hueniverse.com/2009/11/xrd-alignment-with-link-syntax/"&gt;changed dramatically&lt;/a&gt; between Committee Draft 1 and Working Draft 11. I am not expecting any additional changes, at least not at that level. If you plan on reviewing the document, please do so before January 6th. At this point, the TC should not be accepting any new suggestions and focus on errors or problems in the specification. Any new ideas for making XRD 1.0 better would have to wait until the next version if submitted after January 6th.&lt;/p&gt;
&lt;h3&gt;Defining Well-Known URIs&lt;/h3&gt;
&lt;p&gt;The &lt;a href="http://tools.ietf.org/html/draft-nottingham-site-meta"&gt;Defining Well-Known URIs&lt;/a&gt; specification (aka /.well-known) is &lt;strong&gt;stable and pending publication&lt;/strong&gt; as a Standards Track RFC, as well as the creation of an IANA registry.&lt;/p&gt;
&lt;p&gt;The latest revision published December 30th, 2009 includes minor clarifications to resolve feedback received from the IESG, the IETF technical governing body. The draft should resolve all the pending issues and should move to publication shortly after the New Year.&lt;/p&gt;
&lt;p&gt;This draft went through a year-long journey, starting from a document called site-meta and ending with a URI path prefix and registry. This short and simple specification represents a significant shift in how Web applications are going to be designed, and how the URI namespace is treated.&lt;/p&gt;
&lt;h3&gt;Host-Meta: Web Host Metadata&lt;/h3&gt;
&lt;p&gt;The &lt;a href="http://tools.ietf.org/html/draft-hammer-hostmeta"&gt;host-meta&lt;/a&gt; specification is &lt;strong&gt;stable and ready for implementations&lt;/strong&gt;, but &lt;strong&gt;missing functionality&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Host-meta adds very little on top of XRD and Well-Known. The host-meta draft should be considered stable and is not likely to change. The protocol is still missing a trust profile &amp;#8211; a workflow used to sign and verify the authenticity of a host-meta document &amp;#8211; which will be either published separately or in the same specification.&lt;/p&gt;
&lt;p&gt;While the current draft should be considered final (except for the missing feature), it can still change to accommodate trust requirements or feedback received during the normal IETF review process.&lt;/p&gt;
&lt;p&gt;Host-meta is expected to move into IETF Last-Call by the end of Q1 2010 and published (if approved) by the end of Q2 2010.&lt;/p&gt;
&lt;h3&gt;LRDD&lt;/h3&gt;
&lt;p&gt;The LRDD specification is &lt;strong&gt;obsolete and not ready for implementations&lt;/strong&gt;, pending a new draft.&lt;/p&gt;
&lt;p&gt;After a long review period and many discussions, the LRDD specification is going to be transformed into a narrow, well-defined process for obtaining links. With the latest round of changes to the &lt;a href="http://tools.ietf.org/html/draft-nottingham-http-link-header"&gt;Web Linking draft&lt;/a&gt;, LRDD is going to register a new protocol-specific link relation type &amp;#8216;&lt;strong&gt;lrdd&lt;/strong&gt;&amp;#8216; which will link to &amp;#8220;The&amp;#8221; resource XRD, or the &amp;#8220;LRDD XRD&amp;#8221;.&lt;/p&gt;
&lt;p&gt;A &lt;a href="http://groups.google.com/group/webfinger/browse_thread/thread/9f3d93a479e91bbf#"&gt;preview of the proposal&lt;/a&gt; can be found on the WebFinger list. I expect a new draft published by the end of January, 2010.&lt;/p&gt;
&lt;h3&gt;WebFinger&lt;/h3&gt;
&lt;p&gt;The &lt;a href="http://hueniverse.com/2009/09/implementing-webfinger/"&gt;WebFinger workflow&lt;/a&gt; is &lt;strong&gt;stable, ready for implementations&lt;/strong&gt;, pending dependencies and first draft.&lt;/p&gt;
&lt;p&gt;It is still not clear what the WebFinger protocol includes, and how it will be published. As currently defined, WebFinger is not much more than a simple use case for XRD and host-meta (it is really a specialized case of LRDD, but only uses the proposed &amp;#8216;&lt;strong&gt;lrdd&lt;/strong&gt;&amp;#8216; relation type).&lt;/p&gt;
&lt;p&gt;The workflow going from an email-like identified &amp;#8211; the &lt;a href="http://hueniverse.com/2009/08/making-the-case-for-a-new-acct-uri-scheme/"&gt;account URI&lt;/a&gt; &amp;#8211; to an XRD document describing that account is stable and unlikely to change significantly. The content of the account XRD is still very much undefined. The format of the account URI is going to be based on the XMPP URI format, but is still pending a first draft.&lt;/p&gt;
&lt;p&gt;It is not clear which specification is going to define WebFinger and what it will include. There is going to be a specification of the proposed account URI, and something to bring all the different parts together. A specification defining the account URI is expected by the end of February, 2010.&lt;/p&gt;
&lt;h3&gt;OAuth&lt;/h3&gt;
&lt;p&gt;The &lt;a href="http://tools.ietf.org/html/draft-hammer-oauth"&gt;OAuth 1.0 Protocol RFC&lt;/a&gt; (which can be considered as Revision B) is &lt;strong&gt;completed, ready for implementations&lt;/strong&gt;, and pending IESG approval for publication as an Informational RFC.&lt;/p&gt;
&lt;p&gt;The OAuth 2.0 Protocol is in its &lt;strong&gt;early proposal stage&lt;/strong&gt;, but it likely to be based on the OAuth WRAP draft. I expect to have a set of stable drafts for OAuth 2.0 by the upcoming IETF OAuth Working Group meeting in March at the next &lt;a href="http://www.ietf.org/meeting/upcoming.html"&gt;IETF meeting&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/1f7I54JB1zo" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/12/2009-year-end-status-report/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/12/2009-year-end-status-report/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/12/2009-year-end-status-report/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[On Contributions, Open Source vs. Open Standards]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/6iwJZJLcCUQ/" />
		<id>http://hueniverse.com/?p=1131</id>
		<updated>2009-12-24T06:52:05Z</updated>
		<published>2009-12-24T06:52:05Z</published>
		<category scheme="http://hueniverse.com" term="Open Web" />		<summary type="html"><![CDATA[Open Source software is one of the most important and inspiring movement in technology. It is responsible for a great deal of innovation and democratization of the internet and beyond. Open Standards on the other hand, are still very much the domain of big companies and professionals standards experts. There are plenty of good definitions [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/12/on-contributions-open-source-vs-open-standards/">&lt;p&gt;Open Source software is one of the most important and inspiring movement in technology. It is responsible for a great deal of innovation and democratization of the internet and beyond. Open Standards on the other hand, are still very much the domain of big companies and professionals standards experts. There are plenty of good definitions for what constitutes an Open Source project, as well as plenty of well understood (or at least trusted) legal licenses available.&lt;/p&gt;
&lt;p&gt;On the other hand, we are still struggling to define what an Open Standard is.&lt;span id="more-1131"&gt;&lt;/span&gt;&lt;br /&gt;
It is extremely tempting to bundle the Open Source and Open Standards together, even though they are two, discrete concepts. In many cases, there is a great deal of overlap between the people writing Open Source code and the people working on specifications covering the same area. Most people try to understand the standards world through their understanding of Open Source, given the human mind&amp;#8217;s compulsory need to &lt;a href="http://hueniverse.com/2009/11/how-we-interact-with-the-unknown/"&gt;apply known patterns to new ones&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The problems start when we try to solve Open Standards problems with Open Source tools. On the face of it, it seems like a logical thing to do. They both need to be licensed, and both cover copyrights as well as patent rights. They are both nothing more than a set of instructions, one for machines and the other for people with the purpose of being translated to machines. In addition, many specifications include code, and some are written as pseudo-code.&lt;/p&gt;
&lt;p&gt;The most important process in any open project is &lt;strong&gt;contributions management&lt;/strong&gt;. From the way in which a contribution is made, through how it is discussed, approved or rejected, to how it is applied to the final product, the process dictates everything else. Any discussion about creating collaborative specifications or software must start from contributions management &amp;#8211; otherwise, it is lacking the most important tool needed to produce a successful end result.&lt;/p&gt;
&lt;p&gt;What makes the two so fundamentally different, despite their many similarities, is that Open Source contributions are pieces of code. From start to finish they maintain the same representation of machine-readable information. There are no two ways to understand what a piece of code does. Given a well-defined patent, it is possible to conclude if a piece of code infringes it or not. A code contribution is absolute &amp;#8211; you either run it or not, it either uses a patent or not, &lt;strong&gt;you&lt;/strong&gt; either contributed it or not. Any decent source control system can tell exactly were each line of code came from.&lt;/p&gt;
&lt;p&gt;On the other hand, a specification contribution is almost always prose. It is an idea expressed in a human language, and as such, it is always open for interpretation. While many people can write functional code (pretty, ugly, efficient, wasteful), very few can write quality prose &amp;#8211; prose that is likely to be understood the same way by different people, while at the same time, possess the typical properties desired in prose (elegance, efficiency, cultural sensitivity, correctness). For this reason, there are many layers of indirection between the contribution and the final result.&lt;/p&gt;
&lt;p&gt;Regardless of how decisions are made about which contribution to include, the role of a specification editor is very different from the role of a software maintainer. Software changes are atomic updates, and are communicated in terms of differences from the current baseline. For many years, UNIX software updates came in the form of a diff file, applied to the kernel source code, and then compiled on each server. As long as the piece of code does what it is supposed to do and understood by a machine, it is good to go.&lt;/p&gt;
&lt;p&gt;A contribution to a specification, however, is often communicated on a mailing list, a blog post, or over lunch, and id rarely applied to the specification as-is. It is the role of the editor to figure out how to accommodate the meaning of the contribution to the existing baseline. It is the role of the editor to ensure a consistent voice throughout the specification, which for code can be completely automated. And when people change words, they almost always change the meaning.&lt;/p&gt;
&lt;p&gt;The nature of software contributions is what empowers Open Source, allows reusability, derivative work, incremental improvements, and large scale collaborations. Specifications, on the other hand, would be a pile of goo if directly authored by more than a handful of authors or editors.&lt;/p&gt;
&lt;p&gt;Intellectual property rights and anti-trust are complicated areas and unfortunately, an integral part of everything we do. Add to that the desire for transparent government, democratic principles, and pragmatic progress, and the challenge of getting a large group of people to agree can get out of hand. The reason why every effort to change the way standards are created has reached the same conclusion and the same uninspiring, limited freedom, is because they are all based on the same primitive tools of managing contributions.&lt;/p&gt;
&lt;p&gt;This must not be where our story ends.&lt;/p&gt;
&lt;p&gt;The complexities of writing specifications, at least the contributions management part, should not dictate how specifications are created and used, but instead challenge us to come up with better models and tools. If we can develop new technologies and methodologies for bridging the gap between code and specifications, we will truly open the door to the freedom and democratization of ideas and innovation.&lt;/p&gt;
&lt;p&gt;This is not simply a matter of making small adjustments (such as taking a mailing-list software and enhancing it to enforce CLA signatures). It requires rethinking the way in which contributions are made, discussed, and applied. Community-based software was around for a long time, but Open Source only became the force of change we know today when the models of creating it matured beyond the collaborative practices of the past.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/6iwJZJLcCUQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/12/on-contributions-open-source-vs-open-standards/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/12/on-contributions-open-source-vs-open-standards/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/12/on-contributions-open-source-vs-open-standards/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[Elements of a Successful Standard Community]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/RjdBF1TT7nI/" />
		<id>http://hueniverse.com/?p=1127</id>
		<updated>2009-12-22T21:07:32Z</updated>
		<published>2009-12-22T21:06:26Z</published>
		<category scheme="http://hueniverse.com" term="Open Web" />		<summary type="html"><![CDATA[At the last W3C meeting in Santa Clara, David Recordon gave a great presentation about the Open Web community. He concluded (taunting the audience a bit) with a simple question: &#8220;Why should Facebook join the W3C,&#8221; given the progress and success made with efforts such as OAuth and OpenID. David&#8217;s presentation was followed by a [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/12/elements-of-a-successful-standard-community/">&lt;p&gt;At the last W3C meeting in Santa Clara, David Recordon gave a &lt;a href="http://www.scribd.com/doc/24425262/Building-Social-Web-Standards-2009-W3C-Plenary"&gt;great presentation about the Open Web community&lt;/a&gt;. He concluded (taunting the audience a bit) with a simple question: &amp;#8220;&lt;em&gt;Why should Facebook join the W3C&lt;/em&gt;,&amp;#8221; given the progress and success made with efforts such as OAuth and OpenID.&lt;/p&gt;
&lt;p&gt;David&amp;#8217;s presentation was followed by a comment by Tim Berners-Lee. Tim&amp;#8217;s point was that what the Open Web Foundation is trying to do now &amp;#8211; with its very limited scope &amp;#8211; is exactly how the W3C started. The problem was, as I have come to realize myself over the past six months, that it wasn&amp;#8217;t enough. There is a long list of &amp;#8216;stuff&amp;#8217; communities need in order to be successful.&lt;span id="more-1127"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I spend most of my time as a specification developer. Almost every day I get a message asking me how come one of the specifications I am working on for more than a year is not yet finished. Two weeks ago I sent an&lt;a href="http://hueniverse.com/2009/12/whats-in-a-name-that-which-we-call-the-open-web-foundation/"&gt; open letter to the members of the Open Web Foundation&lt;/a&gt;, questioning the foundation direction and accomplishments. When asked to provide more specific details about what I feel is missing, I came up with the following incomplete list.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Platforms &lt;/strong&gt;- tools that integrate email, messaging, and collaborative tools with the specification development process. We need a mailing list system that manages CLA signatures. We need the source control system that is directly linked to and from email messages sent to the list with ideas and contributions. Open source is successful to a large degree because of the tools available. Until we can tell where changes to a specification come from, we are going to be stuck with a primitive IPR policy and governance models.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Participation &lt;/strong&gt;- it is surprisingly hard to get people to actually contribute to an open community specification. I have the benefit of comparing the quality and quantity of feedback received for my community work and my standards body work and sadly, they don&amp;#8217;t compare. I now find myself having to beg for reviews (and still don&amp;#8217;t get them). Asking folks at the IETF and W3C for feedback yields much better results.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editors &lt;/strong&gt;- the most labor intensive part of writing a specification is writing it and editing it. For that reason (and scarcity of talent), it is very hard to find someone to edit open specifications. This is why the handful of specifications we have is largely written by the same small group of people (who are getting busier). They are also generally poorly written. We need experienced editors to help mentor new ones, and for that we need people to step up.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domains, websites, trademarks&lt;/strong&gt; &amp;#8211; someone needs to own and manage the logistics of creating public intellectual properties. I think people need to worry less about the OAuth IPR agreement, and more about who controls the &amp;#8216;oauth.net&amp;#8217; domain. I wrote a new version of OAuth 1.0 &amp;#8211; but who gets to decide if I can replace the existing one with this newer version? Who gets to decide if WRAP can call itself an OAuth profile?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open Source libraries&lt;/strong&gt; &amp;#8211; we are extremely poor in resources for writing quality libraries implementing these specifications. The majority of specifications do not even have a reference implementation or a comprehensive test suite. The main reason why people started working on alternative solutions to OAuth was that that the cryptography and request normalization was too hard and the libraries did a poor job.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chairs / leads&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Governance models&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentations and guides&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Demos and experimental sites&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am sure there is more.&lt;/p&gt;
&lt;p&gt;What specification communities need &amp;#8211; and what existing standards bodies provide &amp;#8211; are built-in participation, corporate by-in, editorial services, working group facilities, and legal hand-holding. The fact is that the Open Web Foundation would not exist if memberships in the W3C or OASIS were free, or without the insanely complex and insider-club nature of the IETF.&lt;/p&gt;
&lt;p&gt;Some argue that protocols like &lt;a href="http://en.wikipedia.org/wiki/PubSubHubbub"&gt;Pubsubhubbub&lt;/a&gt; and OpenID are great examples of successful protocols created without the full support of a standards body. But these are misleading examples. OpenID has a fully-featured standards body &amp;#8211; the OpenID Foundation, and Pubsubhubbub is directly sponsored by Google (which experience shows, is the single most important factor in producing a successful Open Web specification).&lt;/p&gt;
&lt;p&gt;When we founded the Open Web Foundation, the one thing we all agreed on was that we were not creating another standards body. The foundation grew directly out of the OpenID and OpenSocial experiences. What got us here was the desire to avoid having to create these foundations for each specification.&lt;/p&gt;
&lt;p&gt;What we missed was the fact that &amp;#8216;these foundations&amp;#8217; are in fact mini standards bodies. If we are going to create something to replace &amp;#8216;these foundations&amp;#8217;, it needs to provide at least the same level of services. This might sound like I am proposing turning the Open Web Foundation into a standards body, alongside the W3C, OASIS, IETF, and others. I am not &amp;#8211; but I am proposing a significantly different direction.&lt;/p&gt;
&lt;p&gt;The obvious problem is that as long as we develop specifications the same way standards bodies do today (and we do), we are doomed to find ourselves coming back to the same problems and needs. And these needs are expensive, which is why the W3C and OASIS charge a high membership fee.&lt;/p&gt;
&lt;p&gt;While the IETF is free to join, it has a pretty substantial budget from the &lt;a href="http://www.isoc.org/"&gt;ISOC&lt;/a&gt;, its events, and sponsorship. In addition, the IETF depends on companies employing members full time for the primary purpose of serving the organization. Ask any IETF Area Director about the amount of time, effort, and money it takes to do their job. For this reason, it has been getting harder to find qualified and available members to fill such demanding roles.&lt;/p&gt;
&lt;p&gt;The Open Web Foundation is trying to solve a real problem but it is mostly using the same tools that have failed before, or leading communities in that direction. It is inevitable that these communities will find their way back into standards bodies as their participants mature, join companies who are already members of standards bodies, or find that they simply need more.&lt;/p&gt;
&lt;p&gt;This will likely become a cyclical occurrence, as new generations of specification communities will go through the same process as we have. Ready for the New Open Web Foundation ten years from now?&lt;/p&gt;
&lt;p&gt;Fortunately, the solution has been right under our noses this all time. We drew our inspiration from Open Source, but took the wrong part &amp;#8211; the legal stuff. It is the process and tools that holds the real value and the key to breaking away from the broken, expensive, exclusive, and closed system we have today.&lt;/p&gt;
&lt;p&gt;But that&amp;#8217;s for another day.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/RjdBF1TT7nI" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/12/elements-of-a-successful-standard-community/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/12/elements-of-a-successful-standard-community/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/12/elements-of-a-successful-standard-community/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[Sneak Peek: The Authoritative Guide to OAuth 1.0]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/uwVMDj84UQE/" />
		<id>http://hueniverse.com/?p=1083</id>
		<updated>2009-12-22T07:54:36Z</updated>
		<published>2009-12-20T07:52:35Z</published>
		<category scheme="http://hueniverse.com" term="OAuth" />		<summary type="html"><![CDATA[With the new edition and growing interest in OAuth, it is time to revisit the old posts explaining OAuth and documenting its development. I am working on a new guide to replace the Beginner&#8217;s guide called The Authoritative Guide to OAuth 1.0. I plan to publish an expended version of it later as a book. [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/12/sneak-peek-the-authoritative-guide-to-oauth/">&lt;p&gt;With the &lt;a href="http://hueniverse.com/2009/12/oauth-1-0-rfc-edition/"&gt;new edition&lt;/a&gt; and growing interest in &lt;a href="http://hueniverse.com/oauth"&gt;OAuth&lt;/a&gt;, it is time to revisit the old posts explaining OAuth and documenting its development. I am working on a new guide to replace the &lt;a href="http://hueniverse.com/2007/10/beginners-guide-to-oauth-part-i-overview/"&gt;Beginner&amp;#8217;s guide&lt;/a&gt; called &lt;strong&gt;The Authoritative Guide to OAuth 1.0&lt;/strong&gt;. I plan to publish an expended version of it later as a book. While it is still early, I would like to give you a sneak Peek at the &lt;a href="http://hueniverse.com/oauth/guide/history/"&gt;Protocol History&lt;/a&gt; chapter. &lt;a href="http://hueniverse.com/oauth/guide/"&gt;The rest of the guide&lt;/a&gt; will show in sections over the next few weeks.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/uwVMDj84UQE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/12/sneak-peek-the-authoritative-guide-to-oauth/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/12/sneak-peek-the-authoritative-guide-to-oauth/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/12/sneak-peek-the-authoritative-guide-to-oauth/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[What&#8217;s in a name? That which we call the Open Web Foundation]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/4Ccc1LoHYsc/" />
		<id>http://hueniverse.com/?p=1013</id>
		<updated>2009-12-11T03:42:01Z</updated>
		<published>2009-12-11T03:35:16Z</published>
		<category scheme="http://hueniverse.com" term="Open Web" />		<summary type="html"><![CDATA[This is an open letter to the members of the Open Web Foundation, posted to the open-web-discuss mailing list. The one thing we do better than anything else is say what we are not about. Over the past few months I came to the conclusion that the limited role we assigned this foundation &#8211; to [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/12/whats-in-a-name-that-which-we-call-the-open-web-foundation/">&lt;p&gt;&lt;strong&gt;&lt;img class="alignleft size-full wp-image-415" style="margin: 10px;" title="OWF" src="http://hueniverse.com/wp-content/uploads/2009/09/OWF.png" alt="OWF" width="84" height="119" /&gt;This is an open letter to the members of the Open Web Foundation, posted to the &lt;a href="http://groups.google.com/group/open-web-discuss/"&gt;open-web-discuss&lt;/a&gt; mailing list.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The one thing we do better than anything else is say what we are not about.&lt;/p&gt;
&lt;p&gt;Over the past few months I came to the conclusion that the limited role we assigned this foundation &amp;#8211; to produce a reusable legal framework for open specifications &amp;#8211; does not justify the &amp;#8216;Open Web Foundation&amp;#8217; name. In fact, it is the stuff we keep ruling out &amp;#8211; the &lt;a href="http://groups.google.com/group/openweb-group/web/openweb-org-proposal"&gt;proposed openweb.org advocacy site&lt;/a&gt;, building infrastructure to host communities, or represent the Open Web community at large &amp;#8211; which is what most people expect this organization to be about.&lt;span id="more-1013"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I strongly believe this is one of those cases where doing little is more damaging than doing none. Having an organization called the Open Web Foundation that is doing so little to promote and develop the open web is standing in the way of motivating others to do more. Names and appearances matter.&lt;/p&gt;
&lt;p&gt;A few months ago I wrote about &lt;a href="http://groups.google.com/group/open-web-board/browse_thread/thread/d45e744d592ad3dc"&gt;setting a new course&lt;/a&gt;. The general sentiment among the board was that we should remain focused on our initial limited objective of producing a reusable legal framework. There was little to no interest in raising funds and building a well-resourced organization that can deliver the infrastructure and support needed for end-to-end community projects.&lt;/p&gt;
&lt;p&gt;At the same time, we are still being approached by other organizations to participate in the greater context of the open web, solely based on our name and perceived purpose. It is also the name that brings greater attention to what we do. Calling our license &amp;#8220;&lt;a href="http://openwebfoundation.org/2009/11/introducing-the-open-web-foundation-agreement.html"&gt;The Open Web Foundation Agreement&lt;/a&gt;&amp;#8221; makes people treat it differently than if it was called &amp;#8220;The Open Specification Agreement&amp;#8221;. This is like an organization called &amp;#8220;The World Peace Foundation&amp;#8221; produce a conflict resolution process aimed at solving fights between neighbors.&lt;/p&gt;
&lt;p&gt;I am well aware of the complexity and risks involved in setting out to do much more than we are currently set to accomplish. I still believe it is well-worth it.&lt;/p&gt;
&lt;p&gt;This organization was based on a reality that no longer exists. The communities we set to help are mostly gone or inactive. I am not aware of any new community-based initiatives emerging in the past 6 months.&lt;/p&gt;
&lt;p&gt;At the same time, those who have been successful recently, such as the &lt;a href="http://openid.net/government/"&gt;OpenID work with the US government&lt;/a&gt;, demonstrate the need for a much higher level of engagement and resources. I am sure the existence of a well-established foundation helped OpenID to be taken seriously.&lt;/p&gt;
&lt;p&gt;In addition, the recent experience with the OAuth brand (&lt;a href="http://hueniverse.com/2009/11/wrap-and-the-demise-of-the-oauth-community/"&gt;as used in OAuth WRAP&lt;/a&gt;) showed the danger in not having a well-established governance for this work. The people who created OAuth have for the most part moved on, and the lack of governance around it is now threatening its future.&lt;/p&gt;
&lt;p&gt;The OAuth model (which we originally used to justify this effort), produced a successful specification in a very short period of time. However, this seems to be the exception rather than the rule. Projects like Portable Contacts and Activity Streams have been lingering for a long time without producing final specifications. They also seem to be getting traction without having a legal framework in place. What they can use is more help with editorial and publication work and resources for tools and documentation. They also need to figure out what to do with their trademarks, website ownership, and decisions about future version.&lt;/p&gt;
&lt;p&gt;It is no longer clear to me that what we are trying to do is aligned with reality.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://openwebfoundation.org/legal/agreement/"&gt;OWFa&lt;/a&gt; is an important document. I can tell you that I had multiple internal conversations at work where people suggested we used it for releasing work instead of creating our own license. Making it easier for companies to release IP under well-understood terms is a very good thing for the open web. But we don&amp;#8217;t need a foundation with 100 members and a 9 seats board for that. The upcoming CLA work is important but is being proposed based on the state of the community a year ago.&lt;/p&gt;
&lt;p&gt;Our name, missing, and actions are now out of alignment with each other and with the reality of the open web.&lt;/p&gt;
&lt;p&gt;Before discussing solutions, it would be great to &lt;a href="http://groups.google.com/group/open-web-discuss/browse_thread/thread/6b761ae869effea4"&gt;hear&lt;/a&gt; how others feel about this.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/4Ccc1LoHYsc" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/12/whats-in-a-name-that-which-we-call-the-open-web-foundation/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/12/whats-in-a-name-that-which-we-call-the-open-web-foundation/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/12/whats-in-a-name-that-which-we-call-the-open-web-foundation/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Anthony Bryan</name>
						<uri>http://metalinker.org</uri>
					</author>
		<title type="html"><![CDATA[Introducing Metalink]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/qVZFD384j_E/" />
		<id>http://hueniverse.com/?p=1008</id>
		<updated>2009-12-24T22:59:44Z</updated>
		<published>2009-12-11T01:30:12Z</published>
		<category scheme="http://hueniverse.com" term="Discovery" /><category scheme="http://hueniverse.com" term="Guest Writer" />		<summary type="html"><![CDATA[The majority of the time, downloads just work. Most downloads are relatively small files. But, when files are larger, you are more likely to encounter errors. Errors with large downloads can be frustrating and a waste of time. That&#8217;s even more true for areas with unreliable Internet connections, such as developing parts of the world. [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/12/introducing-metalink/">&lt;p&gt;&lt;img class="alignright size-full wp-image-982" title="Metalink" src="http://hueniverse.com/wp-content/uploads/2009/11/Metalink.png" alt="Metalink" width="249" height="77" /&gt;The majority of the time, downloads just work. Most downloads are relatively small files. But, when files are larger, you are more likely to encounter errors. Errors with large downloads can be frustrating and a waste of time. That&amp;#8217;s even more true for areas with unreliable Internet connections, such as developing parts of the world.&lt;span id="more-1008"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Download problems include when a server becomes overloaded, goes down, or if there are errors in transmission. Common download programs like web browsers usually don&amp;#8217;t have the capability to recover from most errors, but external download managers do. Download managers are separate programs that your browser can pass downloads to. Download managers usually include features like making use of mirrors for fail-over or download from multiple servers.&lt;/p&gt;
&lt;p&gt;Before &lt;a href="http://www.metalinker.org/"&gt;Metalink&lt;/a&gt;, downloading a large file like a Linux distribution (CD or DVD size) could involve copy &amp;amp; pasting various URLs for mirrors into your download manager. Once the download completed, you could manually checksum the file, if you had such a program, to verify that the download was not corrupted. If the download was corrupted, there were a few things power users could try, but most people had to start over from scratch.&lt;/p&gt;
&lt;p&gt;With Metalink, we make this process automatic. Mirror lists, P2P sources, checksums, digital signatures, and other metadata about a download are included in an XML file which download programs can read.&lt;/p&gt;
&lt;p&gt;Checksums allow errors in a file to be repaired. Other features include enhanced security, adding multiple files to a download queue, and simultaneously downloading from multiple sources, including P2P &amp;amp; FTP/HTTP. Clients are enabled to work their way to a successful download even under adverse circumstances. All this can be done transparently to the human user and the download is much more reliable and efficient. Most download managers support Metalink already, but if this feature is made available in browsers like &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=331979"&gt;Firefox&lt;/a&gt; and &lt;a href="http://code.google.com/p/chromium/issues/detail?id=1751"&gt;Chrome&lt;/a&gt;, it will reach more people.&lt;/p&gt;
&lt;p&gt;Metalinks are frequently used for large files or files stored on many mirrors. Because of this, many open source projects like cURL, OpenOffice.org, openSUSE, Fedora, Ubuntu, &amp;amp; others use them to turn their mirrors into a coordinated Content Distribution Network. About 50 applications support Metalinks. Package update programs like Appupdater and yum use them behind the scenes. File hosting services are starting to provide Metalinks for downloads, and search engines are starting to index them.&lt;/p&gt;
&lt;p&gt;For example, The following is the Metalink document used with the Ubuntu distribution (ubuntu-9.04-alternate-amd64.iso.meta4):&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;metalink xmlns=&amp;quot;urn:ietf:params:xml:ns:metalink&amp;quot;&amp;gt;
    &amp;lt;file name=&amp;quot;ubuntu-9.04-alternate-amd64.iso&amp;quot;&amp;gt;
        &amp;lt;size&amp;gt;732282880&amp;lt;/size&amp;gt;
        &amp;lt;publisher name=&amp;quot;Ubuntu&amp;quot; url=&amp;quot;http://www.ubuntu.com&amp;quot;/&amp;gt;
        &amp;lt;license name=&amp;quot;GPL&amp;quot; url=&amp;quot;http://www.gnu.org/licenses/gpl.html&amp;quot;/&amp;gt;
        &amp;lt;version&amp;gt;9.04&amp;lt;/version&amp;gt;
        &amp;lt;description&amp;gt;Ubuntu CD Image&amp;lt;/description&amp;gt;
        &amp;lt;logo&amp;gt;http://www.ubuntu.com/themes/ubuntu07/images/ubuntulogo.png&amp;lt;/logo&amp;gt;
        &amp;lt;os&amp;gt;Linux-x64&amp;lt;/os&amp;gt;
        &amp;lt;hash type=&amp;quot;md5&amp;quot;&amp;gt;3b5e9861910463374bb0d4ba9025bbb1&amp;lt;/hash&amp;gt;
        &amp;lt;metaurl type=&amp;quot;torrent&amp;quot; priority=&amp;quot;1&amp;quot;&amp;gt;http://releases.ubuntu.com/9.04/ubuntu-9.04-alternate-amd64.iso.torrent&amp;lt;/metaurl&amp;gt;
        &amp;lt;url location=&amp;quot;jp&amp;quot; priority=&amp;quot;1&amp;quot;&amp;gt;http://ftp.yz.yamagata-u.ac.jp/pub/linux/ubuntu/releases/9.04/ubuntu-9.04-alternate-amd64.iso&amp;lt;/url&amp;gt;
        &amp;lt;url location=&amp;quot;de&amp;quot; priority=&amp;quot;2&amp;quot;&amp;gt;ftp://ftp.rrzn.uni-hannover.de/pub/mirror/linux/ubuntu-releases/9.04/ubuntu-9.04-alternate-amd64.iso&amp;lt;/url&amp;gt;
        &amp;lt;url location=&amp;quot;gb&amp;quot; priority=&amp;quot;2&amp;quot;&amp;gt;http://ftp.ticklers.org/releases.ubuntu.org/releases/9.04/ubuntu-9.04-alternate-amd64.iso&amp;lt;/url&amp;gt;
        &amp;lt;url location=&amp;quot;us&amp;quot; priority=&amp;quot;3&amp;quot;&amp;gt;http://ubuntu.media.mit.edu/ubuntu-releases/9.04/ubuntu-9.04-alternate-amd64.iso&amp;lt;/url&amp;gt;
   &amp;lt;/file&amp;gt;
&amp;lt;/metalink&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Most of the elements are self explanatory: file name, file size, who published it, what license it is released under, what version, a description, a logo, what operating system, a file hash, and where the file is available (.torrent and FTP/HTTP mirrors). &amp;lt;url&amp;gt; elements contain a geographical location and priority. &amp;lt;metaurl&amp;gt; elements list metadata files, or metainfo files, like torrents, metalinks or others and have a priority attribute, that is used with &amp;lt;url&amp;gt;. In this instance, the download sources should be used in this order: Japan &amp;amp; torrent (if the client supports BitTorrent), Germany &amp;amp; Great Britain, and finally USA.&lt;/p&gt;
&lt;p&gt;The Metalink project and the XML format are 4 years old. Over a year ago, we started working on an &lt;a href="http://tools.ietf.org/html/draft-bryan-metalink"&gt;IETF Internet Draft&lt;/a&gt; to better specify Metalink. The new XML format is an evolution of the previous one and offers all the same features. If you&amp;#8217;re interested, please take some time to &lt;a href="https://www.ietf.org/mailman/listinfo/apps-discuss"&gt;help us improve it&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/qVZFD384j_E" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/12/introducing-metalink/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/12/introducing-metalink/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/12/introducing-metalink/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[Authorization Miscommunication]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/8tdtw4c-Uuw/" />
		<id>http://hueniverse.com/?p=1003</id>
		<updated>2009-12-08T07:26:33Z</updated>
		<published>2009-12-08T07:24:56Z</published>
		<category scheme="http://hueniverse.com" term="Cartoons" />		<summary type="html"><![CDATA[I drew this one all by myself! (Yes, I&#8217;ll go back to writing specifications now.)]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/12/authorization-miscommunication/">&lt;p&gt;&lt;img class="aligncenter size-full wp-image-1004" title="WRAP" src="http://hueniverse.com/wp-content/uploads/2009/12/WRAP.png" alt="WRAP" width="500" height="566" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span id="more-1003"&gt;&lt;/span&gt;I drew this one all by myself! (Yes, I&amp;#8217;ll go back to writing specifications now.)&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/8tdtw4c-Uuw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/12/authorization-miscommunication/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/12/authorization-miscommunication/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/12/authorization-miscommunication/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[It&#8217;s All About the Token]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/kX9iWzC9Ink/" />
		<id>http://hueniverse.com/?p=997</id>
		<updated>2009-12-24T23:09:54Z</updated>
		<published>2009-12-08T00:47:13Z</published>
		<category scheme="http://hueniverse.com" term="OAuth" />		<summary type="html"><![CDATA[What will eventually become OAuth 2.0 is taking a first step. After a couple weeks of intense discussions on the OAuth WG list, I pushed out a new draft defining the Token Access Authentication Scheme. The new scheme replaces the OAuth authentication scheme defined in OAuth 1.0, and defines instead a general purpose authentication scheme [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/12/its-all-about-the-token/">&lt;p&gt;What will eventually become &lt;a href="http://hueniverse.com/2009/11/planning-for-oauth-2-0/"&gt;OAuth 2.0&lt;/a&gt; is taking a first step.&lt;/p&gt;
&lt;p&gt;After a couple weeks of &lt;a href="http://www.ietf.org/mail-archive/web/oauth/current/maillist.html"&gt;intense discussions on the OAuth WG list&lt;/a&gt;, I pushed out a new draft defining the &lt;a href="http://tools.ietf.org/html/draft-hammer-http-token-auth"&gt;Token Access Authentication Scheme&lt;/a&gt;. The new scheme replaces the &lt;a href="http://tools.ietf.org/html/draft-hammer-oauth-08#section-3"&gt;OAuth authentication scheme&lt;/a&gt; defined in &lt;a href="http://tools.ietf.org/html/draft-hammer-oauth"&gt;OAuth 1.0&lt;/a&gt;, and defines instead a general purpose authentication scheme for both 2-legged and 3-legged use cases. It builds directly on the experience and ideas in OAuth 1.0 but significantly simplifies the protocol.&lt;span id="more-997"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The new draft removes all the parameter encoding from the first version at the expense of removing support for some features. The most noticeable change is lack of specific support for query or form-encoded parameters. Query parameters are now included as part of the request URI as an opaque string. Body form-encoded parameter can be included by hashing the entire raw body.&lt;/p&gt;
&lt;p&gt;Another big change is removing support for transmitting credentials using the URI query of form-encoded body parameters. The new scheme uses the &lt;a href="http://tools.ietf.org/html/rfc2617"&gt;HTTP Authentication framework&lt;/a&gt; exclusively and requires the use of the HTTP Authorization header field to send authentication parameters.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;

GET /resource/1 HTTP/1.1
Host: example.com
Authorization: Token token=&amp;quot;h480djs93hd8&amp;quot;,
               method=&amp;quot;hmac-sha-1&amp;quot;,
               timestamp=&amp;quot;137131200&amp;quot;,
               nonce=&amp;quot;dj83hs9s&amp;quot;,
               auth=&amp;quot;djosJKDKJSD8743243/jdk33klY=&amp;quot;
&lt;/pre&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/kX9iWzC9Ink" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/12/its-all-about-the-token/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/12/its-all-about-the-token/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/12/its-all-about-the-token/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[OAuth 1.0 RFC Edition]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/ywoAzFOkPwg/" />
		<id>http://hueniverse.com/?p=994</id>
		<updated>2009-12-02T06:42:58Z</updated>
		<published>2009-12-02T06:41:38Z</published>
		<category scheme="http://hueniverse.com" term="OAuth" />		<summary type="html"><![CDATA[Pending approval by the IESG, the IETF governing body which provides the final technical review of Internet standards, my OAuth Core 1.0 Rev A rewrite will be published as an informational RFC. This has been a time consuming effort which focused on two goals: increase the usefulness and readability of the document (an area the [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/12/oauth-1-0-rfc-edition/">&lt;p&gt;&lt;img class="alignright size-thumbnail wp-image-414" title="OAuth Shine" src="http://hueniverse.com/wp-content/uploads/2009/09/OAuth-Shine-150x150.png" alt="OAuth Shine" width="150" height="150" /&gt;Pending approval by the IESG, the IETF governing body which provides the final technical review of Internet standards, my &lt;a href="http://tools.ietf.org/html/draft-hammer-oauth"&gt;OAuth Core 1.0 Rev A rewrite&lt;/a&gt; will be published as an informational RFC. This has been a time consuming effort which focused on two goals: increase the usefulness and readability of the document (an area the &lt;a href="http://oauth.net/core/1.0a"&gt;current specification&lt;/a&gt; lacks significantly), and address a list of known errata that has been identified over the past two years.&lt;span id="more-994"&gt;&lt;/span&gt;&lt;br /&gt;
From an editorial perspective, this is a &lt;a href="http://tools.ietf.org/html/draft-hammer-oauth"&gt;brand new specification&lt;/a&gt;. While it details the same protocol, it does so in very different terms, narrative, and detail. The majority of the specification was written from scratch using valuable feedback I collected over the past two years from those who were kind enough to provide detailed notes (and sometimes justified rants).&lt;/p&gt;
&lt;p&gt;The new edition moves OAuth closed to the HTTP transport layer, explaining how the protocol interacts with HTTP requests. It also aligns its terminology with that of HTTP, discarding much of the invented terms (e.g. Consumer Key, Request Token). And most importantly, it separates between the authentication and authorization components, placing each in a separate section.&lt;/p&gt;
&lt;p&gt;But what will matter most to implementers are the protocol changes and clarifications made in the new edition. The changes are&lt;a href="http://tools.ietf.org/html/draft-hammer-oauth-07#appendix-A"&gt; listed in an appendix&lt;/a&gt; but they are worth highlighting here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Adjusted nonce language to indicate it is unique per token/timestamp/client combination.&lt;/li&gt;
&lt;li&gt;Removed the requirement for timestamps to be equal to or greater than the timestamp used in the previous request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changed the nonce and timestamp parameters to OPTIONAL when using the PLAINTEXT signature method.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extended signature base string coverage which includes &amp;#8216;application/x-www-form-urlencoded&amp;#8217; entity-body parameters when the HTTP method used is other than POST and URI query parameters when the HTTP method used is other than GET.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Incorporated corrections to the instructions in each signature method to encode the signature value before inserting it into the &amp;#8216;oauth_signature&amp;#8217; parameter, removing errors which would have caused double-encoded values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Allowed omitting the &amp;#8216;oauth_token&amp;#8217; parameter when empty.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permitted sending requests for temporary credentials with an empty &amp;#8216;oauth_token&amp;#8217; parameter.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Removed the restrictions from defining additional &amp;#8216;oauth_&amp;#8217; parameters.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In my next post I will translate this list into code changes service providers and library developers should make in order to align their code with this new draft. We plan to point visitors to the &lt;a href="http://oauth.net"&gt;http://oauth.net&lt;/a&gt; site to the new draft shortly, and would like to give developers some time to familiarize themselves with these changes.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/ywoAzFOkPwg" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/12/oauth-1-0-rfc-edition/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/12/oauth-1-0-rfc-edition/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/12/oauth-1-0-rfc-edition/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[Stuff I didn&#8217;t Get to Write About]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/vFXhiJ4M0bA/" />
		<id>http://hueniverse.com/?p=979</id>
		<updated>2009-11-29T07:37:38Z</updated>
		<published>2009-11-29T13:00:49Z</published>
		<category scheme="http://hueniverse.com" term="Sunday Reading" />		<summary type="html"><![CDATA[Metalink is a document format for file download metadata. If you ever downloaded a large file or a LINUX distribution, you probably used a download manager. These are useful applications which help deal with the problems of downloading large files over sometimes unreliable networks. What Metalink does is help clients find the best place to [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/11/stuff-i-didnt-get-to-write-about/">&lt;p&gt;&lt;a href="http://www.metalinker.org/"&gt;&lt;img class="alignright size-full wp-image-982" title="Metalink" src="http://hueniverse.com/wp-content/uploads/2009/11/Metalink.png" alt="Metalink" width="198" height="61" /&gt;Metalink&lt;/a&gt; is a document format for file download metadata. If you ever downloaded a large file or a LINUX distribution, you probably used a download manager. These are useful applications which help deal with the problems of downloading large files over sometimes unreliable networks. What Metalink does is help clients find the best place to grab a file from, and recover when needed. The &lt;a href="http://groups.google.com/group/metalink-discussion"&gt;community behind Metalink&lt;/a&gt; decided to publish their work as an &lt;a href="http://tools.ietf.org/html/draft-bryan-metalink"&gt;IETF specification&lt;/a&gt;, which is now pending Last Call. Feedback is always appreciated.&lt;span id="more-979"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Two weeks ago the &lt;a href="http://openwebfoundation.org"&gt;Open Web Foundation&lt;/a&gt; reached its first non-bureaucratic milestone, the &lt;a href="http://ycorpblog.com/2009/11/17/owf/"&gt;release of the Open Web Foundation Agreement 0.9&lt;/a&gt;. The &lt;a href="http://openwebfoundation.org/legal/agreement/"&gt;agreement&lt;/a&gt; is the first building block created to help open web communities reach wider adoption by putting their work on sound legal grounds. The next steps are to form a &lt;a href="http://groups.google.com/group/open-web-discuss/browse_thread/thread/9acc07a570a2da70"&gt;new legal affairs committee&lt;/a&gt; and get going on &lt;a href="http://hueniverse.com/2009/03/explaining-the-open-web-foundation-new-kind-of-legal-framework/"&gt;creating a Contributor License Agreement&lt;/a&gt; (CLA).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.johnpanzer.com/"&gt;John Panzer&lt;/a&gt;, one of my favorite collaborators, came up with a cool new protocol with a simple mission: get comments back to where they belong, where the content originally came from. &lt;a href="http://www.salmon-protocol.org/"&gt;Salmon&lt;/a&gt; is a new proposal for aggregators and other content sharing sites to feed comments left locally back to the original source. This will help reduce the problem of fragmented conversations and the lack of long term access to the community distributed conversation. And its using the &lt;a href="http://hueniverse.com/2009/11/the-discovery-protocol-stack-redux/"&gt;discovery stack&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;HTML5 started as a gigantic effort to &amp;#8220;fix the web&amp;#8221;. That included everything needed to make developing web applications predictable and consistent across browsers and other clients (e.g. search engines). One of these items is dealing with the somewhat broken state of &lt;a href="http://en.wikipedia.org/wiki/HTTP_cookie"&gt;cookies&lt;/a&gt;. This piece of the puzzle is now being proposed as an &lt;a href="http://www.ietf.org/mail-archive/web/http-state/current/msg00297.html"&gt;IETF working group called HTTP-State&lt;/a&gt;. They have a proposed charter and looking for feedback.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/vFXhiJ4M0bA" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/11/stuff-i-didnt-get-to-write-about/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/11/stuff-i-didnt-get-to-write-about/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/11/stuff-i-didnt-get-to-write-about/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[Weekly Recap: XRD, OAuth, New Drafts, and We&#8217;re Back!]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/tlAhPYpkS6k/" />
		<id>http://hueniverse.com/?p=977</id>
		<updated>2009-11-28T21:09:06Z</updated>
		<published>2009-11-28T21:09:06Z</published>
		<category scheme="http://hueniverse.com" term="Recap" />		<summary type="html"><![CDATA[We are back to our normal programming schedule. The week started with a look at the OAuth community, the new WRAP protocol, and plans for OAuth 2.0. We reviewed the recent changes to XRD, the discovery protocol stack (aka the Hammer Stack), and compared machine discovery to how people interact with the unknown. And we [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/11/weekly-recap-xrd-oauth-new-drafts-and-were-back/">&lt;p&gt;We are back to our normal programming schedule.&lt;/p&gt;
&lt;p&gt;The week started with a look at the OAuth community, the &lt;a href="http://hueniverse.com/2009/11/wrap-and-the-demise-of-the-oauth-community/"&gt;new WRAP protocol&lt;/a&gt;, and plans for &lt;a href="http://hueniverse.com/2009/11/planning-for-oauth-2-0/"&gt;OAuth 2.0&lt;/a&gt;. We reviewed the &lt;a href="http://hueniverse.com/2009/11/xrd-alignment-with-link-syntax/"&gt;recent changes to XRD&lt;/a&gt;, the &lt;a href="http://hueniverse.com/2009/11/the-discovery-protocol-stack-redux/"&gt;discovery protocol stack&lt;/a&gt; (aka the Hammer Stack), and compared machine discovery to &lt;a href="http://hueniverse.com/2009/11/how-we-interact-with-the-unknown/"&gt;how people interact with the unknown&lt;/a&gt;. And we examined the &lt;a href="http://hueniverse.com/2009/11/host-meta-aka-site-meta-and-well-known-uris/"&gt;new host-meta proposal and redesigned Well-Known URI specification&lt;/a&gt;.&lt;span id="more-977"&gt;&lt;/span&gt;There is a lot going on across the many specifications and communities I am involved in, including the Open Web Foundation. It has been hard to keep up with everything, but as these efforts are reaching a stable state, it is time to resume normal blogging. The &lt;a href="http://hueniverse.com/2009/11/a-little-bit-of-housekeeping/"&gt;new post labeling system&lt;/a&gt; should help with staying up to date.&lt;/p&gt;
&lt;p&gt;The main focus of the next few weeks is going to be getting OAuth 2.0 into a draft state. The IETF working group is working on two separate but related specifications, one dealing with authentication and the other with authorization. I hope to get the authentication part done first and quickly.&lt;/p&gt;
&lt;p&gt;Also, if you are working on an Open Web specification or community, and would like to reach the audience of this blog, please let me know. I got a few new guest writers lined up for the next few weeks.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/tlAhPYpkS6k" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/11/weekly-recap-xrd-oauth-new-drafts-and-were-back/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/11/weekly-recap-xrd-oauth-new-drafts-and-were-back/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/11/weekly-recap-xrd-oauth-new-drafts-and-were-back/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[A Little Bit of Housekeeping]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/M37U5eRJCew/" />
		<id>http://hueniverse.com/?p=962</id>
		<updated>2009-11-26T20:25:49Z</updated>
		<published>2009-11-26T20:20:31Z</published>
		<category scheme="http://hueniverse.com" term="Uncategorized" />		<summary type="html"><![CDATA[The articles on this site tend to be very technical and represent the very latest in Open Web technologies. This means they are often obsolete and include incorrect information shortly after being posted. At the same time, people link to specific articles from tutorials and documentation which can be very confusing for those new to [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/11/a-little-bit-of-housekeeping/">&lt;p&gt;The articles on this site tend to be very technical and represent the very latest in Open Web technologies. This means they are often obsolete and include incorrect information shortly after being posted. At the same time, people link to specific articles from tutorials and documentation which can be very confusing for those new to the many technologies covered.&lt;span id="more-962"&gt;&lt;/span&gt;To make things easier, and without taking away from the integrity of the article archive, I have decided to add four kinds of disclaimers to technical posts when they becomes out-dated:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Updated by another post&lt;/strong&gt; &amp;#8211; the content of the post has been updated by another, more recent post. Readers should simply ignore the older version and read the newer post. For example, &lt;a href="http://hueniverse.com/2009/03/xrd-sneak-peek/"&gt;XRD Sneak-Peak&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Obsolete &lt;/strong&gt;- the post is no longer accurate and should not be relied upon for implementations. For example, &lt;a href="http://hueniverse.com/2009/03/xrd-based-oauth-discovery-sneak-peek/"&gt;XRD-Based OAuth Discovery Sneak-Peek&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content updated&lt;/strong&gt; &amp;#8211; in cases when a few small changes can bring the post back to the forefront, usually in its examples, the post will be updated directly with a note indicating what has changed and the last time it was updated. For example, &lt;a href="http://hueniverse.com/2009/09/openid-and-lrdd/"&gt;OpenID and LRDD&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Moving target&lt;/strong&gt; &amp;#8211; some posts are used to reflect the most recent changes to a specification in progress. In such cases, the post will be marked as a moving target until no additional changes are expected. For example, &lt;a href="http://hueniverse.com/2009/09/implementing-webfinger/"&gt;Implementing WebFinger&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hope you find this new system useful and as always, feedback is appreciated.&lt;/p&gt;
&lt;p&gt;Happy Thanksgiving!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/M37U5eRJCew" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/11/a-little-bit-of-housekeeping/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/11/a-little-bit-of-housekeeping/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/11/a-little-bit-of-housekeeping/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[XRD Alignment with Link Syntax]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/ALn097J0PkU/" />
		<id>http://hueniverse.com/?p=889</id>
		<updated>2009-12-24T22:38:39Z</updated>
		<published>2009-11-25T23:57:23Z</published>
		<category scheme="http://hueniverse.com" term="XRD" />		<summary type="html"><![CDATA[XRD is a simple generic format for describing resources. Unlike past attempts, this time we got it right, and truly deliver on the promise of simple. In fact, the XRI TC spent the past year throwing features out if they were not supported by well-established use cases. Last month the specification reached the important milestone [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/11/xrd-alignment-with-link-syntax/">&lt;p&gt;&lt;a href="http://hueniverse.com/xrd/"&gt;XRD&lt;/a&gt; is a simple generic format for describing resources. Unlike past attempts, this time we got it right, and truly deliver on the promise of simple. In fact, the XRI TC spent the past year throwing features out if they were not supported by well-established use cases. Last month the specification reached the important milestone of a &lt;a href="http://docs.oasis-open.org/xri/xrd/v1.0/xrd-1.0.html"&gt;Committee Draft&lt;/a&gt; and was opened for &lt;a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xri#feedback"&gt;public comments&lt;/a&gt;.&lt;span id="more-889"&gt;&lt;/span&gt;While public review is open until January 6th (and we &lt;a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xri#feedback"&gt;encourage feedback&lt;/a&gt;), we decide to publish a &lt;a href="http://www.oasis-open.org/committees/download.php/35274/xrd-1.0-wd10.html"&gt;new working draft&lt;/a&gt; to address comments we already reach consensus on to help early adopters. The new draft, which the TC feels would be our last schema change, addresses all the comments received so far, but focuses on two comments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The use of a new structure for the &lt;strong&gt;&amp;lt;Link&amp;gt;&lt;/strong&gt; element and its deviation from common practice (i.e. ATOM, HTML, XHTML).&lt;/li&gt;
&lt;li&gt;The limited and confusing nature of the &lt;strong&gt;&amp;lt;Type&amp;gt;&lt;/strong&gt; element.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The new draft converts most of the &lt;strong&gt;&amp;lt;Link&amp;gt;&lt;/strong&gt; child elements to attributes, and replaces the &lt;strong&gt;&amp;lt;Type&amp;gt;&lt;/strong&gt; element with a &lt;strong&gt;&amp;lt;Property&amp;gt;&lt;/strong&gt; element capable of expressing key/value pairs. I would like to thanks &lt;a href="http://blog.unto.net/"&gt;DeWitt Clinton&lt;/a&gt; and James Manger for their useful feedback.&lt;/p&gt;
&lt;p&gt;An example XRD (updating the &lt;a href="http://hueniverse.com/2009/03/xrd-sneak-peek/"&gt;previous sneak-peak&lt;/a&gt;):&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;

&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;
&amp;lt;XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'&amp;gt;

   &amp;lt;Subject&amp;gt;http://blog.example.com/article/id/314&amp;lt;/Subject&amp;gt;
   &amp;lt;Alias&amp;gt;http://blog.example.com/cool_new_thing&amp;lt;/Alias&amp;gt;

   &amp;lt;Expires&amp;gt;2010-01-30T09:30:00Z&amp;lt;/Expires&amp;gt;

   &amp;lt;Property type='http://blgx.example.net/ns/version'&amp;gt;1.2&amp;lt;/Property&amp;gt;
   &amp;lt;Property type='http://blgx.example.net/ns/ext'&amp;gt;lang&amp;lt;/Property&amp;gt;

   &amp;lt;Link rel='author' type='text/html'
         href='http://blog.example.com/author/steve'&amp;gt;
       &amp;lt;Title xml:lang='en-us'&amp;gt;Author Information&amp;lt;/Title&amp;gt;
   &amp;lt;/Link&amp;gt;
&amp;lt;/XRD&amp;gt;
&lt;/pre&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/ALn097J0PkU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/11/xrd-alignment-with-link-syntax/#comments" thr:count="6" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/11/xrd-alignment-with-link-syntax/feed/atom/" thr:count="6" />
		<thr:total>6</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/11/xrd-alignment-with-link-syntax/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[How We Interact With the Unknown]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/UGYWL3uFlf4/" />
		<id>http://hueniverse.com/?p=864</id>
		<updated>2009-11-30T08:28:12Z</updated>
		<published>2009-11-25T01:12:11Z</published>
		<category scheme="http://hueniverse.com" term="Discovery" /><category scheme="http://hueniverse.com" term="Featured" />		<summary type="html"><![CDATA[Discovery discussions tend to be very technical and detail-oriented. I have been looking for ways to explain how the basic elements in my discovery proposals are based on simple concepts taken directly from how humans interact with the unknown. Our brain is nothing but a big pattern-matching machine, and machine discovery works in a very [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/11/how-we-interact-with-the-unknown/">&lt;p&gt;&lt;img class="alignleft size-full wp-image-880" style="margin-left: 10px; margin-right: 10px;" title="Human Arm" src="http://hueniverse.com/wp-content/uploads/2009/11/Human-Arm.png" alt="Human Arm" width="127" height="156" /&gt;&lt;img class="alignright size-full wp-image-879" title="Robot Arm" src="http://hueniverse.com/wp-content/uploads/2009/11/Robot-Arm1.png" alt="Robot Arm" width="150" height="137" /&gt;Discovery discussions tend to be very technical and detail-oriented. I have been looking for ways to explain how the basic elements in my discovery proposals are based on simple concepts taken directly from how humans interact with the unknown. Our brain is nothing but a big pattern-matching machine, and machine discovery works in a very similar way.&lt;/p&gt;
&lt;p&gt;The basic idea is that discovery is the combination of three concepts:&lt;/p&gt;
&lt;h4 style="text-align: center;"&gt;&lt;strong&gt;Discovery = Patterns + Interfaces + Descriptors&lt;span id="more-864"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;p style="text-align: left;"&gt;The following presentation explains these concepts as they apply to human interaction. The same concepts are found in XRD, LRDD, and pretty much any discovery protocol.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="318" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="flashVars" value="s=aT03MjMxMzk1NTUmaz1raUQ4aCZhPTEwNDI4ODk0X1FtOWpSJnU9SGFtbWVyLUxhaGF2JmU9MQ==" /&gt;&lt;param name="src" value="http://hammer-lahav.net/ria/ShizVidz-2009090604.swf" /&gt;&lt;param name="flashvars" value="s=aT03MjMxMzk1NTUmaz1raUQ4aCZhPTEwNDI4ODk0X1FtOWpSJnU9SGFtbWVyLUxhaGF2JmU9MQ==" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;embed type="application/x-shockwave-flash" width="425" height="318" src="http://hammer-lahav.net/ria/ShizVidz-2009090604.swf" flashvars="s=aT03MjMxMzk1NTUmaz1raUQ4aCZhPTEwNDI4ODk0X1FtOWpSJnU9SGFtbWVyLUxhaGF2JmU9MQ==" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;The full size video (which is easier to view) can be found &lt;a href="http://hammer-lahav.net/Other/Work/10428894_Qm9jR#723139555_kiD8h-A-LB"&gt;here&lt;/a&gt;. Due to the amount of animation in this presentation and special fonts, I am not sharing the PowerPoint document at this point.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;Illustrations by &lt;a href="http://chriscarrasco.tripod.com/"&gt;Christopher Carrasco&lt;/a&gt;. Fonts used are High Fiber, Segoe Script, and Yank.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/UGYWL3uFlf4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/11/how-we-interact-with-the-unknown/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/11/how-we-interact-with-the-unknown/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/11/how-we-interact-with-the-unknown/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[The Discovery Protocol Stack, Redux]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/1VePI0fFCuU/" />
		<id>http://hueniverse.com/?p=857</id>
		<updated>2009-11-26T00:16:41Z</updated>
		<published>2009-11-24T19:52:25Z</published>
		<category scheme="http://hueniverse.com" term="Discovery" /><category scheme="http://hueniverse.com" term="Featured" /><category scheme="http://hueniverse.com" term="WebFinger" /><category scheme="http://hueniverse.com" term="XRD" />		<summary type="html"><![CDATA[What started as a small, simple specification ended up spread over 5 (and counting) documents. Given that these are still moving targets, at least for a little bit longer, it can get very confusing for people trying to follow this work. A few months ago I wrote about the new discovery stack which included XRD, [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/11/the-discovery-protocol-stack-redux/">&lt;p&gt;What started as a small, simple specification ended up spread over 5 (and counting) documents. Given that these are still moving targets, at least for a little bit longer, it can get very confusing for people trying to follow this work. A few months ago I wrote about the &lt;a href="http://hueniverse.com/2009/03/the-discovery-protocol-stack/"&gt;new discovery stack&lt;/a&gt; which included &lt;a href="http://hueniverse.com/xrd/"&gt;XRD&lt;/a&gt;, LRDD, and the three links. Since then, the design has changed to include new components and some shuffling of the existing ones.&lt;span id="more-857"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img class="size-full wp-image-858 aligncenter" title="Hammer Stack" src="http://hueniverse.com/wp-content/uploads/2009/11/Hammer-Stack.png" alt="Hammer Stack" width="354" height="345" /&gt;&lt;/p&gt;
&lt;p&gt;The main components remain XRD, host-meta, and LRDD. They are slightly rearranged to move &lt;a href="http://hueniverse.com/xrd/"&gt;XRD&lt;/a&gt; lower in the protocol stack, as it no longer provides its own discovery flow, only a simply schema to describe resources. &lt;a href="http://hueniverse.com/2009/11/host-meta-aka-site-meta-and-well-known-uris/"&gt;host-meta has been redefined and /.well-known added for the more generic use cases&lt;/a&gt;. And last, &lt;a href="http://hueniverse.com/2009/08/introducing-webfinger/"&gt;WebFinger&lt;/a&gt; was added to present a more comprehensive picture of the discovery framework being discussed.&lt;/p&gt;
&lt;p&gt;In addition, the latest draft of &lt;a href="http://tools.ietf.org/html/draft-nottingham-http-link-header"&gt;Web Linking&lt;/a&gt; removed the need to list the individual link locations (e.g. HTTP header, &amp;lt;Link&amp;gt; elements in HTML and ATOM). Web Linking is in its final standardization phase and will be covered by an upcoming post.&lt;/p&gt;
&lt;p&gt;I am also working on reworking LRDD from a generic guide on linking to metadata, to a more restrictive protocol on finding specific links using linked XRDs and direct links. Stay tuned.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/1VePI0fFCuU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/11/the-discovery-protocol-stack-redux/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/11/the-discovery-protocol-stack-redux/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/11/the-discovery-protocol-stack-redux/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Eran Hammer-Lahav</name>
						<uri>http://hueniverse.com</uri>
					</author>
		<title type="html"><![CDATA[Host-meta (aka Site-meta) and Well-Known URIs]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hueniverse/~3/fNMeSKuMfbs/" />
		<id>http://hueniverse.com/?p=852</id>
		<updated>2009-12-24T23:13:43Z</updated>
		<published>2009-11-24T02:24:36Z</published>
		<category scheme="http://hueniverse.com" term="Discovery" /><category scheme="http://hueniverse.com" term="WebFinger" /><category scheme="http://hueniverse.com" term="XRD" />		<summary type="html"><![CDATA[Over the past two weeks Well-Known URIs (draft-nottingham-site-meta) completed its last-call review at the IETF and is now pending IESG review before publication as an RFC. In addition, Host-meta (draft-hammer-hostmeta) was introduced to fill in the gap created by the recent revisions. There is a lot of confusion about these drafts, not because they are [...]]]></summary>
		<content type="html" xml:base="http://hueniverse.com/2009/11/host-meta-aka-site-meta-and-well-known-uris/">&lt;p&gt;&lt;img class="alignleft size-medium wp-image-855" style="margin-left: 15px; margin-right: 15px;" title="host-meta" src="http://hueniverse.com/wp-content/uploads/2009/11/host-meta-194x300.png" alt="host-meta" width="101" height="157" /&gt;Over the past two weeks &lt;a href="http://tools.ietf.org/html/draft-nottingham-site-meta"&gt;Well-Known URIs&lt;/a&gt; (&lt;a href="http://tools.ietf.org/html/draft-nottingham-site-meta"&gt;draft-nottingham-site-meta&lt;/a&gt;) completed its last-call review at the IETF and is now pending IESG review before publication as an RFC. In addition, &lt;a href="http://tools.ietf.org/html/draft-hammer-hostmeta"&gt;Host-meta&lt;/a&gt; (&lt;a href="http://tools.ietf.org/html/draft-hammer-hostmeta"&gt;draft-hammer-hostmeta&lt;/a&gt;) was introduced to fill in the gap created by the recent revisions.&lt;/p&gt;
&lt;p&gt;There is a lot of confusion about these drafts, not because they are complicated &amp;#8211; they are pretty simple &amp;#8211; but because of how they evolved and ended up solving different problems. It makes a good story for wannabe standards editors but that&amp;#8217;s for another day.&lt;br /&gt;
&lt;span id="more-852"&gt;&lt;/span&gt;&lt;br /&gt;
Well-Known URIs was originally proposed as &amp;#8216;site-meta&amp;#8217;, a well-known location document at the root of the domain, used as a registry of other metadata and policy documents:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;It is increasingly common for Web-based protocols to require the discovery of policy or metadata before making a request. For example, the Robots Exclusion Protocol specifies a way for automated processes to obtain permission to access resources; likewise, the Platform for Privacy Preferences tells user-agents how to discover privacy policy beforehand.&lt;/p&gt;
&lt;p&gt;While there are several ways to access per-resource metadata (e.g., HTTP headers, WebDAV&amp;#8217;s PROPFIND), the perceived overhead associated with them often precludes their use in these scenarios.&lt;/p&gt;
&lt;p&gt;When this happens, it is common to designate a &amp;#8220;well-known location&amp;#8221; for such metadata, so that it can be easily located. However, this approach has the drawback of risking collisions, both with other such designated &amp;#8220;well-known locations&amp;#8221; and with pre-existing resources.&lt;/p&gt;
&lt;p&gt;The idea was to create (one last) well-known location where all future documents will simply register and avoid the need to create more well-known documents. This was originally proposed as a new XML format but later changed to a simpler HTTP-header-like text-based format, and now, to a URI path prefix without any document format associated with it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The name site-meta was changed to host-meta to better reflect the scope of the metadata provided by the document. For many people, a site is functional term which often means multiple host names used together to provide a complete service. For example, &lt;strong&gt;http://twitter.com&lt;/strong&gt; and &lt;strong&gt;http://search.twitter.com&lt;/strong&gt; is considered by most people to be a single site, but two separate hosts. The term host is used as defined by &lt;a href="http://tools.ietf.org/html/rfc3986"&gt;RFC 3986&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As the proposal evolved, it became clear that it was not going to satisfy the needs of many protocols because it would have forced them to go through one more level of indirection (and having to deal with another file format) just to get to their metadata. Instead of creating a well-known location document, the proposal creates a directory under which future well-known location documents should reside.&lt;/p&gt;
&lt;p&gt;It also establishes a registry to avoid name collisions within the &lt;strong&gt;&amp;#8216;/.well-known/&amp;#8217;&lt;/strong&gt; namespace. In addition, it added a &lt;strong&gt;&amp;#8216;.&amp;#8217;&lt;/strong&gt; character to the name to reduce the likelihood of conflicts with common username name-spaces in sites that allow users to use URI such as&lt;strong&gt; http://example.com/joe&lt;/strong&gt; as their profile page.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://tools.ietf.org/html/draft-nottingham-site-meta"&gt;Well-Known URIs&lt;/a&gt; proposal is currently pending IESG review and hopefully we be approved for publication as an RFC soon.&lt;/p&gt;
&lt;p&gt;What also became clear during this process, is that there is a need for a metadata document about a host. The original idea for site-meta was to serve as a collection of links, but as we discussed more use cases, it became clear that we were also looking for a document to hold actual protocol metadata, not just point to it elsewhere.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Web-based protocols often require the discovery of host policy or metadata, where host is not a single resource but the entity controlling the collection of resources identified by URIs with a common host as defined by RFC 3986.  While these protocols have a wide range of metadata needs, they often define metadata that is concise, has simple syntax requirements, and can benefit from storing its metadata in a common location used by other related protocols.&lt;/p&gt;
&lt;p&gt;Because there is no URI or a resource available to describe a host, many of the methods used for associating per-resource metadata (such as HTTP headers) are not available.  This often leads to the overloading of the root HTTP resource (e.g. &amp;#8216;&lt;strong&gt;http://example.com/&lt;/strong&gt;&amp;#8216;) with host metadata that is not specific to the root resource (e.g. a home page or web application), and which often has nothing to do it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Another new feature of the &lt;a href="http://tools.ietf.org/html/draft-hammer-hostmeta"&gt;host-meta proposal&lt;/a&gt; is the use of &lt;a href="http://hueniverse.com/xrd/"&gt;XRD&lt;/a&gt; as the document schema. This simplifies the protocols looking to use it as they all already require the ability to parse XRD documents. For example, this simple host-meta document for the &amp;#8216;&lt;strong&gt;example.com&lt;/strong&gt;&amp;#8216; and &amp;#8216;&lt;strong&gt;www.example.com&lt;/strong&gt;&amp;#8216; hosts provides a link for host-wide copyright information and a link template providing a URI for obtaining resource-specific metadata for each resource within the host-meta document scope:&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;

&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;
&amp;lt;XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'
     xmlns:hm='http://host-meta.net/ns/1.0'&amp;gt;

    &amp;lt;hm:Host&amp;gt;example.com&amp;lt;/hm:Host&amp;gt;
    &amp;lt;hm:Host&amp;gt;www.example.com&amp;lt;/hm:Host&amp;gt;

    &amp;lt;Link rel='license'
          href='http://example.com/license'&amp;gt;
        &amp;lt;Title xml:lang='en-us'&amp;gt;Site License Policy&amp;lt;/Title&amp;gt;
    &amp;lt;/Link&amp;gt;
    &amp;lt;Link rel='describedby'
          template='http://meta.example.com?uri={uri}'&amp;gt;
        &amp;lt;Title xml:lang='en-us'&amp;gt;Resource Descriptor&amp;lt;/Title&amp;gt;
    &amp;lt;/Link&amp;gt;
&amp;lt;/XRD&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The next step for &lt;a href="http://tools.ietf.org/html/draft-hammer-hostmeta"&gt;host-meta&lt;/a&gt; is to add a trust profile section which will handle with some security and authority issues common to many of the protocol looking to use it such as &lt;a href="http://hueniverse.com/webfinger/"&gt;WebFinger&lt;/a&gt;, &lt;a href="http://www.salmon-protocol.org/"&gt;Salmon&lt;/a&gt;, and OpenID. Since host-meta now includes many of the new features offered by &lt;a href="http://hueniverse.com/2009/03/the-discovery-protocol-stack/"&gt;LRDD&lt;/a&gt;, that specification will have to change as well.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hueniverse/~4/fNMeSKuMfbs" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://hueniverse.com/2009/11/host-meta-aka-site-meta-and-well-known-uris/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://hueniverse.com/2009/11/host-meta-aka-site-meta-and-well-known-uris/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://hueniverse.com/2009/11/host-meta-aka-site-meta-and-well-known-uris/</feedburner:origLink></entry>
	</feed>
