On Frameworkitis

Alex Gorbatchev, after a long hiatus, is blogging again. What was keeping him away? Frameworkitis.

This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2006/10/on-frameworkitis.html

What’s wrong with WordPress and writing plug-ins for the few areas where you want to do something different?

I’ve heard someone say that writing your own blog software is the modern day equivalent of the “hello world” program.

Open source projects like Dasblog and Subtext have come a long way and could certainly use help.

Although writing a rudimentary blog engine is easy, there’s a lot of detail under the hood that gets lost when you roll your own.

  • For example, bandwidth savings by implementing RFC3229 for feeds.
  • Gzip compression of feeds.
  • Akismet and other comment spam filters.
  • Mail to weblog
  • Gravatar support
  • Multiple blogs

Just to name a few things. Not that I’m saying developers who roll their own can’t implement these features and do a great job, but these are the edge case features and aren’t the highest priority, but are important and useful.

They tend to be implemented later and take up valuable time, yet already exist in a working form in some of the existing blog engines.

Not to mention test coverage. We’re almost at 40% test coverage in Subtext (around 38 right now). That’s after starting with 0.

If you do roll your own, at least look at the Subtext codebase and steal whatever you need. I’ve tried to factor useful functionality into separate assemblies, such as the Akismet code and the Subtext.Web.Controls assembly.

It all depends on why you’re writing your own. Writing a live app that only you use is an excellent way to learn stuff while not foisting your mistakes and missteps on unsuspecting users. (Well, most of your mistakes, anyway.)

Besides, the latest tweak in your blog software is something to talk about if you run out of things to blog about, haha.

I’m enclined to agree with Hacked in that a blog engine is the requisite “Learn it in 21 Days” example.

I ran into the same situation with the first few sites I made - this was back when we all had “home pages” and not “blogs” - nonetheless, I said to myself, “Well, I can make one of those.”

I got fell into a trap I get caught in regularly, the “I can do that” trap. When I’m out cruising the newest apps from eHub or wherever, I give it test run then go “well I can make that” and many times it inspires to start working on something. Unfortunately that inspiration lasts only about a weekend.

But when I re-invented my blog this last time I just said heck with it - I’m tired of building just because I can. So I used WordPress…and it works great.

Point being, I get caught in thinking I need to make software instead of buying/using something someone has already developed. As though I was jipping myself if I didn’t try to make my own version.

I’ve come to call it my “User phase” where for once in my nerd life I want to enjoy using software instead of trying to figure out and create software – even if my version would be better :wink:

blog software is something to talk about if you run out of things to blog about, haha

It’s like writers writing about word processors! Scintillating stuff!

Man, is this a topic I DON’T want to get into…

I just went down this path of building my own Blog and one of the reason is exactly the opposite - most blogging engines that come with source code are pretty complex and making changes and tweaking interfaces is a pain in the ass. I’ve been using .Text and making even minor layout changes to it were painful even though the engine itself worked well.

No doubt it’s also a pain in the ass to build your own but at least once you do chances are you’ll actually make the enhancements you actually want to make rather than ‘leaving’ them for another day when you have few hours to devote to roam through somebody else’s idea of a framework…

Agree with Haacked though: you gotta know what you’re getting yourself into. Lots of little and not so little things if you want to do this right and it adds up quickly.

I made the mistake of rolling my own blog application… it was sort of fun… but I wouldn’t recommend it unless you have a lot of free time. The application is live but has been stuck at about 75% complete for the last six months.

I had a lot of fun rolling my own blog system (though I’ve been building web app systems for years), and could quickly implement several unique features. Since it could post blog entries from within the first few hours, I simply blogged about the development of the blog system as I went.

It’s also a nice check on yourself to see how your development process is. It’s important to only roll your own if you enjoy the process and want some freedom to experiment.

Now that it’s up, I much prefer using and extending my system over the blog systems I see out there (WP, etc) and I gain a great deal of flexibility with a tight, simple system and avoid trying to make a giant framework first. Running it on your own server allows for other innovations as well.

I often find it aggravating extending and altering systems that I haven’t written, at least partially. Many popular systems drive me nuts to work with. I like to feel free to make sweeping changes when I see something being done the wrong way, and often external projects have made too many decisions that I disagree with.

Sounds like he’s a victim of speculative generality

My colleague Imre made a similar point recently on our blog at http://www.changelogic.com/weblog/2006/10/03/what-youll-write-tomorrow-is-not-what-you-think-today/

I’m out of my league here…but am considering writing my own blog software because it’s for an intranet and I need it to be .NET and subText is great but it uses forms auth…at my level (beginner) it seems easier to write from scratch something simple to do exactly what I need than to try to hack subText.

(Please tell me I’m wrong! Then again, I could use the learning experience…)

I’d agree that writing your own blog software is crazy if all you want is a place to publish your content. On the other hand, it is a great way to learn the latest “technologies”. I’ve actually taken the dasBlog app and turned it into a blogging engine (a library without a user interface) then plugged it into our site hosting framework through a custom module. It was surprisingly easy and worked out well, however it makes it very difficult to stay current with the latest changes released for dasBlog. The excercise was a great learning experience and the results ended up in production.