Why you might just want to roll your own


UPDATE: I switched to WordPress. It’s much better.

I didn’t create the blogging software used at this website. It was made by the folks at b2evolution. There are lots of blogging software packages to choose from. But regardless of which one you pick, there are sure to be some things you’re not happy with, and there’s bound to be a learning curve as you adjust.

One of the basic decisions when writing software is where to put stuff. The organization should make intuitive sense, be modular and easy to modify. Creating an open-source, full-fledged blogging package is a complex task. It takes a lot of time and effort to produce, and when you finally have code you’re happy with, some schmuck like me, who downloaded it for free, comes along to tell you what you did wrong. Actually, I’m not so upset with b2evolution, but I think there’s something to be learned here about how all our great automated (pre-fab) tools may not be all that great.

b2evolution has a system of “widgets”. Everyone loves widgets. There cute little bits of code which make your life better. You can add them, remove them, mix and match like parts on a Mr. Potato Head. The problem with b2evolution’s implementation is that modifying a widget should be simple, but it’s not. When you go into the administration for the site you can find the widget list easily enough. There’s even a button to click that appears to let you edit the widget. But that’s just a ruse. If you want to actually modify how a widget works you have to hunt down the code. Ready?

I suppose I should back up and explain why I would want to modify some developer’s nicely pre-fabricated widget. On the right hand side, at the bottom of the standard RSS widget, is the sentence “What is RSS?”, linked to an external webpage. I’m guessing that most of my readers will have the whole syndication thing figured out, and even if they don’t in the age of Wikipedia that kind of information is easy to find. So that little bit of distracting text serves no real purpose.

The b2evolution manual provides no documentation on how to create or edit the code of a widget (at least so far as I could tell), so I’m on my own. My search for how to remove the text begins by searching all of the b2evolution files for that exact phrase. At first, I use the Windows XP search, which is about 10 times worse than the search utility which it replaced. What took 1 click in Win98 now takes three, and if I have to look at that damn animated dog one more time I might just end it all. Also, I don’t trust it. So after a failed attempt to find the text string using Windows XP search, I download a copy of Total Commander to my laptop. Total Commander works well, but using it adds additional time and clicks to each search because you have to load the software and give it a few parameters. Sometimes it seems like only half of my computer time is about creating: the other half of my energy goes into adding, deleting and dealing with software issues.

Total Commander finds the offending text string in a couple places. A file called _coll_xml_feeds_widget.php seems to be the most likely suspect, so I open it up in my favorite text editor. I remove a line of code, then make a special comment to help me track modifications I’ve made to original files (these can come back to haunt you when you upgrade later), and start Filezilla to upload the file to my server. Filezilla recommends that I upgrade to the latest version, so I take a break from my intended work flow to do just that, trying not to get too distracted by some video while it downloads and installs. I get distracted. Regain my focus. Upload the file. All is well for the moment.

Unfortunately I see this cycle repeating itself over and over, like some karmic debt you just can’t burn off. If I stick with b2 (and this blog), I expect to have read through a good third of the code looking for bugs or places to modify things I don’t like. For many years after I learned HTML and PHP, I almost never used off-the-shelf programs. It was just simpler to code my own, using the other for ideas or as a kind of digital parts junkyard. The problem with this approach is that nowadays software (like this blogging program) is expected to do way more than ever before: we get used to the new features and begin to depend on them. So rolling your own takes a lot more time. You end up in the business of creating software more than actually getting things done with software.

The problem is, no matter how much you want to insulate yourself from the nitty-gritty of the code and just use it to do some blogging, you have to be aware that what’s hidden under the hood could very well come back to bite you. In a final analysis, there is no escape from the underlying complexity of the tools you use. Sooner or later, you are better off understanding what lurks in the cracks of even well examined open source software. The best way to really understand everything that goes on beneath the hood? Build your own model.