A few weeks ago I suggested merging Topic Exchange and K-Collector together, or at least bring the two sets of functionality closer together. I figure I'll take a leaf out of Marc Canter's book and try and rally the community together on this project. I'm hoping the respective developers of Topic Exchange and K-Collector can get together and figure out some easy solutions. I'm happy to set up a mailing list or wiki to co-ordinate this? 

It has to start somewhere and where better than from a humble user's perspective - i.e. me. So here's what I've done so far to get the ball rolling and I want to challenge others to build on this (or if its wrongheaded, suggest other ways to merge KC and TE's functionality).

When I was using Radio Userland, I had my site hooked up to K-Collector using their add-on tool for Radio Userland. When I moved to Movable Type a couple of weeks ago, I had to cease my connection to K-Collector because as far as I know it's a Radio Userland-only tool (although there was talk of an MT add-on being developed?). So tonight I did some tinkering with my blog, to 

1) try and re-enable community topic sharing for my weblog; and 

2) to resume my project to get an internal topic navigation system running (I had done some initial work with XSLT at the beginning of the year, but that fell by the wayside...).

Now, there is one major thing that Topic Exchange and K-Collector have in common: they both use ENT (Easy News Topics), which is an extension of RSS. Paulo and Matt created ENT as a simple form of topic mapping - and recently they've been talking of upgrading it. When I used Radio, whenever I published a post I also selected some topics from the K-Collector Radio add-on tool. This added the topics to my RSS feed, like so:

<ent:cloud ent:href="http://w4.evectors.it/itEntDirectory/topicRoll.opml">
<ent:topic ent:classification="what" ent:href="http://w4.evectors.it/itEntDirectory/topic?topic=strategy" ent:id="strategy">Strategy</ent:topic> 
</ent:cloud>

As I understand it, the K-Collector website then aggregated my post to whatever KC topic was specified in the ENT tags in my RSS file ("Strategy" in the example above).

Because I'm using Movable Type now, I needed to find another way to specify topics. The great thing about MT is that it has spare fields where you can basically add whatever you like. So I decided to use the previously unused "Keyword" field to hold all my Topic data. This will serve two purposes: 1) I can hopefully get Topic Exchange and K-Collector to aggregate my posts based on the topic data I enter using this field (more on that in a minute); and 2) I will use it also for my own internal topic navigation. So this allows me to match my own topic navigation to the community topics (in TE and KC).

The next thing I did was alter my RSS template. Firstly I declared the ENT namespace in the <rss> element, like so:

<rss version="2.0" xmlns:ent="http://www.purl.org/NET/ENT/1.0/">

 Next, I added the ENT tags. Now for this I decided to start off using Topic Exchange, because it happens to be a perfect fit with the <$MTEntryKeywords$> tag which I'm using for my topics. If you look at the Topic Exchange RSS feeds for each channel, it makes it easy to swap in my MTEntryKeyword. e.g. this is from the TE "Technology" topic:

<ent:cloud ent:href="http://topicexchange.com/topics">
<ent:topic ent:id="technology" ent:href="http://topicexchange.com/t/technology/"> technology</ent:topic> 
</ent:cloud>

Because all the TE URL's are in the format "http://topicexchange.com/t/" and the id perfectly matches the topic name, it's easy for me to swap in my MTEntryKeyword. Here's what I added to my RSS template in MT:

<ent:cloud ent:href="http://topicexchange.com/topics">
<ent:topic ent:id="<$MTEntryKeywords$>" ent:href="http://topicexchange.com/t/<$MTEntryKeywords$>/"> <$MTEntryKeywords$></ent:topic> 
</ent:cloud>

I added this just above the ending <item> tag.

NB: it may be just as easy to do this with KC, I haven't checked that yet. However KC has the additonal component of the ent:classification tag, so I decided to tackle TE first as it didn't have that extra tag.

So that's my RSS file ENT-enabled. Now whenever I add a new entry to my weblog, I simply enter the Topic Exchange topic name into my "Keywords" field. When published, this adds it to my RSS file in the ENT tags specified above - which at the moment map exactly to Topic Exchange's format. But...I still have to manually send a ping to TE under the current TE system.

So here's my suggestion (and I apologise if this has been suggested before - I'm sure it has!). What if we, the users, could register our RSS files with Topic Exchange and K-Collector, and both of those services then regularly poll all registered RSS files - say hourly - and pick up any new posts that have ENT tags in them? So in effect Topic Exchange and K-Collector act like RSS Aggregators (e.g. Bloglines) and poll users RSS files, rather than the users having to manually ping the TE and KC websites. It makes more sense for the Aggregator to do the work, rather than the person/blogger.

The beauty of this idea is that we - the users - can use ENT as our 'Topic Central'. That is, we specify our topics in the RSS - and that's the end of our part of the job. It's then up to the TE and KC aggregators to poll registered RSS files and collect all the new ENT tagged data. If e.g. both TE and KC have a topic named "technology", then great they won't have to do any work to add them to their respective clouds. There is a bit of work of course when the topic names and/or ids don't match up - but that's solvable surely? e.g. some form of topic mapping between TE and KC.

So what do you all think? I'd really like to see some action to merge the functionality of TE and KC together - for the good of the community (rah rah!).