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

<channel>
	<title>Will Norris &#187; diso</title>
	<atom:link href="http://willnorris.com/tag/diso/feed" rel="self" type="application/rss+xml" />
	<link>http://willnorris.com</link>
	<description>Thoughts on Identity, OpenID, WordPress, and Life</description>
	<lastBuildDate>Tue, 26 Jan 2010 16:25:05 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
		<item>
		<title>The Open Stack (in PHP)</title>
		<link>http://willnorris.com/2009/03/the-open-stack-in-php</link>
		<comments>http://willnorris.com/2009/03/the-open-stack-in-php#comments</comments>
		<pubDate>Thu, 19 Mar 2009 20:35:43 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[identity]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[diso]]></category>
		<category><![CDATA[lrdd]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[open stack]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[xrd]]></category>
		<category><![CDATA[xrds]]></category>
		<category><![CDATA[xrds-simple]]></category>

		<guid isPermaLink="false">http://willnorris.com/?p=533</guid>
		<description><![CDATA[A couple of months or so ago, I made a conscious shift in my focus with the DiSo Project.  Instead of continuing to concentrate on some of the higher level deliverables like WordPress plugins, I decided it was time to step back and evaluate where the development community (specifically the PHP development community) is [...]

<div class="related-posts">
Possibly related posts:<ul><li><a href='http://willnorris.com/2007/10/how-well-does-your-openid-provider-stack-up' rel='bookmark' title='Permanent Link: How well does your OpenID Provider stack up?'>How well does your OpenID Provider stack up?</a></li>
<li><a href='http://willnorris.com/2008/12/diso-one-year-later' rel='bookmark' title='Permanent Link: DiSo - One Year Later'>DiSo - One Year Later</a></li>
<li><a href='http://willnorris.com/2008/12/challenges-in-changing-my-openid' rel='bookmark' title='Permanent Link: Challenges in changing my OpenID'>Challenges in changing my OpenID</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>A couple of months or so ago, I made a conscious shift in my focus with the <a href="http://diso-project.org/">DiSo Project</a>.  Instead of continuing to concentrate on some of the higher level deliverables like WordPress plugins, I decided it was time to step back and evaluate where the development community (specifically the PHP development community) is with the Open Stack.  For the purposes of this discussion, I&#8217;m going to use <a href="http://netmesh.info/jernst/2008/11/05">Johannes Ernst&#8217;s</a> redux of <a href="http://www.flickr.com/photos/56624456@N00/3020508770/">John McCrea&#8217;s</a> Open Stack graphic.  I&#8217;m also only going to concentrate on three of the middle components: Metadata Discovery, Authentication, and Access Control.</p>

<p><img src="http://farm4.static.flickr.com/3462/3367793731_45903b3cab_o.png" alt="The Open Stack" title="The Open Stack" style="display: block; border: 1px solid #000; margin: auto; padding: 1px;" /></p>

<p><span id="more-533"></span></p>

<h2>PHP</h2>

<p>First a quick note, to make sure this discussion does not get derailed.  There is a time and a place to talk about these topics in the abstract.  That is incredibly important work, especially in the development of these specifications, but that&#8217;s not what I&#8217;m currently interested in.  I&#8217;m focused on developing solid PHP libraries to implement these technologies.  Why PHP?  Because that&#8217;s what WordPress uses, which is the current platform I&#8217;m targeting with the work I&#8217;m doing in DiSo.  I know that PHP isn&#8217;t as sexy as Python or Ruby, but it&#8217;s what we&#8217;re using.  I agree that we need solid libraries written in these other languages as well, but that&#8217;s not my focus.  PHP is widely deployed and used, including companies very involved in implementing the Open Stack like Facebook and Plaxo (Luke, Joseph &#8212; I&#8217;m expecting some help from you guys :) ).</p>

<p>I&#8217;ll also note that I&#8217;m specifically targeting PHP 5.  PHP 4 is no longer supported, and maintaining backwards compatibility (especially when talking about XML parsing) is a complete pain.  This creates a problem with getting code into WordPress core, but I&#8217;m okay with that&#8230; they&#8217;ll move to PHP 5 eventually.</p>

<h2>OpenID</h2>

<p>Let&#8217;s start with the most mature library we&#8217;ve got.  JanRain made a huge name for themselves in the OpenID community a couple of years ago by providing <a href="http://openidenabled.com/">open source libraries</a> in a number of different languages, including of course PHP.  Like any library, there are a few weird things here and there, but by and large it is an excellent implementation that has served the community (including this developer) very well.  Last week, <a href="http://openid.net/pipermail/code/2009-March/000000.html">JanRain announced</a> that they were restructuring the development process of the PHP library to make it more open to developers.  The code itself has moved from their internal darcs repository <a href="http://github.com/bce/php-openid/">to github</a>, they&#8217;ve added <a href="http://www.sociallipstick.com/">Luke Shepard</a> of Facebook and myself as committers, and releases, bug tracking, etc will eventually be moved to the Google Code project.  Going forward, we&#8217;ll be looking at trimming down the library a bit, removing support in core for older protocol versions and edge cases that weren&#8217;t really used, and overall making it easier for developers to use.</p>

<h2>OAuth</h2>

<p>There are two OAuth PHP libraries that I&#8217;m aware of, the &#8220;official&#8221; library stored in the <a href="http://code.google.com/p/oauth/source/browse/#svn/code/php">OAuth Google Code project</a>, and the <a href="http://code.google.com/p/oauth-php/source/browse/#svn/trunk/library">Mediamatic library</a> from Marc Worrell.  The former library seems to have more users because of it&#8217;s exposure from the OAuth website, and is <strong>much</strong> lighter weight than the Mediamatic library (too much so for my taste).  I initially chose the Mediamatic library for my work in getting OAuth working with WordPress, but eventually found some problems with the general library architecture.  After <a href="http://groups.google.com/group/oauth-php/browse_thread/thread/e78feefe1d568c87">some discussion</a> with developers of both libraries, I&#8217;ve begun work on a <a href="http://github.com/willnorris/oauth-php/">new OAuth library</a>.  I re-architected the library from scratch, and then used a combination of the two libraries for much of the actual implementations.  It&#8217;s probably about 80+ percent done, and should hopefully provide something both communities can work with.</p>

<h2>Metadata Discovery</h2>

<p>Discovery has certainly received the least amount of love from the development community, which is a bit ironic given that it&#8217;s a foundational part of almost every application of the Open Stack.  There&#8217;s no shortage of metadata discovery and parsing libraries: Joseph Smarr contributed one to the <a href="http://code.google.com/p/xrds-simple/source/browse/code/php/XrdsSimpleParser.php">xrds-simple Google Code repository</a>, the OpenID library <a href="http://github.com/bce/php-openid/tree/master/Auth/Yadis">has its own</a>, and the Mediamatic OAuth library <a href="http://code.google.com/p/oauth-php/source/browse/trunk/library/discovery/xrds_parse.php">has its own</a>.  Yet amazingly, none of these help you at all if you&#8217;re wanting to manipulate or publish a metadata document.  They&#8217;re all half-baked, each written for a very specific use-case.  What we need is a full implementation of the discovery protocols.  And that, of course, is where it gets a little more complicated&#8230;</p>

<p><strong>Disclaimer</strong>: If you really want everything there is to know about this subject, go read the writings of <a href="http://www.hueniverse.com/">Eran Hammer-Lahav</a>&#8230; I&#8217;m just going to gloss over it a bit.</p>

<p>Metadata discovery includes two steps: you need to know how to get the metadata about a resource, and you need to know what format that metadata is in so that you can parse it and make sense of it.  OpenID uses a technology known as <a href="http://yadis.org/">Yadis</a> to retrieve the metadata document, which is in an XML language known as <a href="http://en.wikipedia.org/wiki/XRDS">XRDS</a> (Extensible Resource Descriptor Sequence).  <a href="http://oauth.net/discovery/">OAuth Discovery</a> uses a combined and simplified version of these two known as <a href="http://xrds-simple.net/">XRDS-Simple</a>.  Discovery for OpenID and OAuth is more-or-less compatible.</p>

<p>Now, there is also work being done in the <a href="http://www.oasis-open.org/committees/xri/">OASIS XRI TC</a> (of which I&#8217;m a member) to develop the simpler, and more uniform successor to these protocols.  Retrieval of the metadata will use a collection of methods known as <a href="http://www.hueniverse.com/hueniverse/2009/03/the-discovery-protocol-stack.html">LRDD</a> (pronounced &#8220;lard&#8221;), while the metadata     itself will be in a much simpler format known as <a href="http://www.hueniverse.com/hueniverse/2009/03/xrd-document-structure.html">XRD</a>.  While identical in spirit, these are complete rewrites of the previous specs.  The new specs are not compatible with the old, but they are also designed so that they do not conflict either, so that both may be used simultaneously.  Shifting to these new discovery protocols will certainly not be easy, but believe me when I tell you that it will be worth it.  In fact, it&#8217;s absolutely essential for players like Google to implement OP-driven identifier selection (allowing users to login with OpenID by simply entering &#8220;gmail.com&#8221;).</p>

<p>So as I said earlier, we don&#8217;t have any real good discovery libraries for PHP.  As part of my work on WordPress, I started development on a <a href="http://github.com/willnorris/php-xrd/tree/master">XRDS-Simple library</a> in PHP.  More recently, I created a <a href="http://github.com/willnorris/php-xrd/tree/XRD">separate branch</a> of the code which implements LRDD+XRD exclusively.  Realistically, we&#8217;ll probably need a library which handles both the old and new protocols for a while.  The idea would be that none of the higher level libraries like OpenID or OAuth need worry about metadata discovery, except for maybe a lightweight wrapper around the discovery library.  The new OAuth library I&#8217;m working on will do this from day one; the existing OpenID library will take a little while, but I think we&#8217;ll eventually see it rely on a separate library for discovery.</p>

<h2>Feedback and Help</h2>

<p>First of all, I welcome any feedback on the implementations that currently exist, especially the OAuth and discovery libraries I&#8217;m working on.  They are not complete and most certainly not production ready, but they&#8217;re getting close.  I&#8217;d also like to solicit development help, especially from people with larger deployments and/or a vested interest in this technology.  All the new development is happening on github, so creating a clone to hack on is incredibly simple.  Even if you don&#8217;t have development cycles you can put into this, I&#8217;ve already got at least one technical decision I need to make that I&#8217;d love feedback on, which I&#8217;ll be covering in my next post: &#8220;<a href="http://willnorris.com/2009/03/http-client-library-for-php">Why Does HTTP Suck So Much in PHP</a>&#8221;.</p>


<div class="related-posts"><p>Possibly related posts:</p><ul><li><a href='http://willnorris.com/2007/10/how-well-does-your-openid-provider-stack-up' rel='bookmark' title='Permanent Link: How well does your OpenID Provider stack up?'>How well does your OpenID Provider stack up?</a></li>
<li><a href='http://willnorris.com/2008/12/diso-one-year-later' rel='bookmark' title='Permanent Link: DiSo - One Year Later'>DiSo - One Year Later</a></li>
<li><a href='http://willnorris.com/2008/12/challenges-in-changing-my-openid' rel='bookmark' title='Permanent Link: Challenges in changing my OpenID'>Challenges in changing my OpenID</a></li>
</ul></div>]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2009/03/the-open-stack-in-php/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Authentication in WordPress 2.8</title>
		<link>http://willnorris.com/2009/03/authentication-in-wordpress-28</link>
		<comments>http://willnorris.com/2009/03/authentication-in-wordpress-28#comments</comments>
		<pubDate>Tue, 10 Mar 2009 20:50:07 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[identity]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[diso]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://willnorris.com/?p=508</guid>
		<description><![CDATA[Use Case

I&#8217;ve spent a lot of time working with the WordPress authentication system.  I took over the OpenID plugin for WordPress two years ago, and was hired by Vidoop last May to work on the DiSo Project full time.  Last summer, Matt Mullenweg invited me to talk at WordCamp SF 2008 about OAuth. [...]

<div class="related-posts">
Possibly related posts:<ul><li><a href='http://willnorris.com/2007/02/strong-authentication-and-emailing-passwords' rel='bookmark' title='Permanent Link: strong authentication and emailing passwords'>strong authentication and emailing passwords</a></li>
<li><a href='http://willnorris.com/2009/06/wordpress-plugin-pet-peeve-3-not-being-extensible' rel='bookmark' title='Permanent Link: WordPress Plugin Pet Peeve #3: Not being extensible'>WordPress Plugin Pet Peeve #3: Not being extensible</a></li>
<li><a href='http://willnorris.com/2009/09/wordpress-openid-v3-3' rel='bookmark' title='Permanent Link: WordPress OpenID v3.3'>WordPress OpenID v3.3</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<h2>Use Case</h2>

<p>I&#8217;ve spent a <strong>lot</strong> of time working with the WordPress authentication system.  I took over the <a href="http://wordpress.org/extend/plugins/openid/">OpenID plugin</a> for WordPress two years ago, and <a href="http://willnorris.com/2008/05/why-im-going-to-vidoop">was hired by Vidoop</a> last May to work on the <a href="http://diso-project.org/">DiSo Project</a> full time.  Last summer, Matt Mullenweg invited me to talk at <a href="http://2008.sf.wordcamp.org/">WordCamp SF 2008</a> about OAuth.  As you can see in my <a href="http://www.slideshare.net/willnorris/wordpress-oauth-presentation">slidedeck</a>, it was a lot of smoke and mirrors at that point&#8230; we didn&#8217;t have OAuth in WordPress, although it was on the roadmap for 2.7.</p>

<p>We&#8217;ve had an OAuth plugin for a little while that <a href="http://singpolyma.net/">Stephen Paul Weber</a> wrote, but it wasn&#8217;t until a couple of months ago that I finally sat down to polish it up.  The first use-case we wanted to tackled was XML-RPC, so I got to work with <a href="http://josephscott.org/">Joseph Scott</a>.  Having OAuth authentication with XML-RPC would allow for blog clients like MarsEdit or the WordPress iPhone app to communicate with your blog without having to share your WordPress password.</p>

<p><span id="more-508"></span></p>

<h2>Problem</h2>

<p>It wasn&#8217;t very long before we butted up against my biggest complaint about the WordPress authentication system &#8212; it is very &#8220;username/password&#8221; centric.  There are places in the authentication code where it bails out prematurely if the username or password are missing.  This isn&#8217;t a problem if your plugin simply wants to authenticate the user against a different password store like LDAP; in fact that works quite well.</p>

<p>The problem is that there are a number of authentication systems widely deployed in the wild (SAML, OpenID, OAuth, etc) that do not fit the standard model of username and password.  You can look at the OpenID plugin to see some of the more <em>interesting</em> things that need to be done in order to make it work on the various versions of WordPress.  However, when it came to hooking OAuth into the WordPress XML-RPC endpoint, there simply was no way to hack around it&#8230; we had to change some of the underlying assumptions.</p>

<p>It&#8217;s worth noting one additional requirement we had.  Because the <code>wp_authenticate()</code> function, which does most of the heavy lifting for WordPress authentication, resides in <code>pluggable.php</code> it is possible for a plugin to replace the function entirely and authenticate the user however they want.  The problem with this solution is that many authentication mechanisms don&#8217;t know if they should be invoked without examining the request.  If <code>wp_authenticate</code> is replaced, and then the plugin determines it shouldn&#8217;t intervene, then it&#8217;s already too late.  There is no way to pass the function call back to the standard version of <code>wp_authenticate()</code>.  This is actually the case for all functions in <code>pluggable.php</code>.  One possible solution is to create wrapper functions for everything, which I initially <a href="https://core.trac.wordpress.org/ticket/8833">advocated</a>.  Instead, <a href="http://peter.westwood.name/">Peter Westwood</a> came up with a better solution using a well-established model, which we ended up using for the new authentication system.</p>

<h2>Solution</h2>

<p>It took far more planning than actual coding, but we finally developed a solution that breaks the dependence on a username and password, but maintains backward compatibility with existing plugins that hook into the authentication code. WordPress 2.8 includes a new filter called <em>authenticate</em> which is passed three parameters: a mixed value (either a <code>WP_User</code> object, a <code>WP_Error</code> object, or <code>null</code>), along with the username and password (either or both of which may be <code>null</code>).  All of the standard WordPress authentication logic has been moved into two functions that implement this filter, both with relatively low priority.</p>

<ul>
<li><p><code>wp_authenticate_username_password()</code> (priority 20) includes the standard logic for authenticating using a standard username and password.  It still calls the <code>wp_authenticate_user</code> filter, so plugins that rely on that should be fine.  This function also performs the check for an empty username or password.</p></li>
<li><p><code>wp_authenticate_cookie()</code> (priority 30) is only added into the filter chain when the user is authenticating via <code>wp-login.php</code> and does the normal checking for the WordPress authentication cookie.</p></li>
</ul>

<p>Both of these functions first check to see if the first parameter passed in is a valid <code>WP_User</code> object, and immediately stop if it is.  This allows plugins to add their own functions into the filter chain which populate the <code>WP_User</code> object using whatever means they see fit.  WordPress still takes care of setting the authentication cookie when appropriate, so plugins need only worry with authenticating the user and returning a valid <code>WP_User</code> object.</p>

<p>So what will this look like for plugins?  Well, the OAuth plugin for WordPress isn&#8217;t finished yet, but the function below should be pretty close to the final version.  While there is of course a lot more code for actually implementing OAuth, this is the only hook  into the WordPress authentication system needed to make it work.  Note that this function doesn&#8217;t care about the username and password parameters that are available from the <code>authenticate</code> hook&#8230; other plugins may use them.</p>

<pre><code>add_filter('authenticate', 'oauth_authenticate');

/**
 * If the current request was signed using a valid OAuth access token, verify 
 * the request and return the associated user.
 *
 * @param WP_User|WP_Error|null $user authenticated user
 * @return WP_User|WP_Error|null OAuth authenticated user, if request was signed
 */
function oauth_authenticate($user) {
    if (Auth_OAuth_Signer::requestIsSigned()) {
        $oauth_server = oauth_server();
        $user_id = $oauth_server-&gt;verify();
        if ($user_id !== false) {
            $user = new WP_User($user_id);
        }
    }   

    return $user;
}
</code></pre>

<h2>For Plugin Authors</h2>

<p>If you&#8217;re currently hooking into the WordPress authentication system, <strong>especially</strong> if you&#8217;re providing a custom implementation of <code>wp_authenticate()</code>, take a look at the new <code>authenticate</code> hook.  If you are relying on the <code>wp_authenticate</code> action hook, you should also look closely to see if the new hook will do what you need.  We left the <code>wp_authenticate</code> hook in place for now, but I&#8217;m pretty sure it&#8217;s no longer necessary and will likely be removed in future releases.  If you are using the <code>wp_authenticate_user</code> hook exclusively, then you&#8217;re probably fine, but it&#8217;s probably still a good idea to take a look at the new stuff.</p>

<h2>So, OAuth in WordPress?</h2>

<p>We made additional changes to the WordPress XML-RPC code to make it use the new authentication system appropriately, so it is now possible to hook OAuth into WordPress without any core modifications.  We do in fact have a basic <a href="http://diso.googlecode.com/svn/wordpress/oauth/trunk/">OAuth plugin</a> that works with the trunk version of WordPress.  However, I don&#8217;t think I&#8217;m going to push to have the OAuth code included in WordPress 2.8 for two reasons:</p>

<ul>
<li><p>the OAuth libraries are in flux right now.  There have been two main PHP libraries that people have used for OAuth, both with their own strengths and weaknesses.  I&#8217;m currently working with the <a href="http://groups.google.com/group/oauth-php">oauth-php community</a> to combine these libraries  using the best parts from each, and a new clean architecture.  This effort can be found <a href="http://github.com/willnorris/oauth-php/">on github</a>.  (This library also requires PHP5 which is a deal breaker for WordPress&#8230; not sure how we&#8217;ll manage that.)</p></li>
<li><p>Because OAuth has the potential to be such an important part of how third party clients interact with a WordPress blog, I want to make sure we get this right.  Personally, I&#8217;d feel much more comfortable getting some real world experience with this code in a slightly more constrained environment by releasing it as a plugin first.  Once we&#8217;ve done that and are comfortable with how it integrates into WordPress (plugin API, admin interface, database schema, etc), I&#8217;m all for making it a core part of WordPress.</p></li>
</ul>


<div class="related-posts"><p>Possibly related posts:</p><ul><li><a href='http://willnorris.com/2007/02/strong-authentication-and-emailing-passwords' rel='bookmark' title='Permanent Link: strong authentication and emailing passwords'>strong authentication and emailing passwords</a></li>
<li><a href='http://willnorris.com/2009/06/wordpress-plugin-pet-peeve-3-not-being-extensible' rel='bookmark' title='Permanent Link: WordPress Plugin Pet Peeve #3: Not being extensible'>WordPress Plugin Pet Peeve #3: Not being extensible</a></li>
<li><a href='http://willnorris.com/2009/09/wordpress-openid-v3-3' rel='bookmark' title='Permanent Link: WordPress OpenID v3.3'>WordPress OpenID v3.3</a></li>
</ul></div>]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2009/03/authentication-in-wordpress-28/feed</wfw:commentRss>
		<slash:comments>62</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>DiSo - One Year Later</title>
		<link>http://willnorris.com/2008/12/diso-one-year-later</link>
		<comments>http://willnorris.com/2008/12/diso-one-year-later#comments</comments>
		<pubDate>Thu, 18 Dec 2008 20:35:13 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[identity]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[diso]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[poco]]></category>
		<category><![CDATA[xrds-simple]]></category>

		<guid isPermaLink="false">http://willnorris.com/?p=444</guid>
		<description><![CDATA[I&#8217;m not sure that anyone mentioned it really, but a couple of weeks ago was the one year anniversary of the DiSo Project.  In that time, Chris and I were both hired by Vidoop to work on DiSo full-time, and Steve was picked up by Six Apart.  We&#8217;ve also seen the entire discussion [...]

<div class="related-posts">
Possibly related posts:<ul><li><a href='http://willnorris.com/2007/12/wp-openid-moving-to-diso' rel='bookmark' title='Permanent Link: wp-openid moving to DiSo'>wp-openid moving to DiSo</a></li>
<li><a href='http://willnorris.com/2009/03/the-open-stack-in-php' rel='bookmark' title='Permanent Link: The Open Stack (in PHP)'>The Open Stack (in PHP)</a></li>
<li><a href='http://willnorris.com/2008/03/osis-interop-testing' rel='bookmark' title='Permanent Link: OSIS Interop Testing'>OSIS Interop Testing</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not sure that anyone mentioned it really, but a couple of weeks ago was the <a href="http://factoryjoe.com/blog/2007/12/06/oauth-10-openid-20-and-up-next-diso/">one</a> <a href="http://redmonk.net/archives/2007/12/05/diso">year</a> <a href="http://willnorris.com/2007/12/wp-openid-moving-to-diso">anniversary</a> of the <a href="http://diso-project.org/">DiSo Project</a>.  In that time, Chris and I were both hired by <a href="http://vidoop.com/">Vidoop</a> to work on DiSo full-time, and Steve was picked up by <a href="http://sixapart.com/">Six Apart</a>.  We&#8217;ve also seen the entire discussion about these technologies, now dubbed the &#8220;Open Stack&#8221;, move forward tremendously.  Because of that, I&#8217;ve changed how I explain the DiSo Project to people.</p>

<p>Early in the project, it didn&#8217;t seem like too many people were talking openly about the state of social networking.  We all commonly referred to Facebook and MySpace as &#8220;silos&#8221; and &#8220;walled gardens&#8221;, but few people were talking about what the alternative would actually look like.  Now, I&#8217;m sure there were far more people working on this than I realized&#8230; I have no doubt about that.  But for me, it seemed like we were somewhat alone out there trying to figure out what protocols and technologies we could piece together to build a truly distributed social network.  Because of this, I often described DiSo almost as a think-tank for developing the model and the technologies.  We were writing code as well because we had to have a reference implementation that proved what we were talking about was possible, but I always de-emphasized that.  Code comes and goes, dozens of implementations of these protocols will be written in different languages for different platforms, and that&#8217;s fine.  What&#8217;s more important then, is the protocol itself.  That&#8217;s what DiSo was all about&#8230; gathering (and creating when necessary) the collection of protocols necessary to make this stuff work.  At least that&#8217;s how I viewed it, and explained it.</p>

<p>Today, the Open Stack is becoming very real.  We have agreed upon standards for <a href="http://xrds-simple.net/">service and metadata discovery</a>, <a href="http://openid.net/">authentication</a>, <a href="http://oauth.net/">API access</a>, and <a href="http://portablecontacts.net/">contact information</a>.  We have commitments and production deployments from key players in this space including Google, Yahoo!, MySpace, AOL, Microsoft, and many others.  What seemed like a small effort between a few individuals is now a full-scale shift of how we think about social interaction online.  Just to be clear, I&#8217;m not trying to take credit for any of this stuff happening.  The DiSo Project has played a small role in helping to shape and direct a few of the individual discussions, but this truly is a concerted effort between a lot of people who see the real potential for what we&#8217;re trying to do.</p>

<p>So where does this all leave DiSo today?  Well, it&#8217;s obvious now that DiSo is not the think-tank for these technologies&#8230; they&#8217;re being developed all over the web, inside and between dozens of companies.  Instead, I now put more emphasis on the code that we&#8217;re writing, because I think we represent a key principal of this entire Open Stack model.</p>

<p>The easiest example to give a layman for distributed social networking is &#8220;being able to interact with your Facebook friends using your MySpace account.&#8221;  In the future, most people will likely have accounts with one or two of the large social networks or identity providers, and participate in the open web from there.  With these large networks and providers at the table now, we can ensure that we develop a solution that will give users choice and the freedom to participate from anywhere.  If this is truly going to be &#8220;user-centric&#8221;, then in fact, a user shouldn&#8217;t even have to join one of these large social networks in order to participate.  Just like you can setup a server to host your own email instead of using a provider like GMail, you should be able to run your own server which provides the various pieces of the Open Stack.  And that&#8217;s precisely where DiSo fits in &#8212; we&#8217;re working to provide the software that lets you participate in the open web from the comfort of your own domain.  While there may be advantages to using one of the large providers, in order for this system to be truly open, then users must always have the option of maintaining complete control and running everything themselves.  As soon as DiSo users become second-class citizens because they are not in one of the major social networks, then we&#8217;ve failed to achieve the level of openness we sought.</p>

<p>Today, all of my development for DiSo is being done in PHP, and most of it specifically for <a href="http://wordpress.org/">WordPress</a>.  Between myself, Steve Ivy, and <a href="http://singpolyma.net/">Stephen Weber</a>, we have basic WordPress plugins for OpenID, OAuth, XRDS-Simple, rich profiles (hCard), Activity Streams, contacts, and permissions.  Many of them have work yet to be done before they are really stable and ready for mass consumption, but many can be seen right here on <a href="http://willnorris.com/">willnorris.com</a>.  Six Apart is also developing implementations on top of <a href="http://www.movabletype.org/">Movable Type</a>, including the recently announced <a href="http://www.movabletype.com/motion/">Motion</a>, which provides some real cool functionality around activity streams.</p>


<div class="related-posts"><p>Possibly related posts:</p><ul><li><a href='http://willnorris.com/2007/12/wp-openid-moving-to-diso' rel='bookmark' title='Permanent Link: wp-openid moving to DiSo'>wp-openid moving to DiSo</a></li>
<li><a href='http://willnorris.com/2009/03/the-open-stack-in-php' rel='bookmark' title='Permanent Link: The Open Stack (in PHP)'>The Open Stack (in PHP)</a></li>
<li><a href='http://willnorris.com/2008/03/osis-interop-testing' rel='bookmark' title='Permanent Link: OSIS Interop Testing'>OSIS Interop Testing</a></li>
</ul></div>]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2008/12/diso-one-year-later/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Changes to wp-openid</title>
		<link>http://willnorris.com/2008/05/changes-to-wp-openid</link>
		<comments>http://willnorris.com/2008/05/changes-to-wp-openid#comments</comments>
		<pubDate>Fri, 30 May 2008 00:10:47 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[identity]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[diso]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp-openid]]></category>

		<guid isPermaLink="false">http://willnorris.com/?p=227</guid>
		<description><![CDATA[Today I committed a few pretty substantial changes to wp-openid, changing how the OpenID flow happens.  Effectively, I&#8217;ve created a new single endpoint which receives all OpenID responses, located at /openid_consumer.  Previously, these response were sent to a number of different endpoints depending on whether you were simply logging in, leaving a comment, [...]

<div class="related-posts">
Possibly related posts:<ul><li><a href='http://willnorris.com/2008/07/wp-openid-220-released' rel='bookmark' title='Permanent Link: wp-openid 2.2.0 released'>wp-openid 2.2.0 released</a></li>
<li><a href='http://willnorris.com/2007/12/rebuild-wp-openid-tables' rel='bookmark' title='Permanent Link: rebuild wp-openid tables'>rebuild wp-openid tables</a></li>
<li><a href='http://willnorris.com/2008/09/wp-openid-faster-stronger-better' rel='bookmark' title='Permanent Link: wp-openid - faster, stronger, better'>wp-openid - faster, stronger, better</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>Today I committed a few pretty substantial changes to wp-openid, changing how the OpenID flow happens.  Effectively, I&#8217;ve created a new single endpoint which receives all OpenID responses, located at <code>/openid_consumer</code>.  Previously, these response were sent to a number of different endpoints depending on whether you were simply logging in, leaving a comment, or adding a new OpenID to your WordPress account.  Consolidating on a single endpoint has allowed me to cleanup the wp-openid code considerably.</p>

<h3>Posting comments</h3>

<p>OpenID is integrated into comment posting by intercepting a comment submission to see if it includes a valid OpenID.  If it does, the user is sent to their OpenID provider to authenticate, and upon their return the comment is submitted.  Previously, the wp-openid plugin itself performed the comment submission, basically by copying the logic found in <code>wp-comments-post.php</code>.  This introduced a number of problems, especially when using any other plugins that modify the comment submission process such as <a href="http://wordpress.org/extend/plugins/wp-recaptcha/">reCaptcha</a>.  Violating <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY</a> is bad, but necessary at times.  Breaking other plugins is really bad and had to be fixed.</p>

<p>The current solution I&#8217;m using is to capture the comment submission POST, do the OpenID dance, and then replay the POST (modified if necessary).  If the OpenID dance results in the commenter being authenticated as a valid WordPress user, then the comment POST is modified to look like they were logged in all along.  If the OpenID dance results in user attributes (via attribute exchange, sreg, hcard, foaf, whatever), then those values override what was included in the original comment form.  If OpenID authentication fails for whatever reason, the idea is to give the user the option to submit the post without OpenID.  This part isn&#8217;t finish yet, but will be before the release.  Currently, if OpenID authentication fails, then the comment is very likely lost unless you use other means to <a href="http://wordpress.org/extend/plugins/comment-saver/">save the comment</a>.  And of course, if any other plugins include additional data in the original comment POST, it will be included in the replayed POST.</p>

<h3>Still left to do</h3>

<p>Because all of the OpenID responses are being sent to <code>/openid_consumer</code>, it&#8217;s not quite as simple to display friendly messages to the end user.  I&#8217;m may try to find a way to display error messages similar to how they look today (for example, login errors are displayed on the wp-login.php page, etc).  Otherwise, I&#8217;ll just have a somewhat generic error pages that is specific to OpenID errors, and then include links back to whatever the user was doing.</p>

<h3>Need Testers</h3>

<p>Right now, I&#8217;m in need of people to test this new version of the plugin to find any cases I may have overlooked.  Like I said, the message display is in need of work, but everything is at least functional as best as I can tell.  If you&#8217;re interested in testing, checkout a copy of the latest code from the <a href="http://diso.googlecode.com/svn/wordpress/wp-openid/trunk/">Diso Repository</a> and give it a shot.  If you have an older version installed, you will most certainly need to disable it first, then re-enable after installing the new version.  Otherwise, WordPress won&#8217;t handle the <code>/openid_consumer</code> endpoint properly.  If you have any questions or comments, you can leave a comment here or on the <a href="http://groups.google.com/group/diso-project">Diso Mailing List</a>.  As always, I would strongly discourage you from using this on your production WordPress installation (notice I&#8217;m not using it here).</p>


<div class="related-posts"><p>Possibly related posts:</p><ul><li><a href='http://willnorris.com/2008/07/wp-openid-220-released' rel='bookmark' title='Permanent Link: wp-openid 2.2.0 released'>wp-openid 2.2.0 released</a></li>
<li><a href='http://willnorris.com/2007/12/rebuild-wp-openid-tables' rel='bookmark' title='Permanent Link: rebuild wp-openid tables'>rebuild wp-openid tables</a></li>
<li><a href='http://willnorris.com/2008/09/wp-openid-faster-stronger-better' rel='bookmark' title='Permanent Link: wp-openid - faster, stronger, better'>wp-openid - faster, stronger, better</a></li>
</ul></div>]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2008/05/changes-to-wp-openid/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Why I&#8217;m going to Vidoop</title>
		<link>http://willnorris.com/2008/05/why-im-going-to-vidoop</link>
		<comments>http://willnorris.com/2008/05/why-im-going-to-vidoop#comments</comments>
		<pubDate>Thu, 15 May 2008 07:52:25 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[identity]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[diso]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[shibboleth]]></category>
		<category><![CDATA[usc]]></category>
		<category><![CDATA[vidoop]]></category>
		<category><![CDATA[wp-openid]]></category>

		<guid isPermaLink="false">http://willnorris.com/?p=226</guid>
		<description><![CDATA[So it&#8217;s not exactly news at this point, but it is indeed true that as of today I am now employed by Vidoop.  This has been a few months in the making, so I figured I&#8217;d explain a little of why and how we got to this point.

I&#8217;ve been working in the Identity Management [...]

<div class="related-posts">
Possibly related posts:<ul><li><a href='http://willnorris.com/2007/02/one-year-at-usc' rel='bookmark' title='Permanent Link: One year at USC'>One year at USC</a></li>
<li><a href='http://willnorris.com/2007/12/wp-openid-moving-to-diso' rel='bookmark' title='Permanent Link: wp-openid moving to DiSo'>wp-openid moving to DiSo</a></li>
<li><a href='http://willnorris.com/2010/01/going-to-google' rel='bookmark' title='Permanent Link: Going to Google'>Going to Google</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>So it&#8217;s <a href="http://blog.vidoop.com/archives/111">not</a> <a href="http://www.readwriteweb.com/archives/messina_norris_vidoop.php">exactly</a> <a href="http://factoryjoe.com/blog/2008/05/13/im-joining-vidoop-to-work-on-diso-full-time/">news</a> <a href="http://kveton.com/blog/2008/05/14/solutions-more-than-technology/">at</a> <a href="http://redmonk.net/archives/2008/05/14/distributed-social-networkers/">this</a> point, but it is indeed true that as of today I am now employed by Vidoop.  This has been a few months in the making, so I figured I&#8217;d explain a little of why and how we got to this point.</p>

<p>I&#8217;ve been working in the Identity Management space for a few years now.  I started getting involved with the <a href="http://shibboleth.internet2.edu/">Shibboleth</a> project while at the University of Memphis.  After a year and a half, I moved to California and took a job at USC working in their middleware group.  I&#8217;ve spent the last two years there helping to develop and manage various parts of the Identity Management cloud including the LDAP directories, meta-directory processes, and their Shibboleth environment.  In October 2006 I formally joined the core Shibboleth development team, focusing on the Shibboleth 2.0 Identity Provider.</p>

<p>Meanwhile, I have also been toying with OpenID for a couple of years.  In early 2007 or so, I sort of took over development of Alan Castonguay&#8217;s OpenID plugin for WordPress.  I started with a couple of new features, then worked to add support for the latest OpenID protocol, lots of code refactoring, etc.  I got to know characters like Chris Messina, Scott Kveton, and a host of others.  I continued making updates to the WordPress plugin as I had time, but it never felt like enough.  Don&#8217;t get me wrong, I certainly enjoyed the work I was doing at USC and with Shibboleth&#8230; I just would have liked to have had more time for everything else as well.  Every now and then Chris or Scott would prod me about going to work at Google or somewhere to spend more time on OpenID and related technologies, but I wasn&#8217;t ready to leave my work at USC.</p>

<p>Late last year, Chris Messina and Steve Ivy announced the DiSo Project, initially based on my updated wp-openid plugin.  Within the first week after it was announced, I sat down with Chris and Steve and we decided it would be best to officially move the wp-openid plugin under the DiSo umbrella to allow for tighter integration with the other planned work.  Then a lot happened this last February in the social networking space &#8212; Google <a href="http://google-code-updates.blogspot.com/2008/02/urls-are-people-too.html">announced</a> the Social Graph API and <a href="http://sgfoocamp08.pbwiki.com/FrontPage">SGFoo</a> really got people talking more about enriching the OpenID endpoint (<a href="http://kveton.com/blog/2008/02/04/sg-foocamp-08-wrap-up/">among other things</a>).  Things were beginning to move pretty fast, and I felt like if I didn&#8217;t jump in now then I&#8217;d end up watching all the great new developments from the sidelines.  I spent the next few months interviewing with a number of companies active in this space and made a couple of trips to San Francisco to talk with them in person.</p>

<p>In the end, a dinner conversation with <a href="http://www.vidoop.com/management.php">Luke Sontag</a> had me sold.  I was quite familiar with Vidoop and their OpenID provider, knew they had a great development team, but had always been a little skeptical of the company.  After Luke gave me a better picture of their overall vision and where technologies like DiSo fit into that picture, I knew that these guys really &#8220;get it&#8221;.  They understand the importance of what DiSo is trying to do, and more importantly they are willing to do their part in making it a reality.  I love Vidoop&#8217;s OpenID implementation and have been using it since before I took this job, but that&#8217;s not why I did.  I took the job because the team at Vidoop know their shit, they know the kinds of problems we&#8217;re up against, and they are ready to take a shot at developing some real solutions.  Well that and I really can&#8217;t wait to get started working with Chris a lot more. :)</p>


<div class="related-posts"><p>Possibly related posts:</p><ul><li><a href='http://willnorris.com/2007/02/one-year-at-usc' rel='bookmark' title='Permanent Link: One year at USC'>One year at USC</a></li>
<li><a href='http://willnorris.com/2007/12/wp-openid-moving-to-diso' rel='bookmark' title='Permanent Link: wp-openid moving to DiSo'>wp-openid moving to DiSo</a></li>
<li><a href='http://willnorris.com/2010/01/going-to-google' rel='bookmark' title='Permanent Link: Going to Google'>Going to Google</a></li>
</ul></div>]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2008/05/why-im-going-to-vidoop/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>OSIS Interop Testing</title>
		<link>http://willnorris.com/2008/03/osis-interop-testing</link>
		<comments>http://willnorris.com/2008/03/osis-interop-testing#comments</comments>
		<pubDate>Mon, 03 Mar 2008 18:06:51 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[identity]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[diso]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[osis]]></category>
		<category><![CDATA[wp-openid]]></category>

		<guid isPermaLink="false">http://willnorris.com/2008/03/osis-interop-testing</guid>
		<description><![CDATA[The DiSo Project (well, wp-openid specifically) is participating in the Open-Source Identity System Interop Testing happening now until the RSA Conference in April.  WP-OpenID is an OpenID 1.1 and 2.0 consumer, and additionally uses the simple-registration extension.  We do not yet support attribute exchange.  Under the covers, we use the JanRain PHP [...]

<div class="related-posts">
Possibly related posts:<ul><li><a href='http://willnorris.com/2008/05/changes-to-wp-openid' rel='bookmark' title='Permanent Link: Changes to wp-openid'>Changes to wp-openid</a></li>
<li><a href='http://willnorris.com/2007/12/wp-openid-moving-to-diso' rel='bookmark' title='Permanent Link: wp-openid moving to DiSo'>wp-openid moving to DiSo</a></li>
<li><a href='http://willnorris.com/2008/09/the-next-steps-with-wp-openid' rel='bookmark' title='Permanent Link: The Next Steps with wp-openid'>The Next Steps with wp-openid</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://diso-project.org/">DiSo Project</a> (well, wp-openid specifically) is participating in the <a href="http://osis.idcommons.net/wiki/I3_User-Centric_Identity_Interop_through_RSA_2008">Open-Source Identity System Interop Testing</a> happening now until the <a href="http://www.rsaconference.com/2008/US/home.aspx">RSA Conference</a> in April.  WP-OpenID is an OpenID 1.1 and 2.0 consumer, and additionally uses the simple-registration extension.  We do not yet support attribute exchange.  Under the covers, we use the <a href="http://openidenabled.com/php-openid/">JanRain PHP Library</a>&#8230; a version somewhere between the 2.0.1 release and the latest code in the darcs repository.</p>

<p>Testers should be able to leave an authenticated comment on this page using any OpenID 1.1 or 2.0 provider.  We are aware of a bug that prevents interop with <a href="http://www.vox.com/">Vox</a> OpenIDs in certain cases.  Please do limit OSIS testing to this blog post.  If you run into trouble, you can <a href="/about">contact me</a> directly, or the <a href="http://groups.google.com/group/diso-project">DiSo Project List</a>.  Happy testing! :)</p>


<div class="related-posts"><p>Possibly related posts:</p><ul><li><a href='http://willnorris.com/2008/05/changes-to-wp-openid' rel='bookmark' title='Permanent Link: Changes to wp-openid'>Changes to wp-openid</a></li>
<li><a href='http://willnorris.com/2007/12/wp-openid-moving-to-diso' rel='bookmark' title='Permanent Link: wp-openid moving to DiSo'>wp-openid moving to DiSo</a></li>
<li><a href='http://willnorris.com/2008/09/the-next-steps-with-wp-openid' rel='bookmark' title='Permanent Link: The Next Steps with wp-openid'>The Next Steps with wp-openid</a></li>
</ul></div>]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2008/03/osis-interop-testing/feed</wfw:commentRss>
		<slash:comments>39</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>wp-openid moving to DiSo</title>
		<link>http://willnorris.com/2007/12/wp-openid-moving-to-diso</link>
		<comments>http://willnorris.com/2007/12/wp-openid-moving-to-diso#comments</comments>
		<pubDate>Mon, 10 Dec 2007 19:59:03 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[identity]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[diso]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp-openid]]></category>

		<guid isPermaLink="false">http://willnorris.com/2007/12/wp-openid-moving-to-diso</guid>
		<description><![CDATA[In case you missed it last week, Steve Ivy and Chris Messina announced the DiSo Project as an incubator of sorts to develop distributed social applications.  Initially, they will be focussing on plugins for existing publishing platforms like WordPress and Drupal.  On the WordPress side, they are using wp-openid as a foundation to [...]

<div class="related-posts">
Possibly related posts:<ul><li><a href='http://willnorris.com/2008/12/diso-one-year-later' rel='bookmark' title='Permanent Link: DiSo - One Year Later'>DiSo - One Year Later</a></li>
<li><a href='http://willnorris.com/2008/05/why-im-going-to-vidoop' rel='bookmark' title='Permanent Link: Why I&#8217;m going to Vidoop'>Why I&#8217;m going to Vidoop</a></li>
<li><a href='http://willnorris.com/2007/09/wordpress-openid-20-coming-soon' rel='bookmark' title='Permanent Link: WordPress OpenID 2.0 (coming soon?)'>WordPress OpenID 2.0 (coming soon?)</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>In case you missed it last week, <a href="http://redmonk.net/archives/2007/12/05/diso/">Steve Ivy</a> and <a href="http://factoryjoe.com/blog/2007/12/06/oauth-10-openid-20-and-up-next-diso/">Chris Messina</a> announced the <a href="http://www.diso-project.org/">DiSo Project</a> as an incubator of sorts to develop distributed social applications.  Initially, they will be focussing on plugins for existing publishing platforms like <a href="http://wordpress.org/">WordPress</a> and <a href="http://drupal.org/">Drupal</a>.  On the WordPress side, they are using <a href="http://wordpress.org/extend/plugins/openid/">wp-openid</a> as a foundation to develop additional plugins that build on OpenID to bring other social functionality to WordPress powered blogs.  I am therefore pleased to announce that wp-openid is moving under the umbrella of DiSo in an effort to allow better integration with the other social plugins that are being developed, as well as get some other really smart people working on the code.  I&#8217;ve been working with Chris on various identity projects for a while now, and have been very impressed with Steve&#8217;s ability to really grok this topic, so I have no doubt this move will be good for all involved.</p>

<p>Over the next week or two, I hope to get the wp-openid codebase migrated into the <a href="http://diso.googlecode.com/svn/wordpress/">DiSo subversion repository</a>.  The plan is to synchronize changes made there back over to wp-plugins.org so that the wordpress.org <a href="http://wordpress.org/extend/plugins/openid/">project page</a> as well as plugin update notifications will continue to work as they do now.  Any existing bug reports at wp-plugins will also be moved over to Google Code, which should provide some better features and flexibility.  If you&#8217;re interested in following the progress of wp-openid or the other DiSo projects, feel free to join the <a href="http://groups.google.com/group/diso-project">DiSo Google Group</a>.</p>


<div class="related-posts"><p>Possibly related posts:</p><ul><li><a href='http://willnorris.com/2008/12/diso-one-year-later' rel='bookmark' title='Permanent Link: DiSo - One Year Later'>DiSo - One Year Later</a></li>
<li><a href='http://willnorris.com/2008/05/why-im-going-to-vidoop' rel='bookmark' title='Permanent Link: Why I&#8217;m going to Vidoop'>Why I&#8217;m going to Vidoop</a></li>
<li><a href='http://willnorris.com/2007/09/wordpress-openid-20-coming-soon' rel='bookmark' title='Permanent Link: WordPress OpenID 2.0 (coming soon?)'>WordPress OpenID 2.0 (coming soon?)</a></li>
</ul></div>]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2007/12/wp-openid-moving-to-diso/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
	</channel>
</rss>
