Drupal, maybe we should just be friends

Recently I finished reading a book and went to put the book in my blog. I don’t have the book report written but wanted to at least get a placeholder in the database with the vital statistics: title, author, word count, my rating, and so on. After entering the information, I hit submit and was greeted with the less-than-useful message, The website encountered an unexpected error. Please try again later.

Frankly, this sort of thing is the reason I don’t write. I used to joke that maintaining a blog was more work than writing it. The joke has stopped being funny.

At this writing, Monochromatic Outlook is running on Drupal. Drupal is a powerful publishing platform that I’ve praised highly in the past and which I’m likely to praise again. I’ve set up Drupal sites for clients, used it for many of my own projects, worked on contributed modules, and for a while tried my hand at being a module maintainer/developer.

Why Drupal?

As a developer, Drupal is very attractive. There is a lot of power that Drupal provides. Drupal’s Content Creation Kit, now part of Core, was the essential reason I adopted Drupal as a platform. Though at its heart Monochromatic Outlook is just a blog, I’ve enjoyed the ability to create content types which contain common element which can be sliced and diced. I’ve tracked my running with a content type which contains the length and duration of the day’s run, what shoes I wore, and the map of the run. My vocab entries have separate fields for the definition and my comments about it.

There’s great potential utility in this. I ought to be able to search for books I’ve read by author, add up the number of pages I’ve read in a given year, or display the title of the book I’m currently reading.1 Perhaps I’ve been working with computers for too long, but I’ve become a bit of a sucker for metadata.

With complexity comes… complexity.

After a long period of anticipation, Drupal 8 has been released. Frankly, I’d been dreading the release for some time, as new Drupal versions tend not to play well with other versions. Drupal has never supported modules from older versions. Making the transition from Drupal 5 to Drupal 6 wasn’t fun, and neither was the upgrade from version 6 to version 7. Unless a site uses no contributed modules, an upgrade has to be very carefully planned and researched. The best way to do it requires a team of coders and enough time allocated for the task to rewrite each module the site uses.

The drawbacks associated with backward compatibility are of course numerous; the decision to define whole-number versions as the threshold beyond which old code will break isn’t necessarily wrong.

The eternal dilemma: upgrade, migrate, or deteriorate?

The big question seems to be: is it easier to upgrade an existing site to Drupal 8, or just build every feature from scratch?

This is not a problem unique to Drupal, of course. With many software packages you have the promoters hyping all the great features, and sometimes the ones that are most appealing are the ones that are actually still in development. «Well,» one might think, «the feature is already there, and maybe it will work well enough.»

Eighteen months down the line when something goes wrong and it is necessary to get some answers about the package in question, we may find that there’s no help. The package might be abandoned or replaced by a similar but incompatible package. Or a perfectly good module might have been replaced in core when you’re trying to do an upgrade, with no path to get content from the perfectly good (but unavailable in the new revision) old module to the the also perfectly good and standard

Drupal’s strength is its extensibility. If you don’t use contributed modules Drupal is spectacularly unsuited to any purpose. Using it for a blog? Fine but if you want to upload images, something like Wordpress2 or Ghost3 will do it with seemingly magical ease out of the box. With Drupal, prepare to spend the next week tweaking and patching and debugging to get a solution that comes halfway to the effectiveness of one of those dedicated blogging platforms.

Complexity as the enemy of content creation

Another example: there other CMSes have tags and categories built in, Drupal has taxonomy. Taxonomy is much more powerful and allows you to build all sorts of things including tags and categories. You’re still going to have to build those tagging and category features. That means thinking about the underlying logic of what makes a tag and what makes a category, and now you’re on your way to being a developer. There’s nothing wrong with being a developer, but at some point in the past you wanted to actually put content on your site, right?

Well, I wanted to. I still want to. I’m tired of frakking around with software to make it do the stuff I want it to do.

Drupal 8 is the best version of Drupal so far. The team made some excellent choices about the technologies used in the templating. It’s tempting to think that an upgrade to Drupal 8 would fix everything. Of course it wouldn’t but it might well make it easier and more pleasant to fix everything. Unfortunately so much of Drupal 7 has no migration path to Drupal 8 that Monochromatic Outlook’s installation simply can’t be migrated to Drupal 8. It would likely be easier to migrate to some CMS other than Drupal 8.

Not really. Monochromatic Outlook can’t be migrated to any other platform easily without dropping some of the custom content. The maps on the posts of my runs would have to be rebuilt from scratch, the book reviews would lose the author names and titles of the books without some careful work, and the vocabulary posts would lose their structure.

I like having structured content. In some ways, it’s the easy part. I keep the list of books I’ve read — with word counts, ISBN numbers, start dates and completion dates, and so on — in a PostgreSQL database on my laptop. It’s a simple schema. There are four tables: one for the general book data, one for the authors, one for publishers, and a purely relational table linking the authors with the books in a many-to-many relationship.

Did I say that was simple? Well, it’s really not as complex as it might have sounded. You certainly don’t need PostgreSQL to do it. Heck, you don’t need to do it at all. I’m the one who wants to keep track of the books he’s read in nice, normalized tables.

But this is my point: when I gave up on making my content management system store the information I wanted and started writing database queries, that was (or should have been) a sign that Drupal isn’t working for me.

The appeal of Drupal for these past ten years has been that it’s a platform I could do everything with. But it isn’t living up to that. Maybe it’s time to stop trying to keep everything in one place and either build tools or use the tools other people have built which have specific purposes, which do just one thing and do that thing well. There are sites that will track my runs for me. I even use them to transfer the track maps from the phone so I can put them on this site. Except I don’t post them here because that fixing that feature would take work and I already seem to have plenty to do.

I don’t like using websites I don’t run myself. That’s the reason I moved Monochromatic Outlook off of LiveJournal. The IndieWeb folks and the Homebrew Website Club have it right. Always own your own data. Always control your own content.

Before Monochromatic Outlook was on LiveJournal, I wrote my own content management system to merge content with page templates.4 Moving to something that was already built and worked right made the difference between writing once or twice a year and writing once or twice a day.

There are ways to control one’s own content while letting the content management part get out of the way. After ten years I think that it’s clear that Drupal isn’t that for me. I still think Drupal is a good platform; I have Drupal running on other project sites. If you don’t have an existing Drupal 7 or earlier site Drupal 8 is a great option for a wide variety of projects. The White House Website runs Drupal5. Drupal will still be a part of my web publishing portfolio.

But frankly Drupal, I think it’s time I started seeing other CMSs. You’re just too high maintenance.

  1. One of my pieces of inspiration was the 50 Book Challenge which seemed like a great idea but which had a lot of associated information to keep track of. ↩︎

  2. Monochromatic Outlook ran on Wordpress back in 2006 in between being on LiveJournal and being a Drupal site. Wordpress is really quite good at being blog software. ↩︎

  3. My project blog Positronic Works runs on Ghost. It’s even better than Wordpress at purely being a blog. ↩︎

  4. That system grew and grew and even now some mutated version of that code is still running↩︎

  5. Apparently even the Federal Government doesn’t have the resources to successfully upgrade a Drupal 7 site to Drupal 8. ↩︎