It's no secret that I've been perturbed with the overhead associated with content management systems these days - as a developer, it's largely bloat and as a writer, it's largely something that keeps getting in the way of my writing.
Because it's counterintuitive for most developers - the intended audience with this post - I'm starting with the writer perspective since it supports my developer perspective. I eat my own dog food.
My Blogger/Writer Perspective
A long, long time ago on a site not very far away, I started blogging because a friend, Sean McCormick, I began blogging in the late 1990s and early 2000s. The things I wrote about were mainly to do with technology and social impacts. This intuitively lead to open source, open content and other subject matter. Back then, blogging was much simpler. It followed this simple process:
I found something to write about.
I logged in and typed it. I sometimes even re-read it a few times before posting (good habit).
I posted it.
And that, you see, is what I wanted from my site's software. It's simple enough.
As times changed, software got more features. Around 2003, after fiddling with MovableType and other iterations of the blog software concept - including flat posts (HTML edits, FTP upload: Old School) I opted to go with Drupal 4.7. It had everything I wanted and then some. It was, really, one of the best decisions I made when it comes to technologies. It allowed me the themes to change, it allowed me the source code to modify - and I did - and it even allowed me a platform to get some development, writing and editing work with some companies. Drupal kept me in beans and kept me writing.
Before the advent of Facebook, Twitter and all manner of social media done by corporations, I was pulling in sometimes $5/day off of content advertising. Before Amazon.com sideswiped the people that contributed to building it, referral sales gave steady checks. There was recompense for effort and while it wasn't enough to live off of, during the periods between contracts it managed to keep me afloat.
Updates were infrequent and tolerable - the code base was relatively small so it wasn't a big issue on a shared hosting account.
A few years ago, circa Drupal 6, it started becoming intolerable: It seemed whenever I wanted to write something I had to spend 30 minutes updating things and hoping that somewhere along the way it didn't screw up - soon it was taking longer because the process for Drupal is biased towards those not on shared hosting (I wrote about that here).
This isn't just related to Drupal, mind you, but it's where my main experience is. Joomla and Wordpress, as examples, suffered the same.
The point, you see, is that as someone who wrote I saw increasing complexity without increased value. The cute kid whose diapers you had to change now and then had become the teenager who needed a hell of a lot more supervision with much less in the way of smiles. I want the damned kid out of my house - whenever I come home he's broken something or had his friends over. Now, if you have teenagers or have known a few, you know it's not all bad - but teenagers are where kids are supposed to be getting ready to get out of the house. I don't want a teenager for a content management system.
We won't discuss spam comments (and the inability to spank those responsible thanks to lack of law) and the industry it has spawned. That's the Internet becoming a teenager - a separate story altogether.
I want something responsive (no bloat), that doesn't require more than shared hosting (I'm not whitehouse.gov) and doesn't make me do development and admin work when I just want to !^*#&^ing write.
As you can guess, my developer perspective is heavily influenced by my writer/blogger perspective - after all, they reside in the same body and share the same organs that react to stress. However, the overall philosophy I have with software development in general is really simple - KISS. Keep It Simple (but not) Stupid.
With Linux, those of us that love the command line do complain about the bloat of new Linux Distros - but Linux is an operating system (as is GNU/Linux and yes, I know the difference). Content Management Systems are not operating systems. The user(s) typically have one thing in mind: managing their content. The developers, in this regard, have 2 things to do:
It can get complicated with the complexity of data being used by the users and content management system but really, that's where add on modules come in. You can keep the core of the content management system quite simple without adding any bloat if you provide the right hooks for custom development - something that Drupal has always done but has become rather peculiar about. Of course, Drupal is now a development framework instead of a content management system, but I honestly did more custom work with Drupal 5 with standard PHP/MySQL in modules than should ever be in Drupal core.
KISS. Abstracted database calls are an annoyance because they create lookups that are mostly not necessary and, lest people not know this, almost every content management system has some sort of database backend. Why call 3 times when you only have to call once? The only real reason I can fathom is creating mindshare. Kind of like what Ballmer was getting at.
The core reality is that for most users of content management systems, there's more complexity for value. This, of course, is where new content management systems are getting mindshare.
As a developer, particularly as an independent consultant that has worked with people and companies that have a low budget (not Whitehouse.gov) and much larger budgets ($xxx,xxx), I can honestly say that any 'rapid development' benefit is quickly eaten up by incompatible upgrades and constant maintenance. In fact, these things may well have caused companies to move to simple sites with a Facebook/Twitter presence.
Very, very few companies out there need the complexity of a development framework for a website.
So, What Am I Doing?
I've been looking over alternatives for what I have now and what I'm shopping for is something simple, straightforward and easy to maintain. What I do as a job - development, writing software, etc - is almost always going to be more complex than what I need for my own personal site. I might just stick with Drupal 7 and fork it myself (though, really, the database calls are bloated in my book).
I'm also considering alternatives that I can set up myself - including using the Pepper API in conjunction with some PHP to allow me to do what I want to do with markedly less overhead. My friend, Yermo, decided to do his own thing with Miles By Motorcycle and when he started on his journey I smiled and said that a lot of CMS's could do what he wanted.
I've stopped smiling.