Abandoning SubText

Apologies for the lateness of this post. I wanted to post it last Tuesday which was when I made my new blog engine live. Unfortunately, I developed double ear infections that evening, which rapidly turned into a pair of ruptured ear drums, lots of pain, some hearing loss, 5 days of bed rest, and prescriptions involving Percocet and antibiotics. I can’t hear much at the moment, but happy about it and don’t feel any pain. I don’t really know how that works but it does. I slept for a few hours this afternoon so now it’s the middle of the night and I can’t sleep. I feel like I’m on the mend for the time being. Monday I go under the knife for unrelated surgery which will put me back on bed rest for several days. Back to my originally scheduled blog post…

It’s pretty amazing that it’s so incredibly easy to start a blog these days. Unfortunately, writing and maintaining a blog is like getting married. Once you choose blogging platform, you’re essentially stuck and changing blogging platforms is about as painless as getting divorced. In the best case, it’s not any fun. In the worst, you lose pretty much everything you ever had.

For more than a year now, I’ve been considering changing blog engines. Interestingly enough, that time frame also coincides quite nicely with my dramatic drop-off in blog posts. Why put more work into a blog if you’re just digging your hole deeper? I knew that every blog post I was going to add was just going to increase the amount of work I’d need to do to perform the conversion and decrease the motivation to actually move to another platform.

However, last week I decided to finally bite the bullet and just get it over with. After all I’d been absent from my blogging duties for nearly a year. With my Masters degree now out of the way, I really didn’t have a good excuse to put it off any longer. So I started at the most obvious place imaginable for how to convert my blog from SubText to something else. Google.

I suppose I should back up a little bit and explain my reasons for abandoning SubText. After all, I do a fair amount of .NET development and SubText is written in .NET with a SQL Server back end. Let me put it bluntly. I had higher expectations for SubText as a platform.

Issue #1: Annoying bugs
One example I can point immediately to because it was the most irritating when I finally found the cause was the existence of a paging error in the categories. If you had 9 catagories, it worked fine. If you had 10, it wouldn’t show any categories. If you had 11, you were ok again. So for a while I had 11 categories, one of which I never ever used.

But you’re a .NET developer! It’s an open source platform! You could have fixed it yourself.

I’m sorry, but I have this thing about software. It just needs to work. Time and time again, I hear developers scream about how great open source software is because if there’s a bug, you can go into the code and fix it yourself. That’s nice. Honestly, I think that’s really great. But when push comes to shove, I really don’t have the time to waste making features work that should have worked to begin with. The release I was using was

Issue #2: Excessive Complexity
I opened up the source code for version 1.9.3, which is the version of SubText I was on and there were 10 projects. TEN! Maybe I feel like I was just spoiled by the classic ASP programming model where you had one asp page file, maybe a couple of include files for commonly used functions, and that was about as complicated as it got for any given web page. I’m as much a fan of the .NET framework as the next Windows programmer, but ten projects for a blogging engine just seems really excessive. Just finding the right project is sometimes a chore, and the documentation for SubText leaves a little to be desired. You also need to download additional components to get SubText to compile.

I’ve always hated it when you want to compile something and you’re missing a dependency, which has another dependency, which also has another dependency. Eventually, you’ve installed just about everything and are 9 dependencies deep, only to find out that there are bugs which won’t let it compile anyway and then you have to fix those too because someone didn’t account for something like 64 bit processors which were years and years away. Occasionally, you’ll also find that due to some obscure bug in version 9.4.2 of dependency 34 in the sixth level of hell, it won’t compile, but only on your machine, as evidenced by the following directives found buried in some include file.

#error "This won't compile on your machine because we think you're a loon!"
#error "Not your computer this time, but we still think you're a loon!"

In this case, I actually already had the required additional components from Microsoft on one of my machines, but not all of them. This wasn’t terribly painful, just another minor annoyance.

In the end, I found the guts of it just too incomprehensible to work with easily. I’m sure that given enough time, I could have done so, but time is not something that I have a lot of, so I simply didn’t bother.

Issue #3: Roadmap, or lack there-of
Another point in the defense of SubText is the fact that I was running version 1.9.3 and the most recent version is 2.1. Perhaps the most recent version would have made a difference, but I’m guessing not. There have only been 4 new releases since I installed the version I have, and that was 4 years ago. The roadmap for the product could use some work, as could the communication of when releases are actually going to happen.

Knowing what is going to be available in version 2.0 is nice. Knowing when I should expect to actually see version 2.0 would be nicer. Yes, I know it’s an open source product, but I really don’t care. I see no reason why open source projects shouldn’t be held to the same standards as commercial software. If they want to be treated as if they’re just as good, they need to be just as good, and that includes release schedules.

Issue #4: Plug-ins for extensibility
Something else I wanted was to be able to extend the blog with plug ins, and there just weren’t any for SubText. Were they coming, and if so, when? I had no idea. Supposedly in version 2.0, whenever that was going to be. (See Issue #3)

Issue #5: Comment spam
Honestly, this should have been a no-brainer. Didn’t anyone working on SubText see the amount of spam coming into their own blogs? It’s pretty ridiculous the amoung of comment spam that I get on my own blog, and the expressions that you’re supposedly able to add to help filter them simply don’t work. (yes, another annoying bug, see Issue #1)

Issue #6: Haphazard looking website
If you browse the website for SubText, one thing you’re going to notice is that depending on which links you click, you seem to get conflicting information. For example, the main page states that version 2.1 is out. If you click on Docs, then About, and then “Requirements”, they state the requirements for Subtext 1.5 and 1.9(when it is released).

Eventually, I realized that none of these things were getting any better. I could get involved and try to help out, but I really just don’t have the time. Maybe when I’m independently wealthy, I’ll revisit this course of action, but for now it’s easiest to just abandon SubText and move to a blog engine that better suits my needs.

It took me all of 10 minutes to decide to switch to WordPress. I’ve used it in the past for other blog projects, and it worked really well. I did a quick install on one of my linux servers, kicked the tires a bit, and decided that it was certainly going to be worth whatever trouble I had to endure. In fact, I installed a plug-in called WP-Syntax in less than 5 minutes and achieved syntax highlighting and line numbering on the C pre-processor code you see above. And so it is, that you’re reading this today on a new WordPress blog engine.

My next post (possibly not until after my surgery) will be all the fun things I encountered while trying to get away from SubText and into WordPress.


  1. Haacked on March 9, 2009 at 11:12 am

    Hi there, thanks for the critique of Subtext. It’s always helpful to get constructive feedback and I’m sorry to see you leave. Even as you leave though, I think you’re helping us with your feedback. 🙂

    Some of what you experienced has been improved IMMENSELY since 1.9.3, so to use 1.9.3 as your basis of criticism is really outdated. I forked .TEXT a while ago, which was a great blog engine in its own right, but needed a lot of cleanup. That’s been part of our focus is to clean it up and make it more usable. I’d like to address some of your criticisms here:

    1. That bug has long been fixed. When I started Subtext, we had 0 unit tests. Now we have over 1000 and are approaching 50% code coverage. Again, this is on a legacy codebase. The quality is much much higher today.

    2. Reducing complexity has been a key goal. When we started, we tried to make libraries we could share with other projects. For example, our Akismet spam filtering library is not part of the Subkismet project. However, not all of our libraries are used as standalone libraries, so we’ve been consolidating them.

    3. We have a RoadMap http://subtextproject.com/Home/Roadmap/tabid/55/Default.aspx It could use a little love, but it gives the general tenor of what we want to do.

    4. Yeah, good point. If we had plugins, what would you want to see?

    5. Subtext integrated Akismet a long time ago along with other heuristic based spam engines. I get nearly 0 spam in my comments now.

    6. Yeah, what can I say. I do this in my spare time. This is one area I’m really trying to get contributors to help out with. I have somebody who recently said they’d help.

    Subtext is used by MySpace China for their blogs and GeeksWithBlogs.net hosts several thousand blogs on Subtext. It’s come a long way since 1.9.3. And, I bet it’s easier to get someone to address your issues with it than many others. 😉

  2. Haacked on March 9, 2009 at 11:14 am

    p.s. Subtext 1.9.3 was released in 2006. That’s a positively ancient version in Internet years! 😉

  3. Simone on March 9, 2009 at 11:23 am

    You should have upgraded your installation to Subtext 2.0, which is the latest available version.
    1.9.3 is a very old version, I think from 2006

  4. Rob Conery on March 9, 2009 at 1:53 pm

    You know what I think would be a great post is when you dive into the code of WordPress :). I’m not sure what your point is here – you’re criticizing a codebase that’s close to 3 years old. I get that you’re cranky about it, but hey, there’s always blogger :).

  5. […] I was searching for a new blog engine I was slightly disappointed to read the following article regarding the SubText blog engine, however it did happen to remind me that the codebase is open […]

  6. Rob Walling on July 17, 2009 at 12:48 pm

    @Rob – I think Mike’s point is that he would never have to dive into the code of WordPress because there are so few issues with it, and any extensions are possible with plugins.

    I ran on the Community Server blog engine for a few years and ran into similar issues as Mike. When I finally tried to upgrade to the latest version it was so painful that I also opted to take the plunge and move to WordPress since that migration path was as or less complex than upgrading my Community Server installation. You see this pattern over and over as you read bloggers, especially .NET bloggers, who’ve been around for a few years.

    And honestly, is the current code base so much better than the one Mike was using as to make his comments invalid?

Leave a Reply