In Another brick in the cloud Dave Winer asked "how do you manage the global namespace in a loosely-coupled 140-character message network"?
Problem : Twitter users use the "@username" notation when they talk to or about another Twitter user. If we want to build a loosely-coupled microblog network, which notation can we use to reference any user on any plateforme ?
I tried several notations, and here is the one i think is usable and practical :
@[URL OF THE PROFILE PAGE, with http:// optional]
For example : @twitter.com/jy , @identi.ca/jy.
Here is an example microblog message from example.com:
This is an example using @twitter.com/jy and @identi.ca/jy and @jy.
This is how the message is stored at example.com.
When example.com shows the user his timeline, you can use this HTML:
This is an example using @<a href="http://twitter.com/jy">jy</a> and @<a href="http://identi.ca/jy">jy</a> and @<a href="http://example.com/jy">jy</a>.
It's totally optional, but it reduces visual clutter, and in practice you won't have often the same username from different systems in the same message.
Now, when another microblog system like anotherexample.com gets this message (via RSS, XMPP, snailmail, whatever), before storing it in his database, it should properly transform the usernames to make them global:
- transform @jy to @example.com/jy
- transform @anotherexample.com/jy to @jy (it's optional, anotherexample.com may decide to store @anotherexample.com/jy as-is, having all usernames stored in their global form)
Same for when you're cross-posting from example.com to anotherexample.com, you need to make all usernames global beforehand.
Note that the great advantage of this solution is that it's compatible with Twitter.com (as long as you have short tweets :-) , see later).
The previous example message would be transformed and cross-posted to twitter.com (via it's API) as :
This is an example using @jy and @identi.ca/jy and @example.com/jy.
Available 140 chars size aside, this form is even better :
This is an example using @jy and @http://identi.ca/jy and @http://example.com/jy.
because Twitter.com will properly highlight the links, and you can directly go to these profile pages at identi.ca and example.com
(otherwise Twitter.com will highlight "identi" and "example")
I think @example.com/jy is short enough that, when you have to type it by hand, it stays simple enough. But in most parts, you don't have to type those by hand, you microblog website or microblog client will write them for you, when you do a reply, an RT, or select the name in a contacts list.
The only problem attached to this solution is the size these URLs take. That's not a problem when you don't take Twitter.com into account and its 140 chars limit. (i think a global microblog system should not restrict itself to 140 chars, it's up to you to show 140 chars only in your software if you which).
The compatibility with twitter.com is essential, so i see a few solutions to the size problem :
- Do like SMS, break your message into 140 chars parts, and cross-post more than one tweet to twitter :-) (I'd say 2 will be the most common)
- Shorten your message before cross posting, and include a link back to the original message at the end of the tweet.
One last thing, as you have the person profile URL (http://twitter.com/jy) , you can fetch the profile page, and auto-discover it's RSS feed, to subscribe to it or get his last messages or whatever.