Twitter URLs: Are Microformats The Answer To A Real Problem?
Somehow I turned my head, and while I was focusing on other things (like social business, 301works.org, and a long list of other topics) Microsyntax is breaking out everywhere.
A few weeks ago, I was pinged by Andy Mabbett about this idea of his, a new protocol for Twitter links: Twitter: A Microformat In Lieu Of A Protocol. In that post, he referred back to an earlier post, where he outlined the problem, which has to do with the fact that many Twitter clients create alternative URLs for tweets and user profiles:
[via Twitter: canonical URLs and Protocols]
On Twitter, I’m twitter.com/pigsonthewing, but in my preferred twitter client, Dabr, I’m dabr.co.uk/user/pigsonthewing. We might refer to the former as the “canonical” URL.
There are a number of other web-based Twitter clients, too, and people using them can find my twitter stream, variously, at:
- m.twitter.com/pigsonthewing
- accessibletwitter.com/app/user.php?uid=pigsonthewing
- m.slandr.net/user?id=pigsonthewing
- tweetree.com/pigsonthewing
- m.tweete.net/pigsonthewing
- hahlo.com/user_timeline.php?user=pigsonthewing
- www.twitstat.com/m/index.php?userid=pigsonthewing
[…]
Anyone using one of those services, and who wants to link to my profile
or one of my tweets will either post the URL as it appears in their
service, which isn’t much use to people not using that service, or
expend time and effort translating the URL into the generic, canonical,
Twitter format — which even ten may not be of much use to someone using something else.
Before digging into Andy’s solution for this, I wondered if it is a real problem: do users actually encounter this problem? For most power users, they are in fact using clients, but usually clients like Tweetdeck or Tweetie, which run as apps on user’s PCs or mobile devices, not web clients. The great majority of folks using web clients use Twitter, which is the ‘canonical’ URL creator, which again, poses no problems.
I have an account at Tweetree, and yes, it is possible to get a URL that points to a Tweetree version of a tweet, like http://tweetree.com/posts/6672240035. But the great proportion of UX around URLs — even in a web client like Tweetree — is mediated by the social channels of RT and @mention. In those cases, Tweetree and the other web clients have to convert the user’s actions into API calls, so that Twitter can do the right thing.
That only leaves one tiny use case to worry about: the differentiation of the URL at Tweetree, when someone might want the client’s version of a page — for example, I might have a more elaborate profile page in Tweetree — as opposed to the base Twitter page. But Tweetree already provides me those URLs.
It seems to me that the solution to this problem is the one taken by Tweetree: offer the option of getting the original, ‘canonical’ URL from any page where it makes sense. That doesn’t seem to satisfy Andy, though:
The answer (in the short term) is to use a microformat (or a
microformat-like “poshsformat”, if you prefer to call it that) for each
case. Let’s say we use the classestwitter-user&twitter-status.User-agents (that’s jargon for browsers) could then employ a script
(such as those used by GreaseMonkey, or a Firefox extension) to ignore
the encoded URL and substitute the equivalent for the user’s preferred
Twitter client instead.For links to user profiles:
<a
href="http://twitter.com/pigsonthewing">
Andy Mabbett
</a>would become:
<a
class="twitter-user"
href= "http://twitter.com/pigsonthewing">
Andy Mabbett
</a>and:
<a
href="http://accessibletwitter.com/app/user.php?uid=pigsonthewing">
Andy Mabbett</a>would become:
<a
class="twitter-user"
href=" http://accessibletwitter.com/app/user.php?uid=pigsonthewing">
Andy Mabbett</a>Likewise, for individual statuses:
<a
href="twitter.com/pigsonthewing/status/1828036334">
something witty</a>would become:
<a
class="twitter-status"
href="twitter.com/pigsonthewing/status/1828036334">
something wittyg<a>and:
<a
href="accessibletwitter.com/app/status.php?1828036334">
something witty<a>would become:
<a
class="twitter-status"
href="accessibletwitter.com/app/status.php?1828036334">
something witty<a>and:
<a
href="m.slandr.net/single.php?id=1828036334"
something witty</a>would become:
<a
class="twitter-status"
href="m.slandr.net/single.php?id=1828036334">
something witty</a>To simplify matters, the rules for extracting the user ID or the status update could be the same in both cases:
- Parse the value of the href attribute of the element to which the class applies.
- If there is a question mark, use everything after that.
- Otherwise, if there is an equals sign, use everything after that.
- Otherwise, use everything after the last slash.
That would deal with all the examples in my earlier post.
So, if you’re using a user-agent which is aware of this microformat, and find on a page:
<a
class="twitter-user"
href="http://twitter.com/pigsonthewing">
Andy Mabbett<a>
said
<a
class="twitter-status"
href="m.slandr.net/single.php?id=1828036334">
something witty<a>but your preferred Twitter client is Dabr (one I recommend, BTW!) then your browser would treat (and possibly render) that as:
<a
href="dabr.co.uk/user/pigsonthewing">
Andy Mabbett<a>
said
<a
class="twitter-status"
href="dabr.co.uk/status/1828036334">
something witty<a>
Oh yes, Simple.
To say the least, this is way overkill for a small problem. And it’s a microformat solution, which is about how things are represented in the underlying HTML created by and interpreted by the apps.
A microsyntax approach would be something visible in the stream, like including a prefix in front of an @mention or retweet to denote original or desired client:
dabr@pigsonthewing Nice profile!
Here, the implication is that I am referring to Andy’s profile on the Dabr client.
Anyway, I won’t elaborate that example, since I think the original problem is too limited to matter to most people.