Introducing Subkismet-The Cure For Comment Spam

0 comments suggest edit

Update: I’ve created a new NuGet Package for Subkismet (Package Id is “subkismet”) which will make it much easier to include this in your own projects.

Been a short break from blogging, but I’m ready to get back to writing aboutCody, I mean code!

My philosophy towards Open Source Software is that the more sharing that goes on between projects, the better off for everyone. As my friend Micah likes to say, A rising tide lifts all boats.

Towards that end, I’ve tried to structure Subtext as much as possible into distinct reusable libraries. The danger in that, of course, is the specter of premature generalization.

I haven’t always been successful at avoiding premature generalization which has led me to focus on consolidating code into less assemblies rather than more. My focus now is to let actual reuse guide when code gets pulled into its own library.

However, there is some useful reusable code I’ve written that is already in use by many others in the wild. This is code included in Subtext as part of its defense system against comment spam. For example:

I contributed the Akismet code to the DasBlog team who I am sure have made adjustments specific to their blog engine. The challenge I face now is how do I get any improvements they may have made back into my own implementation?

a can of
no-spam To answer that, I created the Subkismet project. It’s more than just an Akismet client for .NET, it’s a library of SPAM squashing code meant to be useful to developers who are building web applications that require user input such as Blogs, Forums, etc…

So far it has the three mean features I mentioned, but these alone go a long way to beating comment SPAM. In the future, I hope to incorporate even more tricks for beating comment spam as part of this library.

Hopefully I can convince DasBlog (and others such as BlogEngine.NET and ScribeSonic) to switch to Subkismet for their comment fighting support and help me craft a great API useful to many. This falls in line with my goal to have Subtext be an incubator for useful open source library code that other projects will want to take advantage of.

What’s With The Name?

I thought I should just use a nonsensical word that’s a play off of Subtext and Akismet. Besides, the domain name was available (not yet pointing anywhere).


I’ve decided to host Subkismet on CodePlex, but with grave trepidations. Not too long ago, they had a major server issue and lost the source code for the .NET Identicon Handler project I started with Jeff Atwood and Jon Galloway.

Fortunately I had the source code on my machine so I was not terribly affected, but this is a serious blow to my confidence in their service. However, I do believe that CodePlex is great for small open source projects (though not yet convinced for large ones like Subtext) and I like their issue voting and wiki.

I’ll give them one more chance to impress me. Besides, this allow me to really try out their Subversion bridge when they release it.

Release Schedule

I’ve currently prepared a BETA release in order to get people using it and to provide feedback. It should be stable code as I pulled it from Subtext and cleaned it up a bit so it could be reused by others.

However, my next step is to refactor Subtext to reference this library and see if any API usability issues come up. If you implement it yourself, please let me know if you have any suggestions for improvements.

Once I complete the refactoring and convince others to use it and provide feedback, I’ll create a 1.0 release.

Please try outthe latest release and give me feedback!

Found a typo or error? Suggest an edit! If accepted, your contribution is listed automatically here.



14 responses

  1. Avatar for June 11th, 2007

    You've been kicked (a good thing) - Trackback from

  2. Avatar for kevin
    kevin June 11th, 2007

    This sounds really great. I'm downloading it now. Thanks.

  3. Avatar for Omar Shahine
    Omar Shahine June 11th, 2007

    I'd love to hear how the Subversion bridge works out.

  4. Avatar for Community Blogs
    Community Blogs June 11th, 2007

    Phil Haack , who is now in fatherhood , has done it again with Subkismet (Subtext + Akismet). As he writes

  5. Avatar for Haacked
    Haacked June 12th, 2007

    @Omar, I'll be sure to let you know. I'm curious as well. If it works well, it'll make setting up CCNET easy.

  6. Avatar for Simon Philp
    Simon Philp June 12th, 2007

    Anything that combats spam in my books is a huge plus may it be email spam or comment spam. Am sure we will see great things as the project progresses and more people jump on the band wagon :)

  7. Avatar for Community Blogs
    Community Blogs June 12th, 2007

    In my last post I mentioned that Subkismet is ready to put a thumping on comment SPAM for your web applications

  8. Avatar for Rob Conery
    Rob Conery June 13th, 2007

    Man out here spam is king...

  9. Avatar for Tech Blog
    Tech Blog June 14th, 2007

    I will have to try this one. Akismet is losing its performance, I see spam comments passing Akismet spam filter daily.

  10. Avatar for Offbeatmammal
    Offbeatmammal July 31st, 2007

    Have you had a look at the block list for spammers as well? Would be neat to add a lookup there for any recognised URL in the comments and flag it as bad.
    Would love to see this integrated into ... have you had a word with them, or submitted it as a patch?

  11. Avatar for Haacked
    Haacked July 31st, 2007

    @Offbeatmamal Yes, Hans is a contributor to the Subkismet team. So I imagine some of that functionality will make it into BlogEngine.NET if it is needed.

  12. Avatar for Matt Ellsworth
    Matt Ellsworth December 19th, 2007

    This looks like a pretty neat solution. Right now i'm using a variety of things on my blog to kill the 100+ junk comments that would otherwise come in per day.

  13. Avatar for you've been HAACKED
    you've been HAACKED January 4th, 2008

    Reopen The Comment Door For Your Readers With Subkismet

  14. Avatar for slobi
    slobi August 25th, 2008

    Can anybody tell me how i integrate the assembly in my web pages? I tried both:
    <%@ Register Assembly="Subkismet" TagPrefix="sbk" namespace="Subkismet.InvisibleCaptcha" %>
    and in web.config
    <add tagprefix="sbk" namespace="Subkismet.Captcha" aassembly="Subkismet"/>
    but i don't get it to work...
    Thanks for help in advance.