Understanding the Open Graph Protocol

All likes lead to Facebook

I attended Facebook’s F8 conference yesterday (missed the keynote IRL, but you can catch it online) and came away pondering the Open Graph Protocol.

In they keynote Zuck said (as Luke Shepard calls him):

Today the web exists mostly as a series of unstructured links between pages. This has been a powerful model, but it’s really just the start. The open graph puts people at the center of the web. It means that the web can become a set of personally and semantically meaningful connections between people and things.

While I agree that the web is transmogrifying from a web of documents to a web of people, I have deep misgivings about what the Open Graph Protocol — along with Facebook’s new Like button — means for the open web.

There are three elements of Facebook’s announcements that seem to conspire against the web:

  • A new format
  • Convenient to implement
  • Facebook account required

First, to support the Open Graph Protocol, all you need to do is add some RDFa-formatted metatags to the HEAD of your HTML pages (as this example demonstrates, from IMDB):

Simple right? Indeed.

And from the looks of it, pretty innocuous. Structured data is good for the web, and I’d never argue to the contrary. I’m skeptical about calling this format “open” — because it smells more like openwashing from here, but I’m willing to give it the benefit of the doubt for now. (Similarly, XAuth still has to prove its openness cred, so I understand how these things can come together quickly behind closed doors and then adopt a more open footing over time.)

So, rather than using data that’s already on the web, everyone that wants to play Facebook’s game needs to go and retrofit their pages to include these new metadata types. While they’re busy with that (it should take a few minutes at most, really), won’t they also implement support for Facebook’s Like button? Isn’t that the motivation for supporting the Open Graph Protocol in the first place?

Why yes, yes it is.

And that’s the carrot to convince site publishers to support the Open Graph Protocol.

Here’s the rub though: those Like buttons only work for Facebook. I can’t just be signed in to any social web provider… it’s got to be Facebook. And on top of that, whenever I “like” something, I’m sending a signal back to Facebook that gets recorded on both my profile, and in my activity stream.

Ok, not a big deal, but think laterally: how about this? What if Larry and Sergey wanted to recreate PageRank today?

You know what I bet they wish they could have done? Forced anyone who wanted to add a page to the web to authenticate with them first. It sure would have kept out all those pesky spammers! Oh, and anyone that wanted to be part of the Google index, well they’d have to add additional metadata to their pages so that the content graph would be spic and span. Then add in the “like” button to track user engagement and then use that data to determine which pages and content to recommend to people based on their social connections (also stored on their server) and you’ve got a pretty compelling, centralized service. All those other pages from the long tail? Well, they’re just not that interesting anyway, right?

This sounds a lot to me like “Authenticated PageRank” — where everyone that wants to be listed in the index would have to get a Google account first. Sounds kind of smart, right? Except — shucks — there’s just one problem with this model: it’s evil!

When all likes lead to Facebook, and liking requires a Facebook account, and Facebook gets to hoard all of the metadata and likes around the interactions between people and content, it depletes the ecosystem of potential and chaos — those attributes which make the technology industry so interesting and competitive. It’s one thing for semantic and identity layers to emerge on the web, but it’s something else entirely for the all of the interactions on those layers to be piped through a single provider (and not just because that provider becomes a single point of failure).

I give Facebook credit for launching a compelling product, but it’s dishonest to think that the Facebook Open Graph Protocol benefits anyone more than Facebook — as it exists in its current incarnation, with Facebook accounts as the only valid participants.

As I and others have said before, your identity is too important to be owned by any one company.

Thus I’m looking forward to what efforts like OpenLike might do to tip back the scales, and bring the potential and value of such simple and meaningful interactions to other social identity providers across the web.


Please note that this post only represents my views and opinions as an independent citizen of the web, and not that of my employer.

The social agent, part 5: Narrated Video

Two weeks ago, I published the first four parts (1, 2, 3, and 4) of The Social Agent, my addition to the Mozilla Concept Series focused on online identity. I provided both interaction mockups and written essays illustrating the thinking behind the designs. While this work invited some feedback, I fear that my essays suffered from the TL;DR syndrome. Consequently I decided to try one more medium to explain The Social Agent: narrated video.

There are six videos in the series; you can also watch the entire uncut screencast (parts 1-6) if you’ve got a half hour to spare. Here they are:

Introduction

Identity in the Browser

People, Apps & Pages

Share

Follow

Connect

I’d be eager to hear your feedback, here or by email. There is also a mailing list that Mozilla set up to capture feedback.

If these ideas interest you, I’d also recommend checking out the Account Manager and Contacts prototypes that Mike Hanson, Dan MillsRagavan Srinivasan and the Mozilla Labs team produced.

The social agent, part 4: Share

Mozilla Labs Official ConceptThis is the fourth part of the five part Mozilla Labs Concept Series on Online Identity. This post introduces the “Share” verb as a core feature of the social agent. Historically, browsers have relied on email for sharing, but it’s time that the browser did more to make it easier to share across networks — while at the same time reducing unnecessary clutter on webpages. This post describes how sharing could be built in the browser.

Previous entries in the concept series include: Part 1: The Social Agent, Part 2: Connect, and Part 3: Follow.

Also take a look at the rest of my mockups (view as a slideshow) or visit the project overview.

. . .

Looking back, it’s quite plain to see that web browsing, email and chat co-evolved, each being the domain of different applications, and being powered by non-interoperable protocols. Over time, people grew used to separating information consumption from information exchange. The dual use of applications like Firefox and Thunderbird demonstrate this situation, as though sharing and consuming were completely distinct modes of computing.

However, people largely treat these behaviors as one in the same — they’re nearly as eager to share what they discover on the web as they are excited to discover it. It’s just that email is one of the few (clunky) tools they have. And yet, imagine what the experience is like for the uninitiated — launching a browser for the first time (especially if they aren’t inured to the ways of email). They’re going to find it terribly frustrating to share something they find on the web, no matter how great their natural desire is to share it.

This functionality should be supported by our software — browsers included! Social computing is about combining both discovery and sharing — and the social agent can, again, manage such transactions.

Sharing in modern browsers...

Thus, it’s disheartening (is it not?) that the most advanced sharing feature that browsers offer today — in 2010 — is a hand off to your preferred local email client, adding friction and interrupting your flow. Should you really need to launch a separate app just to share a link? ?

Meanwhile, it’s become all the more common to publish content openly on the web — a public display of sharing. While historically people have been hesitant to be too open online, the success of public-by-default services like Flickr over private-by-default services like Kodak EasyShare prove the durability of this trend, which is also manifest in services like Delicious, StumbleUpon, Twitter, and Facebook. It’s clear that relying on email as the primary mechanism for sharing is useful, but not sufficient for today’s web user — whose network is increasingly not found in their email address book.

Enter: the social agent.

Recall that the social agent already manages the people and topics you follow and your relationships with various parties. The next step is to add sharing to the browser. In this way, the tool that you use to discover content will be the same tool that you use to share and rebroadcast that content. Thus sharing becomes a natural part of your routine, and you become a participant-creator of the social web.

ShareThis interface

Now, of course it’s not sufficient to just add a sharing button and call it a day. That’s what so many websites already do, marring their pages with a bunch of tiny icons intended to help you share better! Well, your social agent should banish those annoying pests and make it easier for you to share the links and content with the people that you care about. Sure — for web savvy folks this isn’t necessarily a problem — but as websites become more dynamic and complex, there is a need to make sharing much more straightforward and integrated.

So suppose you visit the New York Times homepage and spot a story you think your friend would be interested in. If you used the “Send Link…” function, you’d end up sending a link to the homepage: nytimes.com. By the time your friend visits the site, the article you wanted to share might have already fallen out of site. Sharing fail!

Yet, you didn’t do anything wrong. You saw something that you wanted to share and used the only tool your browser gave you. Regardless, you still want to share the story!

The sharing selector facilitates intentional sharing

There are a number of ways that the social agent could help you gracefully achieve this, whether you want to share a video, photo, blog post, article, event, or other common web document. For one, the browser can ask you to indicate specifically which item(s) you want to share. It can then attach extra information (related links, titles, descriptions) to your share to enrich your message (Facebook already does this for those of you who have figured out how to use Facebook’s sharing bookmarklet).

Let's send this as a message...

Again, the familiar sharing widget appears, prefilled with addresses from the profiles in that bundle

The browser can also tell you what methods it has available to share content with certain friends, or can make a list of your contacts or friends available through a familiar and convenient auto-suggesting textbox.

Let's drag this item instead...

This means that the browser should help you drag and drop content to your friends, and between any compatible web sites or services.

Additionally, the browser can also maintain a history all the items you’ve shared, giving you the ability to search across them, and bring them back up quickly. You could also filter by recipient, service, time, or where you were physically located when you shared.

Dropped image (from one web app to another!)

Viewing the metadata of the dropped image...

The browser can also follow the items you’ve shared to watch for updates or other changes like new comments. Since following is a feature we’ve already discussed, it’ll suffice to say that the items you share will be recorded and followed for new updates, which will be available in your activity dashboard.

Given how prevalent sharing information has become now that nearly everyone can be reached online, a modern browser should support this behavior in order to make the experience more universal, discoverable, easier to use, and more convenient.