#OpenWebTO: Discovery Edition

The second #OpenWebTO meetup is happening on Tuesday, April 20th at 7pm. We’re at the Centre for Social Innovation again but this time on the 1st floor.

For this meetup, James Walker (walkah) is going to be presenting WebFinger / The Hammer Stack. This will be a fairly in-depth look at the various pieces that make up Hammer Discovery Protocol Stack (XRD, LRDD, /.well-known, etc) and how they fit together. I’ve spent some time looking at the big picture of this stuff, but have yet to dive into the minutiae, so I’m looking forward to this.

James works for StatusNet and is one of the authors of the OStatus 1.0 Draft.

There’s still plenty of space, so if you’re interested in discovery, or just want to chat about Open Web stuff, sign up on Guestlist. See you there!

Community and Platform Building

In June 2009, I started working for FreshBooks – an online billing service based here in Toronto. My official job title is Team Lead, API & Integrations, but in FreshBooks tradition I’ll probably come up with something more clever sounding eventually. When I started, I was mostly doing bug fixes and enhancements to the API, but my role has become a little higher level now and my focus has shifted to building the platform in general, as well as the community of developers who are using it to add value for our customers.

So the way I see it, there are two facets to my job: platform development (coding) and community development (evangelism, support). On the technical side, this involves building things like our recently announced webhooks implementation, and helping make decisions about the direction of our API. Because we don’t want to waste our time inventing Beautiful Fucking Snowflakes, it also involves keeping an eye on developments in various open web communities, and deciding what standards, specifications and ideas can be usefully implemented at FreshBooks. On the community side, things are decidedly less clear to me. I have some thoughts (open source example projects, better library support, more forums for developers to talk, etc) but I’m mostly interested in hearing from others. What do you look for from service providers that have an API? What do you wish that companies would do to help and encourage developers working with their products? What companies do this particularly well, and why? I have some ideas of my own, but I’m really interested in what other people think. You can comment here or hit me up at paul at freshbooks dot com.

#OpenWebTO Meetup

On Tuesday, March 2nd at 7pm, I’ll be hosting the first #OpenWebTO Meetup at the Centre for Social Innovation. My goal is to get a group of people interested in open web tech together to present, chat, and share ideas. The first meeting will be focused on figuring out what people want out of such a gathering, and what topics in particular are popular. I’m going to do a quick presentation on how I see the current landscape of open web tech and hopefully get some discussion going. Open web technology is a pretty broad topic, so it’s probably helpful to say that I’m thinking specifically of protocols like OpenID, OAuth, Portable Contacts, WebFinger, Webhooks / PubSubHubbub, Activity Streams, and similar.

The more the merrier of course, so if you’re in the Toronto area and have an interest in open web technologies, come on out and join us! Details are on Guestlist.

Google Webfinger

This is pretty old news, but I missed the original announcement and I think it’s pretty interesting.

Google have implemented an alpha of the WebFinger protocol. If you have a Google profile, click on “Edit your profile” and add ‘webfingeralpha’ as an interest. Congrats, your gmail address is now a WebFinger identifier and will resolve to an XRD file containing information about services you use (if you’ve included that information in your Google profile).

This is pretty fun to play around with. Given an email-like identifier, such as evalpaul@gmail.com, get the host-meta XRD file for the domain:

paul@knuth ~ $ curl -i http://gmail.com/.well-known/host-meta
HTTP/1.1 200 OK
Content-Type: application/xrd+xml
Transfer-Encoding: chunked
Date: Mon, 01 Feb 2010 12:36:47 GMT
Expires: Mon, 01 Feb 2010 12:36:47 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Server: GFE/2.0
...
<?xml version='1.0' encoding='UTF-8'?>
<!-- NOTE: this host-meta end-point is a pre-alpha work in progress.   Don't rely on it. -->
<!-- Please follow the list at http://groups.google.com/group/webfinger -->
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0' 
     xmlns:hm='http://host-meta.net/xrd/1.0'>
  <hm:Host xmlns='http://host-meta.net/xrd/1.0'>gmail.com</hm:Host>
  <Link rel='lrdd' 
        template='http://www.google.com/s2/webfinger/?q={uri}'>
    <Title>Resource Descriptor</Title>
  </Link>
</XRD>

Now that you have the URI template, get the XRD file for the specific user:

curl "http://www.google.com/s2/webfinger/?q=acct%3Aevalpaul%40gmail.com"
<?xml version='1.0'?>
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>
	<Subject>acct:evalpaul@gmail.com</Subject>
	<Alias>http://www.google.com/profiles/evalpaul</Alias>
	<Link rel='http://portablecontacts.net/spec/1.0' href='http://www-opensocial.googleusercontent.com/api/people/'/>
	<Link rel='http://webfinger.net/rel/profile-page' href='http://www.google.com/profiles/evalpaul' type='text/html'/>
	<Link rel='http://microformats.org/profile/hcard' href='http://www.google.com/profiles/evalpaul' type='text/html'/>
	<Link rel='http://gmpg.org/xfn/11' href='http://www.google.com/profiles/evalpaul' type='text/html'/>
	<Link rel='http://specs.openid.net/auth/2.0/provider' href='http://www.google.com/profiles/evalpaul'/>
	<Link rel='describedby' href='http://www.google.com/profiles/evalpaul' type='text/html'/>
	<Link rel='describedby' href='http://s2.googleusercontent.com/webfinger/?q=evalpaul%40gmail.com&amp;fmt=foaf' type='application/rdf+xml'/>
</XRD>

EDIT: Google have since rolled out WebFinger support for everyone with a Google Profile. You no longer need to add ‘webfingeralpha’ to your interests.

Social Web Workshop

Chris Messina was in Toronto last week and ran a full day workshop on social web technologies at the Centre for Social Innovation. He had delivered a talk the night before called “Identity is the Platform” (slides) and the workshop focused on many of the same topics. The simplest way that I can think of to explain the premise of both is: 1) The web is becoming more social and 2) The data you create on the web has value.

The workshop was fairly interactive with people from the audience asking questions or raising points every so often. It was a pretty diverse group professionally speaking, made up mostly of software developers, technologists, designers and some marketing people. The material wasn’t very technical, which I found disappointing, but given the crowd it was the only thing that made sense (I guess for some reason I expected more developers).

The real take-away of the workshop was an overview of various open standards and protocols that can be used together as a sort of Open Web stack. The usual suspects were discussed: OpenID, OAuth, PubSubHubub and a few that were fairly new to me: Portable Contacts, Activity Streams and the Salmon Protocol. Chris also spoke a bit about the Mozilla Drumbeat project which certainly looks interesting.

At the end of the workshop we got into groups and brainstormed about how social web technologies could be used to create a better web. I co-opted my group to talk about how FreshBooks (my employer) could be made more social. Some really interesting ideas were brought up and I think it’s a great case study for working with a community that already exists (as opposed to building a community for a new social application).

The workshop was great. I’m glad I had the opportunity to participate and I definitely came away with a few thoughts and ideas. For one, it could be a worthwhile project to document existing or create new open source projects that use open web technologies. Often it’s easy to find sample code, but it’s usually stripped down and not very useful. Real, concrete examples from open source projects could be extremely useful for developers looking to implement support for open technologies and protocols.