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.

Server Side Languages Market

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.

Evolving in a Recession: Opportunity in Open Source

Raise your hand if you see your budget on the chopping block for next year.  The current topic de jour has been how so many school’s are being asked to do more with less.  Budget crises from state to state have everyone scrambling to find ways to cut corners, and trim fat.  Some people are lucky enough to be well past a recent redesign, and have frameworks and tools in place for the future.  In those cases, be glad you got on the boat early.  But, that doesn’t mean that there aren’t still a lot of schools needing to evolve, or looking to retool.  One thing that is seeing renewed interest, are the potentials of open source software to help drive web sites.  For nearly any tool you use: CMS, calendar, E-learning, project management – there is some kind of open source alternative.

dotcmsAdmittedly, just because an open source alternative to commercial software exists, doesn’t mean it is good.  But, let’s look at a content management system, for example.  If you’ve ever had the chance to talk content management systems with me, you know I am a big proponent of dotCMS.  Why? Because it’s free, awesome, and crazy easy to use.  I have three words for you: Enterprise Open Source.  You might have heard about similar offerings from the likes of Drupal, who recently began offering a line of professional support for their open source CMS.  This is also basically what you pay for with things like Red Hat Linux.  The idea is that the software is free to use as you please, but if you need a backbone of support, you can pay for that, too.  Why this works so well for the likes of us is that it allows us to offer professional tools for a small (or no) line item on the budget.

Why is this important?  Simply put, have you priced things like RedDot or OmniUpdate lately?  Not to say they aren’t great systems, they are, but a lot of schools could see themselves coming into a demand to update their sites’ infrastructures without much in the way of financial support to cover such a change.  And while the temptation might be there for some to try and shoehorn a large and complex site into something like Joomla, it’s a good idea to know that there are better alternatives out there.  And CMS’s aside, if you are looking at applications for other areas of campus like community development, portals, CRM, etc, those costs can really add up fast.  Slap on top of that annual support costs and all you’ve really succeeded in doing is creating a great big money pit.

opensourcevectordiamondWhat dotCMS offers universities is a broad scoped tool, with granular permission controls, varied template designs, flexible content creation and repurposing, and an open source code base to build upon.  More importantly, being open source, there is a growing and very valuable opportunity for schools who have adopted it to begin networking.  These schools have the chance to pool resources towards goals.  Maybe that means taking several small amounts of money to do a “group-buy” on a desired feature (dotMarketing will custom code about anything you want and commit it to the code base, but if it’s off the normal roadmap, or a low priority, money obviously changes said positioning), or if the schools have committed Java developers, they could work on creating Viewtools and servlets that could then be shared between everyone.  It’s this spirit of communication, collaboration, and extension that makes a tool like this substantially more valuable than some closed source counterparts.

Enterprise support entirely aside, I am trying to encourage schools who have already adopted dotCMS to consider such a partnership.  There’s a group on the UWebD Ning site, and we’ve set up some basic help forums for the software.  My hope is that through collaboration, we can do a lot to help ourselves.  Users have a valuable opportunity to embrace and extend in ways that simply are not allowed or possible with commercial enterprise systems.  Imagine the driving force a network of committed schools can apply to open source projects that we see value in.  Not only can we make them better and grow them quickly, but we can expose people to the products.  Why do you think Apple loves getting contracts with schools?  When you get your product in front of people for hands on usage, when the time comes for them to make their own choice on what to use, what do you think they’ll choose?

collabtiveSome schools have created similar approaches to CMS development with things like Zope/Plone, and there’s no reason we can’t do the same in other arenas.  We are in the market of knowledge, and it only makes sense that universities should be the breeding grounds for supporting open source initiatives.  That’s the very spirit that drives us, and it’s the way we can really begin to carve out a valuable niche for ourselves going into the future.

Better still, consider how you can take and apply this kind of mentality to other tools.  Maybe you use SugarCRM, or Collabtive project management,  or Moodle E-learning software.  Any of these tools could give you the chance to build with others.  As an office, our two man staff can’t cover a lot of ground, but if we can combine our efforts with other schools, suddenly we have some horsepower to apply to needs.  Now, that doesn’t me coordinating such efforts is either easy or fun, but once established, they can become invaluable lines of communication and development.  Ultimately, universities are well-oiled machines when it comes to spending money, and we’ve spent a lot of years thinking that any problem worth solving is worth paying someone to solve, but that’s just not a model that appears to stay solvent as we move into the future.  Open source software gives us the chance to not only do more with less, but to simply make ourselves as individuals and employees, more valuable.

Look at it this way: anyone can form a committee and hire a company to do a job, but if you are specifically skilled at developing products, and have a resume full of OSS building experience, and you can show how that translates into saved monies, you’ll be pretty darn secure into retirement.