- rants.org - https://rants.org -

Thread Theory

Now this is a post I’ve been wanting to write for a while…

Conversational threads on the Internet should be independent of the medium they’re displayed in. That is, mailing lists, newsgroups, and web forums are all the same thing. They’re just different interfaces to the same data structure, and that data structure is the thread [1]: a series of messages with directional reply relationships to one another.

The thread is the fundamental unit of conversation on the Internet, and the message relationships in a thread are independent of the interface used to access it.

One reason I’m ranting about this is that people sometimes set up “web forums” [2] that behave like mailing lists except that you can’t read them with your regular email client. This is a tragedy, because for some of us our relationship with our email client [3] is like that of a chef with his knives. You know how chefs usually travel with their own knives, rather than use someone else’s? I like to travel the Internet with my own knives: when I’m reading threaded information, I want to do it with my threadreader, that is to say, my mailreader. I’ve spent a lot of effort making it behave in precisely the way that works best for me, and there’s no reason those behaviors shouldn’t apply to all the threaded information I encounter on the Internet. I think I’m not alone in this.

Some might object that it’s equally tragic that people set up mailing lists instead of web forums. But it’s not, really. Mailing lists at least have a mature and well-understood programmatic interface — email — that allows sites like Gmane [4] to provide the data via different interfaces. Gmane, by the way, seems to have independently arrived at the same conclusion [4] about threads being independent from the interfaces used to access them.

The web forums example is just the tip of the iceberg. If the lesson that threads are the fundamental units had really embedded itself deeply into the programming world, we’d have mailing list software that would allow you to subscribe to just one thread at a time (or, if the list server software wouldn’t do it, most client software would do it by filtering). Blog comment threads would be accessible via a standard thread interface that would allow them to be presented as mail, news, web forums, blog comments, or chopped lettuce. It’s all the same thing: a message and a bunch of followups, some of which have sub-followups, and so on (see Directed Acyclic Graph [5]).

I’m not asking everyone to use my mailreader, by the way. Indeed, I think it would probably drive most people insane. I’m merely saying that it would be good for us to have an explicit understanding of threads as the unit to focus on. What is a mailing list? It’s a big thread with a lot of subthreads. The charter (the declared purpose or topic) of the mailing list is an implicit initial message, and every message posted to the list is a “reply” to it; many of those messages are also replies to each other, of course.

What’s a blog post? It’s an initial message, and the comments are replies (and some comments are replies to replies, etc).

What’s a web forum post? It’s… Well, by now you can tell where this is going. I’ll stop here.

The world needs a unified conception of The Thread, something we can write programming interfaces for that then any client software can implement. This is not completely trivial, because in most messaging systems, the threads are not explicitly recorded. Instead, metadata attached to each message just says what earlier messages it is a followup to, and the threads are reconstructed from this. There is a certain richness, a possibility of variety, inherent in doing things that way, and we wouldn’t want to clobber that by making too naive a threading standard.

I wish I had time to work on it, but I don’t. I only have time to rant. So I’m ranting, in the hope that other programmers will agree that viewing all messaging systems as manifestations of The Mighty Thread is good way to look at things. Maybe someone can turn this idea into something useful.