From Microformats Wiki
Jump to navigation Jump to search

OpenID + microformats Brainstorming

This is a public space for capturing some ideas on how OpenID and Microformats can work together.

Relevant Microformats

  • hCard - for profiles
  • XFN
    • rel="friend" etc. for marking up relationships between profiles
    • rel="me" for identity consolidation among profiles
      • Can YADIS be extended to support rel="me"?

Ideas for use

  • see OpenID best practices.
  • re-use hCard (vCard) vocabulary for HTTP query based key-value pairs of information requested and returned

Replace SREG attributes with hCard

Replace Attribute Exchange attributes with hCard

Many attributes in the attribute registry established at are reinventions of properties defined in vCard specifications (and thus hCard). It would be preferable to reuse such vocabulary rather than reinventing it (see also Naming Principles).

OpenID whitelist authentication for private hCard

This brainstorm has been superseded by sign-in with IndieAuth to show more personal info

A blog can use the URLs in its XFN - The XHTML Friends Network Friendly blogroll as an OpenID whitelist to provide more information to those that login to the blog with one of those URLs. This technique can be used to provide more detailed private hCard 1.0 contact information to only a subset of people (or services). You could also build the whitelist of OpenIDs by parsing data out of a social network API or an aggregated list of XFN friends of friends (following the ideas on social-network-portability).

Tom Morris has implemented this on his blog, and on a "family extranet".

In his blog post MicroformatID, Jeremy Keith explained how Tom's blog works:

Tom has an hCard on his blog. By default the information provided is fairly basic: an email address, a URL and a vague physical address. Right by the hCard, there’s a simple form that allows you to log on using OpenID. If you log on and you’re on a white list of Tom’s friends, the hCard is updated to reveal more information: telephone numbers and a complete physical address.

That’s pretty clever. And when you consider that OpenID is a URL-based authentication system and XFN is also based around URLs, it would be pretty easy to have the white list correspond to an XFN list on the same page as the hCard.

hCard | OpenID | XFN… it’s like Unix pipes for the Web: small pieces, loosely joined.

Tom recently explained this a bit more in his blog post Are you on the list? / Once again, in English:

Here's what I'm trying to do. I have an hCard on my blog - over in the sidebar. I want to make it so that the people who want to get my contact details can. I've had the fun experience of auto-dialling with Skype when microformats are present, and being able to download phone numbers onto my phone. Basically, I want to simulate electronically the situation I have when one gives their business card out to someone without having to carry bits of card around with me. The user experience should something like this:

User: "I know Tom. I want to contact him by phone or send him something by post." User goes to my blog and enters their OpenID. If user is on list, user sees extra information - my home address and phone numbers. This is all in an hCard, so they can use hCard tools like Operator to use the information in a more useful way.

This is important, as often people want to make data available, but not to everyone. OpenID is a good way of letting people authenticate, but not as intrusive as having them sign up and have to give you their e-mail and so on.


Ideally, when we have a few more pieces in place, we will have it so that we can do automatic OpenID inference - if you have a WordPress blog and I list you as a friend on say, Flickr and Twitter, then you can get access to my personal details. Personal details are also just the tip of the iceberg - everyone has things which they want only some of their friends to be able to see or use.

The general overall plan is to make it so that network connections can be used as a way of providing or denying services. Some people are using this 'graph' of connections to determine whether or not you are a comment spammer.

  • Note from Tom Morris: My system is implemented using FOAF and SPARQL rather than XFN. It is possible, though, using GRDDL to implement XFN and hCard parsing into the system I currently have built. The technical component is done by compiling all the data from a variety of sources into a handful of FOAF files, then running a query like this: SELECT ?openid WHERE { <> foaf:knows ?person. ?person foaf:openid ?openid . } (with all the relevant prefixes) - this then emits an XML or JSON file (I use JSON), which is then uploaded to my site. The JSON is available here. I don't use XFN in this system because most of the social networks I am compiling data from already provide it via APIs which works better with the workflow. It would be trivial to add though, and something I will probably do quite soon. If anyone needs assistance implementing this, feel free to contact me.

Steve Ivy recently started analyzing how to implement this and diagramming processes:

<li class="vcard">
    <!-- openid url on the person's name -->
    <a href="" rel="acquaintance colleague"
          class="fn url openid">Chris Messina</a>
    <!-- blog url on the blog name -->
    - <a href="" class="url" 
            title="Factory Joe">Factory Joe</a>

Though it's not a standard, conceivably a spider processing whitelists could use the "openid" class to determine that a url page is an openid for the contact. Alternatively (and more definitively) follow each url and check to see if it is an openid url (<link rel="openid.provider"> or <link rel="openid.delegate"> perhaps?) -- Steve


See also