This is the post that I alluded to in my last one about Whispering Tweets. I’ll make a disclaimer right now that the title of this post is misleading and actually not about Groups for Twitter. In fact, I’m not at all convinced that groups (at least as they are commonly understood on sites like Flickr) are ultimately a good idea or a good fit for Twitter. But, I do think that there is certainly some merit to improving contextualization, content filtering and exploratory serendipity within Twitter. This is a rather messy proposal to that effect.
- “groups” or “shared-interest groups” (“Flickr-groups”)
- “groupings” (“ad hoc assemblages of people with similar interests” — Stowe Boyd)
- “contact groups” (organising my contacts)
And from Brian:
Okay, so we are talking about 3 kinds of groups: public groups you ‘join’ a la FB groups. Ad hoc groups users control whether via grouping management (Pownce) or tagging. And then we have context specific groups based on location (@ South Park, anyone want to walk to Philz?).
The type that I’m most interested in, and am prepared to offer a concrete proposal on, is actually of a fourth kind, most closely related to Stowe’s “groupings”, but with a slightly different lean, primarily in the model of how the grouping is established. In the cases presented above, there are very explicit approaches taken, since it’s somewhat taken for granted that groups imply a kind of management. Whether you’re dealing with public groups that you create, join and then promote or contact groups that you ultimately must manage like any kind of mailing list, they imply an order of magnitude of work that would ultimately work against the adoption of the whole grouping premise and thereby minimize any benefits to a select group of hyper-dedicated process-followers.
I’m more interested in simply having a better eavesdropping experience on Twitter.
To that end, I focused my thinking on contextualization, content filtering and exploratory serendipity within the Twittosphere.
It occurred to me that IRC presents a proven model for these needs with its foundation on channels, and so that’s what I’m generally going to call them.
Now, in thinking about implementing channels, it was imperative that I not introduce any significant changes into the way that I currently use Twitter any more than I have for other features that have been added to Twitter (for example, @replies or direct messages). Channels would need to be a command-line-friendly addition, and one that would require absolutely zero web-based management to make the most of it (to draw a distinction, Pownce fails this test with its Friend Sets, since it requires use of their website to take advantage of this feature).
Jaiku comes closest with their channels implementation, making it extremely easy to create new channels (simply post a message that begins with a hash (#) and your intended channel name — and if the channel doesn’t exist, it’ll be created for you):
This is how it works in IRC, and how it needed to work in Twitter. Where Jaiku’s implementation overextends, however, is in its concept of a channel. Rather than serving merely as an ad hoc verbal guidepost, channels act more like aggregation buckets in Jaiku, allowing you to pull in all manner of content via feeds and the like. It’s a great example of a bridging app for sure, but far beyond the straightforward functionality that I’m looking for from Twitter channels. In fact, Twitter channels could and probably should feed into Jaiku channels, but the inverse should not be true.
So, let’s get a bit more specific about what I am — and what I’m not — looking for from Twitter channels. A lot of people have made various suggestions towards implementing groups one way or another, but in order to be clear, I want to make certain functionality explicitly outside the scope of what I’m suggesting. Before I do that, I want to make a slight modification of the idea of a Twitter Channel.
I spent some time talking to l.m.orchard at BarCampBlock and (I think) he mentioned tagging in Twitter (he works at Del.icio.us; that tagging is a priority of his should be obvious). He’s been talking about this recently and offered a pretty neat suggestion on this topic.
Combining his proposal with Thomas Vander Wal’s concept of the folksonomic “Come to Me Web”, a fuller picture of these “channels” began to form. Soliciting opinions from the Twittosphere on the format helped, as did a conversation with Britt from Twitter on this idea.
What I’ve realized is that this “channel” concept meets many of the aggregate desires expressed in various “Groups for Twitter” discussions while not inheriting a lot of the unnecessary management cruft that most group systems seem to suffer from, it is easily accessible adapting current Twitter syntax and convention, it’s easy to learn and lightweight, it’s very flexible and entirely folksonomic and works with people’s current behaviors, rather than forcing anyone to learn anything radically new. It also keeps the interface aspects to a minimum (as I’ll soon explain), invents little by borrowing from age old IRC conventions also adopted by an existing web application and, from what Britt said so far, actually works consistently on cell phones (whereas, for example, the star key does not).
What’s really interesting, however, it how these channels can be used as tags within Twitter to open up entirely new possibilities.
Every time someone uses a channel tag to mark a status, not only do we know something specific about that status, but others can eavesdrop on the context of it and then join in the channel and contribute as well. Rather than trying to ping-pong discussion between one or more individuals with daisy-chained @replies, using a simple #reply means that people not in the @reply queue will be able to follow along, as people do with Flickr or Delicious tags. Furthermore, topics that enter into existing channels will become visible to those who have previously joined in the discussion. And, perhaps best of all, anyone can choose to
remove topics that don’t interest them.
I also like that the folksonomic approach (as in, there are no “pre-established groups”) allows for a great deal of expression, of negotiation (I imagine that #barcamp will be a common tag between events, but that’s fine, since if there is a collision, say between two separate BarCamps on the same day, they’ll just have to socially engineer a solution and probably pick a new tag, like #barcampblock) and of decay (that is, over time, as tags are used less frequently, other people can reuse them — no domain squatting!). It also enforces actual use in the wild of tags, since no evidence of a tag will exist without it first being used in conversation. This means that representing channels in tagclouds across the site that grow and fade over time, and are contextual to all of Twitter or to a single user, is the ideal interface for displaying this information.
Oh, and from a language/design perspective, you can actually turn regular words in a sentence into channels, just as many people do with @replies. For example: I’m coming to #barcamp later today.
So I think I’ve provided at least a vague overview of this notion of “Tag Channels” and that they’re simply used by prefixing one or more words with the hash (#) character. Contrary to my usually general ideation, I want to go a little further and get more specific (probably inspired by my work lately on OAuth).
Let’s see how specific I can get…
follow #tag: subscribe to all updates tagged with #tag
follow username#tag: subscribe to all updates tagged with #tag from a specific user
leave #tag: unsubscribe to a tag; you will still get updates with this tag from your friends
leave username#tag: unsubscribe to a specific from a specific user
remove #tag: completely remove all incoming posts tagged with #tag, even from your friends
#tag message: creates a status in the #tag channel
#tag !message: creates a status that is only visible to people subscribed to channel tag #tag
- In this first version, channels shall not be made public or private; using a channel tags in a status does not affect its privacy. Whoever could see a status without the channel tag can see the status with the channel tag.
- No one owns or administers a tag channel.
- A channel is created the first time someone posts a status with a channel tag.
- Channels cannot be deleted; the only way to remove a channel is delete all statuses with a particular tag (this is consistent with sites like Delicous or Flickr).
- The channel URL format on Twitter should be
http://twitter.com/#channel_name. This differs from Jaiku’s convention (
http://jaiku.com/channel/#channel_name) but follows the IRC standard.
- Channel names and usernames can overlap. Therefore,
http://twitter.com/factoryjoeis not the same as
http://twitter.com/#factoryjoebut both can safely exist.
- To join a channel, simply add a tag hash (#) like this: #barcamp The grid is open!.
- You can use any number of channels in an individual post, up to 140 characters, for example: #barcamp #barcampblock The grid is open!.
- Unresolved: You should be able to whisper to a channel (the status will show up in your public timeline but will not be sent to your friends who are have not joined the channel) by prefixing your message with a bang (!).
- You can subscribe to as few or as many channels as you like.
- You can leave a channel at any time.
- Via the API, using a new “roster” command (taken from Jabber) you should be able to get the recent list of people who have posted to a channel.
Twitter got a huge boost at last year’s SXSW conference. I’m thinking this year, rather than prefixing SXSW-specific messages with ‘sxsw’… tag channels could replace that hack with allowing people to simply insert #sxsw any where in their updates. This works for both the broader conference (organizers can post schedule updates using #sxsw) and for coordinating during the main event (the Interactive portion might use #sxswi and small groups of friends might pick random tags like #sxswbanc to plan around).
On top of that, it’s super easy to filter out statuses that use a specific tag (answering a complaint from folks not attending SXSW last year and overrun with SXSW tweets)… and, if you only want to subscribe to #sxsw statuses from certain people at SXSW, you can do that as well.
While this proposal is not at all finished, I think it presents a fairly simple and clear (at least in my head) plan for implementation of “group-like functionality” without violating the original premise of Twitter. The simple addition of tag channels means that people can track content and updates more relevant and interesting to them without exerting a great deal of extra effort or learning any kind of extraneous of syntax. While the interface on the website still needs to be resolved, the beginning steps look somewhat promising and workable.
So I guess that’s it. I’m eager to get feedback and to refine this proposal.
For now, we can discuss on Twitter using #channels as the tag; we can refine this proposal on the Fan Wiki under TagChannels.
One other aspect that I like about the emergent folksonomic approach to “grouping behaviors” on Twitter is that it doesn’t rely on special Twitter accounts to be created that do the auto-friending thing (which requires action by a Twitter employee). Instead all tag channels automatically “add back” everyone who uses the tag, as well as those who simply “join”. In terms of accelerating serendipity, this is a huge win for conferences and individuals, not to mention Twitter employees!