Subscribe:   Posts   |   Email   |   Facebook   |   Twitter

Internet Marketing and Web Development in Higher Education and other tidbits…

Really Why Django and Rails CMS Are So Rare

27 Feb 2013

written by Michael Fienen

Really Why Django and Rails CMS Are So Rare

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.

ruby python Really Why Django and Rails CMS Are So Rare

Server Side Languages Market

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.

The content of this post is licensed: The post is released under a Creative Commons by-nc-sa 3.0 license


About the author

Michael Fienen

For six years, Michael served as the Director of Web Marketing at Pittsburg State University. Currently, he is the Senior Interactive Developer at Aquent and is also CTO for the interactive map provider nuCloud. When it comes to web communication, he focuses very heavily on interpersonal communication components of websites, as well as content considerations that must be taken into account when building usable sites.  He is an active supporter of the dotCMS community, accessibility advocate, consultant, internationally featured speaker on web issues, and general purpose geek who wears many hats.

Michael's Facebook Michael's LinkedIn Michael's UWebD Profile Michael's Twitter Michael's Flickr Michael's YouTube Michael's FoursquareProfile Michael's Lanyrd Profile Michael's Tumblr Account Michael's Slideshare Profile

This post was written by - who has written 99 posts on .eduGuru


  • http://twitter.com/bpanulla Brian Panulla

    I have another possible influencer: system administrator sophistication. The systems built in PHP (at least WordPress, Drupal, Joomla) are simply Web files that get dropped into a Web server root, easy peasy. Provide a MySQL backend and you’re good to go. System administrators like that.

    At a previous job we’d picked the Python-based Plone as the best replacement for our home-built CMS; the feature set was amazing, including customizable multi-step approval workflow for content that Drupal could only dream of at the time.

    But what killed our transition was our Windows-centric IT group. Plone was really only comfortable on Linux, and required an application server beyond Apache HTTPd (Zope). Even on Linux, the PHP systems were much easier to install and maintain, even if the functionality provided to end users was a fraction of the more software-y systems.

    • http://twitter.com/fienen Michael Fienen

      And the natural extension of that is that more administrative overhead equals higher costs. Virtually any tech-head can manage a basic [L/W]AMP stack. But start throwing in application servers (Zope, Tomcat, Glassfish, etc) and you start requiring more specialized skillsets. Specializations cost money. Now combine that with the community scarcity I talked about, and you’re probably paying a stupid amount of money for a solution to a problem that should have cost half as much.

      • hunt

        Stupid amount of money? I built a rails CMS for free on Github in a matter of days. I just keep making it better and better over time and it really didn’t take much time initially.

        I used to use WordPress and Joomla but it took WAY more time to slice a dice those systems into something I was proud to sell. Now that I am on Rails, my development time and costs have plummeted and my quality has sky rocketed.

        To address your second point, there is not as big of a community around Rails because if your using it, you probably know what your doing. Compare that to the WordPress or Joomla forums that are chock full of ridiculous questions. There is a big community around php CMS’s because nobody knows what they are doing and they expect someone to tell them how to do it. Granted, this attitude is finding its way into the Rails community as well but a Rails developer will generally try to figure something out before asking; hence less forum interaction.

        Also, please consider how absolutely poopy 99% of CMS extensions really are.

      • http://www.praxismicro.com Jeff Booher

        Which rails CMS on Github?

    • http://profiles.google.com/joshuajmark Joshua Mark

      Windows exchange servers in an all Windows office make sense. For anything web development related, there’s no question, Linux is best because it’s the standard. I weep for anyone forced to cram their app onto a MS environment.

  • http://twitter.com/apeisa Antti Peisa

    I think you are spot on about how hard it is to beat the most popular system that people have invested in (your comparison about WordPress and ProcessWire). Usually the new challenger needs to be about 10 times better to have a good fight and I think ProcessWire has that ;)

  • amir

    I think you are write http://www.infoeducations.com/

  • Alice jhon

    I think Php is easily understandable thus more people like to use this platform. Rather dot net is a good choice for huge applications.Social Media Agency

  • muhamad fawad

    Great read.Quite insightful.Thank you for sharing.
    http://superioreducationz.com
    Education Information

  • http://profiles.google.com/joshuajmark Joshua Mark

    I think once a ruby or python CMS has something comparable to the “famous 5 minute install”, it will grow in popularly. Hosts don’t like Ruby right now. I pay hundreds for a host and have lots of WP sites on it, but the one public facing Ruby app I have is on a closet server. It’s actually easier that way just cause my host makes running Rails such a pain.

    • Seattle Poly Guy

      ? I pay about $10/month for a teeny VPS that can handle more traffic with the basic Rails/postgres stack than my org can handle with 70k worth of Windows servers.

      I used to work with Python, PHP, ASP.Net (used to work for MS actually, on the .Net dev team) and now I’m working with Rails. Rails is, hands down, the easiest web framework I’ve ever used. EVERYTHING is tweakable (which, of course, gets the newbies in hot water).

      Better than that, Rails — being opinionated software — sort of forces you to write clean, elegant code rather than just go drop a boatload of money on someone else’s closed-source plugin (which doesn’t quite fit your needs, but you spent so much money on it that by god you’re going to use it!)

  • sdfdsf

    fuck you shit article find something better for living

  • Doshbot

    “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’re still in a small subset of an already small community who’s main limiting factor is that they’ve chosen to be weird.” Huh? What the hell? No, we ‘Ruby’ guys are not hippy wierdos, we are building normal software like anyone else, but we just prefer the Ruby programming language and the Rails environment we were trained in… I’ve just searched around for Rails based CMS software and actually found several very nice ones, like LocomotiveCMS, RadiantCMS and RefineryCMS, not to mention many other little ones lying around in GitHub that people rolled for their own needs because Rails makes it so easy to do so.

  • 8bithero

    I think the point you were trying to make with the graph is only half the story. You also need to look at the ratio of ‘total-apps-in-x-language : number-of-apps-using-ready-made-cms-solutions-in-x-language’. I thing you’ll find that percentagewise, Django/Rails apps are less likely to use pre-built cms solutions. I think the main reason for this is that both of these frameworks are build with productivity in mind. This translates into the ability to build components quickly and effectively. Meaning you can write code that is specific to your app in the same amount of time that it would take to hack through someone elses code and get it working just the way you want it to. To illustrate this using your examples: a lot of people can indeed build their own houses or their own cars, but the majority of all people don,t. Why? Because it’s simple not an effective task. It’s way more convenient to just go out and buy a car or hire people to build a house for you. But what would happen if by some miracle we were somehow able to build our own cars & houses just as effectively and conveniently as going out and purchasing one? I’m sure you’d see a lot more custom cars if that were the case… But this is just the case with highly productive frameworks like Django & Rails. It’s just as easy to build your own cms components as it is to go out and purchase them (openSource projects included).

  • Sicofante

    You’re mixing the concepts of language and framework. Rails is a framework written in Ruby. Django is a framework written in Python. They are not “languages” as you assume in your first paragraphs (I couldn’t read any further, seeing you made such a basic mistake).

    • Michael Fienen

      I’m sorry that you let such simple semantics get in the way of a discussion. But it’s really no different than referring to something “written in” jQuery, or Foundation, or Pear, or Cake, or Spring, etc, etc. It would certainly be more semantically accurate to say JavaScript, or CSS, or PHP, or Java, etc, etc, yet as an industry, we break that pattern literally all the time in the interests of brevity. There’s nothing wrong with referring to a programming language vis-a-vis one of its frameworks. You apparently disagree and see that as a “mistake.” I don’t. It’s all in how you read it. At no point do I call Django or RoR programming languages themselves, but rather when I refer to “languages,” I do it meaning Python or Ruby, assuming anyone who cares to read this understands the connection being drawn well enough that I don’t have to spell it out for them (since you can’t build something for RoR or Django without writing Ruby or Python). RoR in particular falls prey to this, since it’s so frequently referred to in a way that lexically describes the full stack, rather than just Ruby (the language) or Rails (the app framework stack).

      To put it another way, if someone writes an article on Leukemia and talks about the hospitals and doctors that deal with it, and their treatments, you could do that without specifically restating that the doctors that work on Leukemia are oncologists or that when you treat Leukemia you’re actually treating cancer. It all goes hand-in-hand.

      After all that, you probably still disagree with me, which is fine. I’d encourage you to read stuff in the future with a bit more of an open mind though, because one of the biggest reasons we have so many issues in this industry is because of an inability to get over the semantics attached to certain fields. But thanks for stopping by to read.

      • Sicofante

        Senseless analogy. I won’t even discuss it.

        My mind is wide open but you absolutely missed the point you’re criticizing from the article you’re replying to (which I read only because you linked to it in the first place).

        That article says frameworks like Django or RoR don’t need a CMS because they themselves are built to extend the languages they’re based on, thus providing the tools a PHP based CMS must build. Can you see the clear separation of language and framework there? By blurring the lines like you did, you simply ignored the point, rendering your article meaningless, at least as a reply to the original article.

        BTW, I don’t know how old Django-CMS and Django-Shop are, but they actually prove both of you wrong. It seems Django developers felt the need, went ahead and built a CMS in the end…

      • Michael Fienen

        We’ll have to agree to disagree. You’re arguing a distinction without a difference when it comes to the point being made in this case (reason being, you can’t talk about the frameworks in a vacuum from their languages, since Django devs ARE Python devs, and RoR devs ARE Ruby devs, though vice versa won’t always be true). Obviously, you’ll disagree with me on that, at which point, we’ve reached an impasse.

        But your last point is something that we can definitely discuss. Yes, Django-CMS/Shop is indeed another Python CMS built using Django, you are right. There’s also FeinCMS and Mezzanine for that matter. But it’s a point that changes nothing, because neither myself nor the OP said that there were no CMSs built on those frameworks – only that they were unusually rare. And rarity is a generally qualitative assessment. Maybe you don’t think they’re that rare, and that’s fine.

        At the end of the day, the point in contention between the two articles is “why are they rare?” If you don’t think they’re rare, then none of the other points even matter. If you agree that they’re unusually uncommon, then the question becomes “why?” This is where the OP and I agree, that you don’t see as many CMSs built on those frameworks as we think you’d expect. Again, this is very subjective. But OP says it’s because the frameworks are just SO great. I disagree, I don’t think framework quality has anything to do with it. I think it’s the result of developer scarcity since Python and Ruby communities are relatively smaller compared to other languages, highly skilled devs are in high demand, and as a result you don’t have a lot of free agents floating around just making software for fun. So the only real question to you that even matters is if you agree or disagree with that, and why.

      • Sicofante

        But OP says it’s because the frameworks are just SO great. I disagree, I don’t think framework quality has anything to do with it. I think it’s the result of developer scarcity since Python and Ruby communities are relatively smaller compared to other languages

        Fine, but if that’s what you were trying to say, you haven’t. Besides, both reasons aren’t mutually exclusive. The frameworks might be so great that they don’t need more abstractions in the form of a CMS, and at the same time be less popular because they’re based on less popular languages (for the web, since Python is widely used in other areas where PHP doesn’t even exist).

        It’s pretty obvious that any PHP tool will find much more web developers out there (who would have thought?…), but if you really wanted to debunk the OP’s original stance you should have proven at least that the frameworks (Django and RoR) aren’t THAT great at all. Which you haven’t.

        I stumbled upon your article trying to find a critical review of Django. Your article obviously isn’t. Moving on.

      • Michael Fienen

        I think that’s perfectly fair, about the reasons not being mutually exclusive. It’s certainly a complex issue, and no one, including myself, could be 100% right about it at any rate. And I’ll be perfectly frank – I’m actually willing to admit that as tools, Django and RoR may be fantastic, as a matter of fact, because it’s simply my opinion that the quality isn’t a significant factor in the premise based on my experiences.

        I do apologize you landed here with unmet expectations. I definitely never intended this to be a critical review of any kind, though. It’s very much editorial on my part.

  • kenyee

    Curious what you use for your day-to-day Java CMS. You didn’t mention it on your site (at least nothing “java cms” could find in the search)…

    • billnye

      He states his go to is dotcms

Proud Member of BlogHighEd University Web Developers eduStyle

© .eduGuru - Internet Marketing and Web Development in Higher Education and other tidbits…. Powered by Wordpress. | Advertiser policy