I've had this idea of "Topic Arenas" or "Knowledge Centers" for a while now (heck, I even claim their existence on the front page, but I think I left it ambigious enough that no one will really know what it means). My idea is that one could go to http://blog.case.edu/topics/<topic_name> and get a listing of any Blog@Case posting done by any other on the subject of <topic_name>. So, for example, a user could go to http://blog.case.edu/topics/law and get any listing of any entry under the topic of "law."
How was I planning on doing this?
I had two ideas. My first idea was to take the MTWholeSystem plugin and modify it to accept a "categories" attribute. Then, every x minutes, have a job that runs, checks the blog system for new categories, and generates a blog for each category used in the entire system (and rebuild all the existing category blogs so they get updated).
I began to dislike that idea, though. Suppose there are n blogs each with m categories. That means that there could possibly be m * n blogs generated to do it this way (assuming absolutely no element of m was duplicated, which is unlikely... but whatever, you get the idea).
The second way to accomplish this is through some mod_rewrite and some Perl (or PHP or Python or Ruby or whatever (just not Java — not my cup o' tea)). I could rewrite every http://blog.case.edu/topics/name to http://blog.case.edu/topics/?topic_name=name. Then, from the program, look through the blog system and dynamically generate the listing of entries corresponding to the requested topic.
I think that is the way to go.
There's a second feature I want to do with these "topic arenas," and that is to make it a sort of framework that others could use to do interesting things. What interesting things? I don't know. Maybe some inspired, young Sophomore Computer Engineer out there will think of something. Or, maybe some Comp. Sci. major will do something with them for his/her Senior project. Maybe I'll do something interesting with them (← most likely scenario if it ever gets used at all).
At any rate, how I want to do this is to make the output of http://blog.case.edu/topics/<topic_name> pure XML — easily parseable goo. Parse parse parse... munge munge munge.
Of course, I have two problems. 1) I need an XML format to use. 2) If it is XML, how do I get it so browsers will display it nicely?
For the format, I have several choices: one of the RSS flavors, Atom, XHTML, or concoct my own. Concocting my own is out because, well, that's just stupid. XHTML solves problems 1 and 2 but carries a lot of cruft with it. Atom hasn't been finalized (even though I would like to use that). RSS is a widely adopted format and would allow these topic mappings to be used in aggregators and embedded in other web sites. So, RSS it is.
Using RSS still leaves me with the "display it nicely in a browser" problem. Luckily, you can use XSLT to transform RSS to HTML. See it in action (for an Atom feed) here (view the source to get the big picture).
That's my idea for "topic arenas." Of course, I need to finish the Blog Wizard first.