A little bit ago, this article - Why Django and Rails CMS Are So Rare - came across my radar. Being that I pay a lot of attention to content management systems, I was intrigued. After reading it, I immediately started formulating a comment, only to decide I have way too much to say on this topic. For those of you looking for a higher ed tie in, there isn’t one. This is purely industry rebuttal here (with notes of ranting for good measure).
Let’s start things off by running straight through some of the commentary in the original post, because to start with, I think there are some issues there to address. For instance:
Put another way, Rails or Django shops are much more likely to roll their own CMS than ever use a “boxed” CMS. Why is this? I’m convinced it’s because for many developers, a CMS is seen as little more than a bootstrapper.
This is partially true. I’ve said in the past that I think the best CMSs are the ones that provide amazing frameworks for creating sites, making as few assumptions about the presentational and relational components as possible. It’s one reason I still love working with dotCMS. But to say Rails and Django shops make their own CMSs because of this fact is completely disconnected. If that were true, you would expect devs of any languages to roll their own as a preference. He defends this point by discussing native functionality:
In this sense, Rails and Django provide many of the core building blocks of a CMS, they’re just waiting for someone to bolt them together. A Rail/Django project is a bit of a shapeless mass at first, but if you tell it to be a CMS, it would re-arrange itself pretty easily to turn itself into one.
You mean, like pretty much any software project? Every programming language provides different tooling, IDEs, capabilities, etc to accomplish tasks. ANY software project can be described as “a shapeless mass at first, but if you tell it to be a CMS, it would re-arrange itself pretty easily to turn itself into one.” The idea that this is somehow unique to Rails/Django, and also a strength, is a complete fabrication. I hear this all the time whenever people assert Language X is better than Language Y because of Reason Z. You know what’s even more accurate? That when you commit yourself to a language/platform/system, and learn to use it right, it will do exactly what you want it to do, very efficiently, and in a way other platforms can’t. More on this in a moment though.
Shops who use Rails or Django are much [sic] likely to simply develop code libraries to provide the functionality necessary to a CMS and them [sic] drop those in on a per-project basis. This code may never see the outside of their organization, and it certainly never gets marketed as an installable, usable thing.
Yep. You know where else this happens a lot? Java shops. And PHP shops. And .Net shops. But it hardly has anything to do with why you don’t see more CMSs in the wild for those languages. This just in, good dev shops develop code and pattern libraries which they reuse for internal purposes, story at eleven! I can’t think of one single, solitary reason Rails and Django shops would be “much more” likely to do this than other places, except besides the weird belief that they are just magically better programmers who all have good habits.
Developers were struggling with basic MVC tasks in PHP for almost a decade before Rails came along in 2003 and raised the bar for everyone. Remember, Drupal and Joomla have been around since 2001 (Joomla was Mambo back then); WordPress since just before Rails came out in 2003…
…Do we owe the existence of Drupal to the crappiness of PHP, especially the early versions of PHP? Same on the ASP.Net side – if ASP.Net 1.1 was better, would we even have Ektron… At the end of the day, were CMS developed to paper over shortcomings in various programming environments?
I’m chaining some comments together there that I felt needed juxtaposition with each other. Here, he’s basically asserting that these CMSs were needed to overcome the shortcomings of their respective languages (with the corollary that obviously Rails and Django don’t have these issues). Of course, he himself points out how long PHP had been out prior to Rails (and prior to a time when most websites used CMSs at all. Heck, in 2001 I was using a crazy Perl/CGI based system called Coranto – based on Newspro. I’m amazed that it’s still around). The fact that PHP still absolutely dominates the landscape is a testament to just how well it’s been developed, not how “crappy” it is. The idea that CMSs are hiding “shortcomings” of the languages is an absurd line at best, and reinforces some weird notion that apparently those environments exist for the sole reason of enabling the presentational layer of the web. I don’t even know what to make of that. After all, PHP, Java, .Net, Perl, Python… all of these exist to do far more than just be a conduit for a CMS.
The existence and competence of Rails and Django have prevented a serious, shared CMS ecosystem from developing around either Ruby or Python. Since their respective frameworks provide so much functionality out-of-the-box, developers in those languages have never had to generate critical mass around a CMS.
So, good, capable CMS platforms don’t exist for these because they’re already so perfect? I guess that makes sense if the only people ever using the systems are developers. But most folks have to work in environments that require substantially more flexibility and user-facing tooling. You know what, I’ve used CMSs created solely by developers. They’re terrible (Drupal, Typo3). Powerful, yes, but terrible for end users. As a general rule of thumb, developers sort of suck at UI design. Software of any kind exists to enable those that aren’t creators. It doesn’t matter if it’s a CMS or a word processor. Anyone who works in the real world knows that only a small fraction of a percent of people out there really know how the computers they use work. The rest need software to hold their hand as much as possible. The language or framework behind it? Utterly irrelevant to them.
Conversely, has the advent of competent frameworks for all languages slowed new CMS development? Think about it – what CMS has been released recently that has made a big splash on the industry? Silverstripe has been the new hotness in the LAMP world for a couple of years, and I hear about Concrete5 a little. My own favorite open-source newcomer – ProcessWire – is still way under the radar. The fact is, new entrants are more and more rare.
No. The advent of competent frameworks hasn’t slowed new CMS development. Actually, it’s had the opposite effect. There are new CMSs dropping practically every day (and dying just as quickly), you just never actually hear about them unless you’re listening. The issue is one of market saturation. Ten years ago, hardly anyone used CMSs, so there was a huge amount of space for systems to come in and snatch up land. That’s no longer true. Do you think ProcessWire is going to be the new hotness that unseats WordPress? No, absolutely not. Not because it’s not necessarily a better system, it just doesn’t have the muscle. It’s the same reason why PHP isn’t going to yield the internet back end to RoR. You can’t make a splash when the pool’s already full of people. Anyone who’s ever done sales knows that it’s far harder to get a client to switch a product, than to buy their initial one, even when they hate their existing one.
Rails and Django have been fantastic frameworks right from the start.
Really? Twitter might have something to say about that. Remember prior to 2008, when Twitter was supposed to be the crown jewel of what you could do with RoR? And they couldn’t stay online. They couldn’t scale. And they ultimately abandoned it. I’m not saying RoR is bad, but beware people that drink the Kool-Aid. And Django? How about the fact that every release seems to see memory consumption increase while performance decreases? Point being, perspective is everything. Every system has strengths and weaknesses, and no system is right for everything. Part of being good at software is understanding how to select the right tool for the job, and knowing when that right tool might not be in your tool chest.
The Real Reason
Okay, let’s wrap this up with the real reason you don’t see as many RoR or Django CMSs. The reason is grade-school simple. This is OP’s reason:
In short, why are Rails and Django CMS so rare? Because those guys have never really needed one.
You know, every time I hear this kind of line about a programming language, any language, I cringe. It just sounds elitist, and it’s not even remotely a real reason. Do you want to know why? Here’s why.
A lot of people can build their own cars from scratch. A lot of people can build their own houses from scratch. A lot of people can grow their own food from scratch. A lot of people can make their own clothing from scratch. A lot of people are also smart enough to know that while fun, and novel, most of these things are very rarely worth all that effort unless you just really feel good about yourself doing it. And even then, it’s not really a big deal to build your own house if you know how, when it’s a normal house. But the Ruby guys aren’t building normal houses. They’re building those esoteric, partial underground houses made from tires and beer bottles and then bragging about how green they are. They can be entirely right about that, and have a cool house that is every bit as efficient and unique as they say. They’re still in a small subset of an already small community who’s main limiting factor is that they’ve chosen to be weird. When the Cold Fusion guys can look over at you and giggle… dude… that says something.
My day-to-day CMS is a Java based platform. Java is one of the more battle-hardened of the programming languages we have at our disposal. And yet every day I lament the fact that it’s crazy hard to find good Java devs to help us out. But I know in the end the reason it’s so hard to find them is because the community is so small. It’s a kiddie pool compared to PHP. These guys don’t need to go out and make CMSs, because they make crazy good money just being awesome at what they do for whomever they work for. Yet, we have it easy compared to RoR. But it has nothing to do with platform/developer quality, and everything to do with marketshare.
And that, ladies and gentlemen, is Why Django and Rails CMS Are So Rare.