Why not roll my own? - Kevin Kuchta

Why not roll my own?

Writing a blog engine is a right of passage for young developers.  It is the web equivalent of printing Fibonacci numbers or calculating the sides of a triangle- step number two after Hello World.  As such, the question is raised:

Why don't I roll my own?

The first answer to that is that there's not much more to be gained from it.  It was useful when I was first learning HTML, then CSS, then PHP, then Rails, as a project with some practical application that also has enough technical requirements to flex the tool being learnt a little.

Further, it scaled well to various tools (when learning HTML, I could do a simple static-page blog; when learning rails, I could do a dynamic mvc blog engine with tests and a db).  Now, though, I know enough about the principle web tools (HTML/CSS) and a smattering of languages + frameworks (CodeIgniter, Rails, etc) that building another blog engine in them just isn't that useful to me.

Secondly, the need for this project to be done outweighs my need to learn from it.  I've gone through half a dozen iterations of my personal site- each time better and more complex.  The problem is that when using a project as a learning tool, it never gets done.

By the time I finished building one of the first versions of my site with table based layouts, I'd figured out that css layouts were much better.  By the time I finished a static css-layout site, I realized that even a little php could make modifications much easier, etc, etc.  I always want to rewrite it in light of the flaws I learnt while writing it.  At this point, I need a solid web presence that isn't constantly changing.

Thirdly, I want the sort of features that a mature product gives.  I can roll a basic blog engine with post and paginated archives in 20 minutes in Rails (less using generators), but then what?  Then I want comments on that, so I write comments in another 20.  Then I realize that I want formatting for my comments and blog posts, so I spend some time putting in markdown.  Then I get a spammer in the comments, so I put in captchas.  Then I decide that I upload enough images that I'd like a way to do that through the ui, rather than ftp-ing to the server.  Then I need... and so on.

Role-based authentication, searching, skins, analytics, performance optimiziation, OpenId, RSS/Atom, etc.  These are all things I can or can learn to do, but it often means I have to choose between living without the feature or putting all my other pojects (and the writing itself) on hold to do it.  Having a well thought out platform like MovableType, with the features I'm likely to need already there, allows me to focus on other things.

So, why not roll my own? Because it's no longer educational, I need this site for itself, and I want a full-featured system.  Good enough reasons for me.