monkinetic weblog | redmonk.net

Since 1999, IX Ed.

Archive for May, 2008

XRDS Simple for Movable Type

Tuesday, May 27th, 2008

DiSo is built on the idea of implementing social networking concepts on existing standards where possible. One of those standards is XRDS Simple, a service description and discovery format that is a part of several recent and upcoming standards including OpenID and OAuth. This weekend I decided to build a generalized service for Movable Type that implements XRDS.

XRDS Simple for Movable Type (version 0.1)

XRDS Simple for Movable Type implements XRDS Simple service discovery. New web services like OpenID and OAuth are encouraging the use of XRDS (eXtensible Resource Descriptor Sequence) (and specifically the new, simplified version) for service discovery.

XRDS Simple for Movable Type is a faceless application that gives plugins a way to register services to be advertised in the discovery document, similar to how plugins can register new streams with Mark’s Action Streams plugin.

Registering A Plugin’s Services

Sample configuration YAML:

xrds_services:
    openid2:
        type: http://specs.openid.net/auth/2.0/server
        # media_type:
        uri: http://endpoint.example.net
        namespace_id: openid
        namespace_uri: http://openid.net/xmlns/1.0
        priority: 10
        # local_id: http://redmonk.net
        local_id_handler: sub { "http://example.com" }

A plugin registers its services with XRDS Simple by including an xrds_services section in config.yaml. In that section are any number of service definitions, each listed under a unique identifier.

Within the service definition are a number of items which generally follow the XRDS Simple spec[1]. Of note are the namespace_id, namespace_uri, and local_id_handler.

Each service can register a namespace to be included in the xml declaration of the discovery document. The namespace_id and namespace_uri parameters are used to construct an xsmlns: attribute, like:

xmlns:openid="http://openid.net/xmlns/1.0"

XRDS also supports the concept of a local id - an identifier for this site or user on the service the discovery document points to. The local_id parameter will be added to the generated document in the service definition. Sometimes the local_id will need to be set programatically. In that case, pass in a coderef as local_id_handler.

local_id_handler: sub { "http://example.com" }

What’s it good for?

XRDS is developing as the discovery mechanism for a new generation of social applications. Eventually, Movable Type’s OpenID server and delegation could be changed to use this simpler yaml-based configuration, and let the plugin generate the appropriate XRDS document, instead of generating the document itself. As Movable Type begins to offer OAuth-based services, those too can be listed - per the OAuth Discovery spec.

Check it out

As this is a faceless application, and there are currently no services in MT using this code, this is really developer-preview code. Download and peruse the plugin - it’s very simple. I’d be interested in feedback on the code and the YAML format as well. Upcoming features include support for multiple Type and MediaType elements (per the spec), as well as support for passing a coderef for parameters instead of static values.

Download

Download XRDS Simple for Movable Type or check it out from the DiSo repository.

Fascinating Feynman

Tuesday, May 27th, 2008

I have no idea how to categorize this post from longnow.org about Richard Feynman, a fascinting and personal look at one of the giants of modern physics. Find yourself 20 minutes of pressure-free time and read it, then read it again.

Phusion on mod_rails

Tuesday, May 20th, 2008

Phusion, via Akita on rails:

Well, as you’ve stated, we believe that experienced Ruby on Rails developers don’t consider deployment to be a problem; probably annoying at most. They’ve automated/standardized the deployment process for a great deal with Capistrano scripts. Newcomers however see deployment as an insurmountable problem. Consequently, we end up having a situation in which the people who can solve the problem either don’t see a problem or aren’t motivated enough to fix the problem, while the people who do see the problem cannot solve it.

Furthermore, from our personal experiences, newcomers usually want to see immediate results. It’s very demotivating for those people to continue using Ruby on Rails if they have to manage tons of obscure configurations and clusters to ‘just successfully deploy an application’. This leads to very intelligent conclusions, such as that “Ruby on Rails sucks”. ;-)

This is exactly what killed my nascent interest in ruby-on-the-web. I continue to love ruby-as-intelligent-shell-script. I may have to give ruby-on-the-web another go.

OpenId and Oauth, An Introduction

Monday, May 19th, 2008

These are the slides from a presentation I gave to about 80 developers at work at a recent day-long training event.

Distributed Social Networkers

Wednesday, May 14th, 2008

Yesterday the news came out that Chris Messina, my DiSo co-conspirator, and Will Norris, author of the WP-OpenID plugin, are joining Vidoop to work on DiSo full time. This is excellent news, for Chris and Will obviously, but also for the ideas and ideals that DiSo represents.

DiSo’s stated goal is to be: “an umbrella project for a group of open source implementations of these distributed social networking concepts.” At the core, DiSo represents an ideal where online “social networking” is not limited to silo sites, where you can enjoy rich interactions with others in that silo at the expense of interacting with those outside. It also means that your online social identity is not a game of tetherball - where your idenity can follow you around some, but it’s still tied to that one provider (I’m looking at you, Google).

No, in the ideal that Chris, Will, Stephen Weber, myself, and many others envision, your identity, your friends/contacts, your interactions can be managed from a space that you control - your own site. This may be a weblog - WordPress is the DiSo Project’s first platform - or some other type of site, but it’s your site. And by building components on common internet standards (Microformats, OpenID, Oauth, XMPP, etc) your home on the web can join a larger network of people, regardless of platform, including but not limited to those users in the silos.

This is a large goal - a grand scheme if you will - and it’s being built in the open, piece by piece, by a group of developers who see the larger picture and are contributing their time, knowledge, and skills. Scott Kveton is someone who has been around the Open Web block and is excited about DiSo; by bringing Chris and Scott on board, he and Vidoop are investing in an open future that is looking bright for all of us.

MT Friends Progress

Thursday, May 1st, 2008

A few of you might be interested in my (frustratingly slow) progress on a Friends/Blogroll plugin for MT. You can watch it take shape in my Flickr set: MT plugin 101.