The USS Quad Damage

Twitter: The missing feature

Most people think of the Twitters as a "news" service. Computer scientists know better.

Twitter is a messaging bus, similar to DBus and Growl. The difference is that the messages are often read and interpreted directly by people. People have built “applications” on top of this messaging bus, like IRC (with #tags), or messaging (with @tags), or indeed, news (by following news sources). In fact, even the “messaging bus” idea is sort of loose, because the channels can be formed dynamically at “run-time”. However, twitter’s missing a feature which most messaging bus services already contain. Fortunately, twitter’s got a feature bus services don’t have.

<larkson>Retweeting <clarkson>

Retweeting was, again, an “application” built on top of twitter, but the twitter guys had the wisdom and genius to include it as a bona fide feature. As a “social” platform, this makes sense, but as a messaging bus, this is downright novel. It’s a feature that allows a system or service (or a person in twitter’s case) to re-broadcast an event / message from someone who is not on the same bus. That is, if I’m listening to a sound driver (or “Mr Sound Driver” in twitter parlance), and the sound driver can’t play audio because the (Mr) network driver is down, then it can “re-tweet” the network driver error. This is messaging bus polymorphism! EPIC!

There is a feature which twitter doesn’t have though, which almost all messaging buses have, in one form or another. Luckily, this feature is re-implementable using retweet. This feature is abstraction. In most messaging buses, there’s a way to “follow” services when you don’t know anything about who or what is implementing that service. This has to be done in a relatively secure way, so no one can pretend to be that service, but the listeners still don’t know anything about what that service is, or what it does.

As an example in the twitter world, let’s say Bob works for a company “McNulty”. If Bob’s well known enough, he could tweet to #mcnulty, and everyone will know that Bob is representing McNulty in that context. This happens for TV shows. However, normally, there’s an account for the company, such as “@McNulty”. Bob will have to use that account for official McNulty correspondence. This means that if Jane, who also works for McNulty, wants to represent McNulty, she will also have to know the username / password combination for McNulty. This is problematic for obvious reasons.

Introducing: the retweetbot. OK, I haven’t actually implemented this, but I can’t imagine it’s a lot of work. Basically, you give the bot a twitter username and password, and a list of users to retweet. Then, the bot will follow those users and retweet anything those users say (potentially only if the users tweet with a hashtag). This allows one person to have access to the @McNulty retweetbot, and add and remove users as they wish. The users, when they want to act in official correspondence to McNulty, will tweet with a particular hashtag, say #McNulty. Then, people following @McNulty can see any official correspondence. This will complete twitter as a proper messaging bus.