Cal Henderson (of Flickr fame) gave a keynote "Why I hate Django" at DjangoCon 2008, which is well worth a watch for many reasons. In one bit he asked how many of the audience were working on blogging engines. So many people put their hands up in fact that of those that didn't he asked "Why aren't you?"

Anecdote aside, I see so many questions and answers here that relate to building blogging engines I just have to ask, since I don't get it: why are so many people writing what surely must've been written countless times already? If you are writing one such engine, why are you? Because I seriously don't get it.

+252  A: 

Nobody told you? Writing a blog engine is the new Hello World.

Jeff Atwood
oh no... please no.
I've heard it's a form of procrastination in and of itself.
Pithy. I like it. :)
actually this is true, most frameworks like codeigniter and cakephp actually have tutorials that show how to build a blogging engine using their framework just like for the programming language there are tutorials on how to do a hello world program
Click Upvote
@Click - Same with Ruby on Rails. The tutorial on the website is making a blog.
Ryan Thames
I hope not... of course for the longest time my "Hello World" was coding up a "Sierpinski triangle"
Matthew Whited
Of course, in Jon Skeet's new language the entire program for a blogging engine is "b".
Tom Hawtin - tackline
+1 just to give Jeff another gold.
Adam Bellaire
I think you can only consider yourself half-man if you haven't :p
Brendan Kowitz
Didn't you get the memo?
if anyone other then jeff commented this, it would probably only get 1 or 2 up votes at most.
Zac Bowling
Please wake me up when Facebook will be the new Hello World.
@TomWij Like an entire social networking site? I don't know about that, but I feel like I've seen "Twitter Client" used as "the new Hello World" in a couple of tutorial videos.
+2  A: 

I think for some people it's like a rite of passage. One of my professors told me once that you can't call yourself a programmer until you can preform certain things. Let me see if I can remember:

  • compiler
  • language (or at least parse C)
  • concurrent programming
  • functional programming
  • write a half-adder in assembly by hand
  • etc.

I think some people are obsessed with that kind of stuff. Maybe there are similar ones for web programmers?

Writing your first set of database wrappers (i.e. roll-your-own ORM) is a rite of passage for Perl coders. Might be for PHP too, if there were enough proficient PHP coders.
Never heard that. However, I have heard that you don't have a dissertation unless you have one formula and one proof. :)
@chaos: Hehe, I've rolled my own database wrapper!
But, but... I wrote my ORM before getting hooked on Perl!
Dave Sherohman
+9  A: 

Well go and thank Ruby on Rails. Ever since the blog screencast came out, nobody want to do the Petshop engine anymore . :-)

Seymour Cakes
Petshop engine AFAIK only popular in the Java land.
+1  A: 

Rolling Your Own Blog Engine.

+44  A: 

I don't know about blogging engines, but I've written other pieces of "worthless" software. Namely IM clients and compilers.

Why did I build those? Partly because I'm addicted to programing. Mainly though because when I find a technology that I use constantly, I quickly become obsessed with it and start to get seriously annoyed by its flaws.

Eventually, the same thought will occur: "You know, I could do this better..."

Normally, especially with compilers, I realize that no, one person alone probably can't build an overall better product. But there are one or two great features that I could build on top of an otherwise mediocre product. And programming is fun, so why not build a product you can use for your daily tasks.

I very much liken it to guys I grew up with who were really into cars. They constantly worked on and rebuilt portions of their cars. You could easily argue "why bother, everyone is building a car". But for them it was fun to drive around a piece of equipment they worked on. Programming a blog engine isn't much different.

Unless of course, you don't blog :)

Well, you can leard a lot from IM clients and compilers. I'm not sure that blog engines, which are little more than YACA (Yet Another CRUD Application) are that instructive. There are probably better YACA instructional apps than blog engines as well.
oh good to see like minded people ...
Manoj Doubts
"Normally, especially with compilers, I realize that no, one person alone probably can't build an overall better product. But there are one or two great features that I could build on top of an otherwise mediocre product." So why not submit those one or two great features to an existing open-source project? If it's good, the project will accept your changes (hopefully) and then zillions of people will be using what you did. Not that you did the whole application but you can point to one part of it and say "I did that!" Not possible with cars, but potentially more rewarding, it seems to me.
+8  A: 

I did it because there wasn't anything out there that I liked and meet all my needs. I am picky I guess. Since I wrote my own blog/wiki, I can tailor it exactly to my needs - have all the features I want, and none of the features I don't.

+27  A: 

One thing I find frustrating about the developer profession is how seldom I can say "Look what I built!" to the common person and they can grasp the concept and say "Wow that's pretty cool!" I can write a multi-threaded socket server class which I can use in almost any project but no one, other than a fellow developer, and perhaps only network developers will find it all that interesting.

Blogs, chat clients, chat bots etc all seem to be the kind of programming projects developers write to show off to their non-technical friends.

Spencer Ruport
true (asghhfh jeff if you see this remove the 10 char limit in comments adhfjghkhgfklejlkw)
Click Upvote
I completely agree with that. We tend to develop some thing which can be shown to others to get applause.
Manoj Doubts
hmm, not really, it's a way to get ones hands down and dirty with web development. you can't just into a big project, you have to start small and steadily climb the ladder.
hasen j
@Click Update: There's a better way to show your approval which doesn't take up the precious space of a whole comment - Vote UP! (I just had to say this.. ;)
Miky Dinescu
i wrote a multi-threaded multi-socket server for a U of T programming assignment
I wrote a multi-threaded multi-socket server for a dollar. It crashed.
I've never hoped that anyone could understand what I do. I've always gotten blank stares. I'm just in a very different world than those around me. So no, I don't blogging engines. But I do like to host my own sites and mail and files. F03K the cloud... LOL!
Vanity. (the character limit cannot hold it is too late)
Andrew Grimm
+9  A: 

For the same reason we all used to write our own mail client.

I wasn't sure of the reason then, either.

Mark Harrison
interesting, there was such a time? I don't even have a client, I just use web based email ever since I can remember.
hasen j
I used to just telnet to port 110 to read my mail. Can't do it anymore because doing TLS manually is far too difficult. :)
Zan Lynx
I tried that in, gave up after three days.
+19  A: 

If you saw the security flaws most blog engines have had, you'd write your own too.

Upvoted for truth, but then again, just because noone knows about them, doesn't mean they aren't there in your own work (but then again, maybe they aren't!)
Matthew Scharley
+125  A: 

Honestly? I think it's probably some combination of the following:

  • It's a relatively well-known, well-understood domain,
  • It still hasn't been perfected (and amazingly, it hasn't),
  • It can be as simple or as complex as the developer wants it to be,
  • It's not too complex, though; most devs can handle the basics,
  • It can incorporate just about every kind of content the Web can deliver,
  • It's a great way to continue developing one's skills,
  • It's much more satisfying to use something you built than someone else, and
  • Who knows -- it might even make you rich someday.

I'm definitely one of those developers, though. I admit it! And I'm a bad case, too, because I keep writing them over and over and over again, probably because I'd rather be coding than blogging. But the biggest reason, for me, is that the services out there really do suck (IMO), and it's hard to sit back and just accept that without imagining ways it could be done better. That's usually how it gets started.

I wrote a bit about this last year actually, after quitting TypePad (it just wouldn't do what I wanted -- i.e., 2, above) and rewriting the site I'm actually, right now, in the process of rewriting yet again, for probably the fifth or sixth time over the past seven or eight years, doubtlessly for the last time:

I could never shake the nagging irritation I felt when I couldn't get TypePad to do something I wanted, however trivial. Why, again, couldn't I search my own freaking blog? To find an old entry, I had use either the next/previous links (lame), category links (assuming I'd bothered to categorize the entry I was looking for) or even worse, the proverbial "archive" links, organized descendingly as they are by date, hoping I might get lucky and choose the right month-year combo during which I'd happened to submit the entry in question. And why couldn't I just create a new, non-blog-oriented page containing some other kind of managed content, like my reading list, or a collection of movie reviews? Sure, I could succumb to the rigid structure of the TypePad system and simply "tag" all movie reviews as "movie-review" and dump them into the blog alongside everything else -- but why should I have to do that? I was an engineer, for God's sake -- I'd done this before. A blog was just CRUD -- a web app in its simplest form. Why hadn't anyone gotten one right, after nearly a decade of requirements gathering?

Screw it, I thought. I'm going to do this myself. Again.

Everyone's reasons are different, but most folks probably do it because they can. Spolsky said something about this a while back, in a podcast I think, or an interview -- something about how the first thing every Web developer wants to do is build an image-upload service.* Why? It's what they know. And it's something they'd use themselves, if it were done the way they believe it should be done.

To be fair, though, a good commercial blogging service? That's a hard problem. If it weren't, it really would've been done by now, and it hasn't. Not perfectly. Anyone can build a CRUD app for himself, select *, sort by date, done deal. Building a good, full-featured personal-expression engine, though, intended to serve hundreds of thousands or millions of users? Done right, that's a much more complicated undertaking than one might think.

* See? Told ya.

Christian Nunciato
Amen to preferring coding over blogging. I pretty much only keep my LJ account to comment on other people's posts and check up on a couple communities these days.
No, we write our own blogs, *then actually use them to blog*. If you aren't dogfooding, you either have self confidence issues or you're a horrible coder.
@Sneakyness +1 Insightful ;)
Christian Nunciato
@Sneakyness, I find blog coding much more fun than actually giving it content.
@Earlz, maybe you're just boring? ;)
Agree completely. Mine is on rewrite #7.
@Sneakyness, or maybe you have other code to write, or find the concept of reinventing a perfectly fine wheel pointless, or ...? If your blog is about writing blog software, then I agree with you. Otherwise, no.
+5  A: 

I haven't started mine yet, but I intend to soon.

Why? I've done a few static HTML pages, but nothing that can be called web programming. I need a harmless project to get my feet wet. I would have done it sooner, but it's only recently that I realized I have enough blog topics to make a good start.

Edit: I've given this a little more thought since the question first appeared. What is the reason for starting a blog? It's a form of self expression. What's the most natural form of self expression for a programmer? Why, a program, of course! The blog and the blogging software go together like peanut butter and jelly.

Mark Ransom
I'm allergic to peanuts, you insensitive clod!
Christopher Parker
+6  A: 

I started writing one once because I wanted my blog to be ALL mine, all the way to the core. I'm willing to bet that there are a lot of others who feel the same way. Personally, after a while I wised up and realized that I would be better off putting my efforts toward my other projects.

I'm also willing to bet that so many people are working on blogging systems because it's so popular. So perhaps a lot of people are setting out to make the next WordPress.

Matt Flowers
To the core...? Ya mean, including frameworks, web server, even OS...? ;-)
@AviD: LFS + LightHTTPd + django + own blog. Damn AviD, I've got little time as it is! Why are you giving me *more* ideas for projects!? *Note to self: make smallest enviroment needed to run django apps.*
To be honest, I made my own HTTP server. Even touched on reimplementing PHP a little before leaving well enough alone. Oh well.
Matthew Scharley
+15  A: 

I rolled my own blogging engine once, for a few reasons:

  • I wanted full control over the website design
  • I didn't want to use a database (just flat files)
  • I needed something very simple, easy to hack, and easy to back up
  • I was the only one making posts, and I prefer to use HTML over WYSIWYG
  • My server was very low-end, so the software had to have a low memory footprint
  • This kind of blogging engine is so easy to code, it was actually faster to implement it myself than get another one working to my specifications.
+1 for not liking databases
+4  A: 

I am building mine to learn Django, with all these frameworks and whatnot, and considering I've used a lot of scripting languages for web development, it really is the new Hello World.

I never intend on releasing it.

+10  A: 

I wrote a blog engine last fall. It was a fun exercise, I learned a lot in the process.

I then immediately stopped using it and switched back to Wordpress.

Mark Biek
Can you please share your learnings as well?
Bart J
+14  A: 

Because it's about the easiest thing to create that has practical value, and can form the basis for one's design approach, conventions, structures, and etceteras. It becomes part of one's toolkit. Same thing carpenters do: build themselves a toolchest.

I agree. It's sort of trying out the capability of the framework which will benefit us too. So blog engine is the way to go.
+9  A: 

Q .Why does every man and his dog want to code a blogging engine?

Well firstly it's not every man (where every man = all human males on Earth), because in order to code a blogging engine they would have to be able to code first, hence we can reduce the set down to:

Every Human Programmer is Male.

Secondly not all Male Humans owns a pet dog, thus we can safely assume:

[All Male Humans] > [Male Humans who program] > [Male Humans who program who own a pet dog]

But it has never been demonstracted that a dog can program (Dolphins have rudementary logic solving abilites but dogs generally have a far lower IQ then Dolphins.)

Thus the set is further reduced (where dog that can code = 0) to:

All Male Programmers.

But we can narrow this down even further:

Not all Male programmers are alive, so only living ones should be included. But not all living programmers will have the ability to code a blogging engine so it becomes:

All Living Male Programmers That have the capability to Code a Blogging engine Excluding their pet dogs.

Short Answer:

Because we are programmers, it's what we do.


<slap/> <slap/>
Nick Haslam
+2  A: 

... eating your own dog food, (no pun intended ;-)

If you think of a blog as a mini content management system, it makes sense. It's almost a boilerplate code that can be build out as needed.

+6  A: 

About a year ago, I was seriously considering writing my own blog engine. Why?

I do freelance software development and so I've gotten a bit into the general freelancing world. Pretty much all the blogs on freelancing focus on either web design or writing. After giving it a bit of thought as to why this might be, it became apparent that, for writers and web designers, the blog itself is a demonstration of their skills - either the writing in the posts or the design of the site.

Once I reached that point, it was obvious to me that, if I wanted to use a blog as a way to draw in business, it would be most effective if I wrote the blog engine myself, as it would then serve as a similar demonstration of my skills.

I never actually did much towards writing it, though, partly because I started messing around with WordPress and Drupal (which taught me that I generally don't have enough to say to keep a blog going) and partly because a client came along and set me off down another well-trodden path: Writing a site which is, at its heart, a Twitter front-end.

Dave Sherohman
+3  A: 

Short answer: users are creatures of habit, and don't like new systems if they feel the old one worked fine. When a user base becomes accustomed to a particular customized system, its very hard to transition to an "off the shelf" system. Every difference will feel like a bug.

My group of friends has a community blog that a couple of us started. It began life years ago as a couple Perl scripts, then was re-written with PHP. I wanted to rewrite it using spring MVC, but I found that the Pebble blogging system looked pretty solid. So, I asked myself the same question you did: why should I write a new blogging system when there are plenty of good ones already. I optimistically wrote a data migration tool to move all the old blog data into Pebble format, and deployed the new system. Everyone hated it and stopped posting.

I don't think Pebble is a bad blogging engine - to the contrary. I think any system that didn't work exactly like the old one would have received the same reception. I currently have plans to write a new blog engine that will work exactly like the old one. That way I can add new features to a solid code base, and avoid pissing off my users.

For frameworks, I'm currently considering Spring MVC, which I have good experience with, and Scala+Lift, which looks pretty cool. After all, I should get something out of this too, right?

+15  A: 

Dogs do not write software, they bark and eat bones.

Why did I write my own blogging engine:

  • It's a great way to learn a framework, the domain is well defined. The problem is well defined.
  • I got tired of the way blogging engines messed up my posts and embedded ugly formatting (my blog entries are stored in textile in my database now)
  • I feel very comfortable rolling out changes and fixes, I know where everything is.
  • I know it's fast, I know where all the bottlenecks are.
  • I needed to migrate my blog anyway because I didn't want to run a Windows virtual host anymore.
  • I re-use portions in other projects.

Was it worth it? Indeed! Is it the prettiest blog around? Certainly not.

Sam Saffron
Your dog sucks. Mine just wrote me a new driver for the robot verison of him I just built.
+4  A: 

Why are there
1) so many programming languages?
2) so many web development frameworks for a single language.
3) so many books on a single topic
4) so many newspapers in a single locality
5) so many telecom service providers.
and so on....

May because of one or more of one's
1) need not being satisfied with the existing services.
2) urge for control
3) urge for education
4) aspiration for recognition
5) economic ambitions

Whatever the reason public gets to benefit. They get a new product. If they like it they can accept it or else ignore it.

I am also trying to code one in Perl. Not because we already doesn't have any. We got blosxom, MT, bricolage etc. But my aims are control, education and the a little bit of selfish need of recognition.

Christy John

I think it’s one of those products that you can validly do a thousand different ways. “Blogging” isn’t a specific enough problem to have one clear solution, it’s a fairly loose term for publishing stuff on the web. People still write word processors, because Word isn’t the last word, so to speak.

See also: to-do apps.

Paul D. Waite
+13  A: 

We've been guilted into feeling like every developer should be writing a blog. The fact is that most of us are more comfortable writing a blog engine than actually writing a blog.

Even Mien
+4  A: 

The subject is about blogging engines, but it looks like some people don't make a difference between a blogging engine and a custom (personal) framework.

A blogging engine

I think this is mainly to show your skills to the world, but also a way to prove to yourself that you have skills. It's a concept everybody knows, so you don't need to define what you're going to make, and you can make a very simple one within a few hours, or make a complex one spreading the development time over several months.
So far, every PHP developer I know started making his own blog, and so I did. It's a way to define your first skills.
These mostly end up in the trash or will be covered with dust.

A personal «framework»

I called this a framework although it may not be very expanded.I planned to make one, it's more like a way to work faster once you made it.
On every website I made, the same structure comes back, and there's a lot of repetitive code. (think about making forms, validating input data, initialization scripts, etc..) You made it so you know how it works, you can easily edit and/or expand it, in short it's yours and it's here to help you.

+2  A: 

Personally for a couple of reasons:

  1. Other engines don't think like me - because they're not written by me.
  2. I was told by my dog
  3. I want to try to do something right - at work we often have to deliver a solution "that work's" - now I want to deliver something for myself and whoever might care to read that works without thinking, and that have these little nice things that you don't notice straight off the bat, because it "just works".
  4. And to continue with the dog thing - it's the perfect way to eat my own dog food - I want to make sure I can actually build something that's pleasant to use for people that have to use it, and I don't believe there's a better way.

All in all, this is a personal thing for myself and I am now using it while gradually improving it.

+1  A: 

Because you understand the domain - what you want the program to do - and because you want to do it better than some existing program (scratch your own itch as ESR puts it).

Fifteen years ago it was newsreaders where apparently it was so bad so a "DON'T DO THIS" document was written: -

But it is an interesting excercise if you remember to throw away the result :) Having done one yourself will enable you to understand better the problems in the one you end up using.

Thorbjørn Ravn Andersen

My reason: stupidity. I didn't learn to customize TextPattern enough to suit my needs, so I wrote one from scratch. Not in use anymore. Sometimes to learn a complicated and advanced template-based CMS or almost-CMS is indeed harder than to write 100-500 lines of code to do a simple fetch-text-from-db-and-dump-it-on-page.


Because I need a lightweight, fast and modern solution. I don't want a bloated blogging engine with countless "I'll never use those" features, with backwards compatibility to php4 or some other ancient technology, with weird html output, procedural (or pseudo-oop) code, with bugs well known to whole community but me (because I don't lurk in given blogs engine forum or mailing list). That's why :)