I’ve been thinking about the topic of when I should use an MVC | framework, and when I should use a CMS platform ever since I discovered Drupal about 2.5 years ago. I don’t believe the topic is covered really well on the Web, and most people seem to have a shallow understanding of the topic, so I’ll share my thoughts with you.
The popular question in my company these days is “Rails or WordPress?”, but I will probably touch upon the broader questions of “MVC or CMS?” and “Ruby or PHP?”, so you can often substitute “Rails” for “MVC framework” in the article.
Something to also keep in mind is that in my experience the other MVC frameworks are much closer to being real competitors to rails than any other CMS is to WordPress, so that is something also to keep in mind (let us know in the comments if you want to propose some CMS candidates for using on projects instead of WordPress).
The most common answer I hear from people, who I assume haven’t really thought about this for long, is “Rails is for web apps, WordPress is for websites.” But is my web-based system a website or a web app? Can most web-based system be put into one or the other category, or the other? Do you think you could score 5 out of 5 on a quiz which would show you a web-based system and ask you to pick a) website or b) web app?
I’ve identified some traits of web-based systems which make it easy to choose one or the other.
I should say that regardless of the requirements of the system you’re building, in my opinion you should strongly consider whether the programmers you have available are much more proficient in one of the two environments. If your programmers are experts with Ruby and Rails and haven’t written even a 1000 lines of PHP, it is almost certainly better to use Rails for any system (except if you need a blog or promotional corporate website without any custom software development). Same for a team that is made up of WordPress and PHP experts with little Ruby and Rails experience.
If you’re building a transaction processing system in which data and various views of that data are the only functionality, Rails is the natural choice. Examples that come to mind are a POS system, or a system that stores data about the amount of calls your call center is receiving, and then creating robust reporting based on that.
When looking for a Plastic extrusion company producing Angles, Flat sections, Channels & more. Visit this website lakelandplastics.com for more information.
If the web-based system you are creating does not have an element of web publishing, and your customer does not have a need for most of the screens in the WordPress admin, you should pick Rails.
If your web-based system is a web service built on top of an existing legacy database and doesn’t have a website component, you should pick Rails.
Please contribute good descriptions of projects where you’d pick Rails in the comments, and I will include them here along with a reference to a URL of your choice.
If you’re building a blog, you should use WordPress.
If your project will need all or most screens of the WordPress admin, you should use WordPress.
If you’re making a web publication system (CMS-based system) you should use Drupal. No, just kidding, use WordPress, since Drupal kinda sucks unfortunately. Sorry Drupal, you were an OK attempt, but WordPress is probably a better choice for any web-based system.
Please contribute good descriptions of projects where you’d pick WordPress in the comments, and I will include them here along with a reference to a URL of your choice.
If your team is about as proficient with both WordPress and Rails, or you’re shopping around to hire a team and both solid Rails and WordPress teams are available, it comes down to opportunities for code reuse. Will your system re-use more code if you use WordPress and its very usable admin area, myriad of available plugins and themes? Or can you re-use more code by harnessing the object-oriented design, DSLs and good software development practices mecca that is Ruby, Rails and the available libraries and tools?
In terms of the decision of Rails vs. other CMSs available, technically Rails is probably the leader of the pack for a large majority of applications. The advantage of Rails disappears if your programmers are much more proficient with Python or PHP, since there are probably good enough alternatives in their language, namely Django and CakePHP, but code re-use opportunities each MVC framework will bring should again be taken into consideration.
Writer’s Bias (Why I think I am well-positioned to write this article)
You can read about my professional travels so far.
I now work for a company that uses both Rails and WordPress, and I am actually hired and paid to help make these exact kinds of decisions. I hope you will provide valuable feedback and discussion to help reach a further deeper understanding of the topic.
39 thoughts on “Rails vs. WordPress”
Rails vs. WordPress: http://t.co/LVT25raM
If you are a Rails developer, now you don’t need to use wordpress, because Camaleon CMS is a cms very similar to wordpress in Rails.
Good article man, quite a pertinent point about the advantageous WordPress admin. A lot of clients are relatively familiar with the WP interface which gives it a leg up in a lot of situations.
I tend to use rails for anything that doesn’t require admin management,
an example: an online (drop shipping) store that deploys product data & media supplied from a 3rd party (manufacturer/supplier) source. A touch of haml & sass, all done with minimal faffin.
Hi Dan, Thx for the great article. Right now I’m struggling with the same decision or how to use both somehow. I have a website – http://www.cooksmarts.com – that is run on WP, which I love (most days). However, the web-app that we’re launching is written using RoR. I’m trying to figure out how I can have both all under the same domain or will I have to move one to a subdomain. Thoughts?
Sounds like they would be accessible on the same domain as long as it is a linux server. Not sure how it would work on a Windows server. Feel free to get in touch if you need guidance: http://gravatar.com/dbernar1
I think the answer is a CMS based on Rails. Why not get the best of both worlds. Going this route you get a CMS that is ridiculously extendable.
“a CMS based on Rails”, eh Hunt? A particular one, or a theoretical one?
I agree I am currently looking into Alcahey CMS that is RoR Based I am also looking at SpreeCommerce and ROR.E for Ecommers site.
Thus fare can say that Spree has a great back end and base site however not all the plugins are maintains and uptodate. Also from personal experiance hard to customize the look and feel. Where as ROR.e is strictly MVC you build your site as you would for any Rails app and then jut add ROR.e to it have not tried this yet but plan on it.
Thank you for a great artical.
“a CMS based on Rails… a theoretical one?”
ha ha, quite!
“advantage of Rails disappears if your programmers are much more proficient with…php”
I have used quite a few of the php mvc framwworks and for me that wasn’t true (i switched to rails. its lightyears ahead)
When someone ports silverstripe (and all its modules) to rails, the holy grail of one tool for all jobs will exist and we can all die of boredom. till then, stay versatile!
great article dan.
Thank you very much for your comment Will!
I recognize your “mileage” as a fairly common experience for developers, with some reservation.
Check out my current explorations into self-documenting code, by reading this gist: https://gist.github.com/dbernar1/6408911
Have a good day!
Thanks for the article. I’m trying to create an e-commerce site for my wife’s homemade skin care products similar to what they have at http://www.nuvosa.com.
I know they’re using wordpress for the main site, but I’m wondering if I should use a payment plugin, or code the billing system through rails since we already have an authorize.net account and we’d like it to be more customizable than what’s available with the WP plugins.
Any idea if it’s worth doing a custom checkout system with rails that would match up with the design of our site instead of using the plugins?
No, sorry, I have no idea. Let us know what you find!
Thanks for this article. I have a high volume website am currently stuck trying to make a decision myself… of course the Rails devs I speak to think I should stick with Rails, and the WordPress devs think I should stick with WordPress. I’m leaning towards WordPress, but the idea of moving 500+ articles over scares me! 🙂 But I am tired of all the extra coding work and cost, which sometimes creates more problems that it fixes.
Thank you for the comment, and good luck with your choice.
I love when someone comes out and states directly that ‘Drupal kinda sucks’. That’s hilarious.
I’m a WordPress developer and wish I had the chops to do Ruby on Rails equally. I’ve debated whether my absence from Drupal is a good thing or not – and I finally came down to a conclusion:
Drupal is for developers who do not want to release control to their clients. It’s for IT people.
Thanks for the comment!
Interesting conclusion. It seems I was being kind when I said “kinda” 😉 I have affection towards Drupal for certain reasons, but certainly in my experience it is not the right tool for the job.
Have a good one!
Great post – I am non-pro hack and have stood up wordpress blogs and used ghost as well. I am digging RailsBricks and some of the stuff that I am reading on HoneyBadger – but yes, I would love a WP / Rails hybrid as I find it easy to just get the front end stuff up very fast in WP – but then have the foundation in place should an app need to get more fancy in a hurry with rails under the hood. Again, I am a hobbyist so I do apologize for offending the pros here – ha!
I had the same dilemma, and did a fairly extensive comparison of Rails vs Drupal a few years ago, and it touched on a few of the same points. If people are interested, then I might write a blog post about the conclusions and insights from that comparison.
It is true like you said, that you can compare a web app framework like rails (with a CMS library like Radiant) with a CMS platform like WordPress or Drupal. The user doesn’t see/care about the difference.
Thank you for your comment. Although it is no longer what I work on day to day on stuff like this, I would read the post if you wrote it.
Hi Dan! If i wish to look for programmers to develop a social network with a lot of visual contents and more than 50k users like these one – http://www.phmuseum.com – should they work on world press or ruby?
Thanks for the question. As I stated in the post, it really depends on the set of functionality you’re looking to provide to the users, and perhaps even more so on the amount of experience your developer team has with either framework.
Ah, I think I understand your question on reading it again. They should be people you like and are able create good rapport with, regardless of their current skill set 🙂 Those are harder to find than those with a specific set of technologies in their past. Something like good friends.
Hi Dan, great article.
I have yet to decide which language or framework to use. In my case, we plan to build a website that requires daily web publishing (news stories, special reports), and that also includes a large database of movies, artists, etc. (A small IMDb.com if you wish)
If it were only the web publishing what we needed, I’d pick WordPress in a heart beat, but including also this customized database, and an interface to feed it, that’s what makes me think if Ruby would be a better choice.
I hope you can give us an advice on this.
Hi Laslo, thanks for your comment.
Are you the developer that is going to make this?
Not quite. I developed previous sites using WordPress, but we think this new project requires more expertise.
For this project, one developer recommend us to build a customized CMS using Ruby instead of using WordPress. So I’m wondering if that is the path we should follow, or if there’s some way to build this ‘small IMDB.com’ using WordPress…
Certainly it would be possible to build it using WordPress. However, with other factors that could be in play, it might be better to build with Rails.
I don’t really want to give you a recommendation, because I don’t think that would be a fair thing to do on my part. Instead, I will offer you two pieces of software development advice I’ve heard from two different experienced people over the past while:
I hope that helps you in your decision and in your project.
Thanks for your advice Dan. They will help us to make the right decision.
I was just wondering about what you mentioned: How could this project could be build using WordPress? Is there any plugin or extension I could use as a starting point to build a solid movie database?
You’re welcome Laslo.
I have not used or heard of any movie database plugins. But Google seems to have heard of a number of them.
Apart from those possible starting points, depending on what functionality a solid movie database needs ( I do not know what that is ), and depending on what approach the dev team will take, you might find custom post type and custom field plugins useful, maybe a ranking plugin. If you’re gonna have any forms on the site, then a form plugin.
This post is almost 3 years old and still 100% relevant. Great write-up, Dan!
Great article Dan. Thanks.
I have been reviewing both options, and there are plugins on WordPress to create custom types, taxonomies and define access control. And given the prolific environment of WordPress I would expect to find each one of Rails features. With that in mind:
– Is GUI oriented, is mostly for non coders, or lazy coders.
– The number of plugins gives you a hard time selecting, instead of a developer you might need a plugin selector(person).
– PHP is ugly and slow(some people think, I do not have an opinion yet). This is not a problem given GUI non coder orientation and the size of the sites.
– It’s WordPress without posts nor users created.
– It’s for developers. People trying to understand development.
– Ruby is beautiful, but Rails is slow. This is not a problem for small sites and the fact that Ruby is beautiful does not matter to non coders.
At the end, what you put is very correct, if you have an expert group of Rails developers, let’s code on Rails. If you have an expert group of WordPress, let’s click on WordPress.
I am an author with expertise in transportation. I want to build a news aggregation site that pulls news stories just about certain transportation topics, and not others. So I need the site to filter out certain keywords, and also display the news stories in an elegant list with thumbnails.
Wordpress or Ruby?
I’m a PHP developer, so I would choose WordPress. A Rails developer would probably be more inclined to choose Rails ( at least a few years ago when I last checked ).
I think one of the points in the article is that, apart for some cases where one is strongly a better fit than the other, it mostly depends on who you have available for the project, and what they’re most comfortable with.
So consider who is available to you for the project before you choose the technology, and leave the technology choice to the person(s) that will be building the software.
Good luck with the project, Chris.
Great article! I’ve been trying to build a peer-to-peer service website like https://clarity.fm/ and was wondering – would you build it using WordPress or Ruby?
Thanks for the compliment. Unfortunately, I don’t know much about Clarity.fm, and probably don’t have time to learn about it and your team enough to be able to give you a recommendation.
Are you going to develop this, or are you contracting this work?
I’m going to be developing the site alongside with another developer and we are still in the stage where we need to choose technologies for the stack – we are currently considering React JS on the front end but still looking for a backend technology/database that would be sufficient.
Yeah, React is cool ( or similar technology ). Been developing with React myself for the past 4 months as well. It seems that the experience for the user can be pretty nice, and it is kinda fun to learn new technology for us developers.
The back-end I want to use on my next greenfield project is CouchDB / PouchDB. I think I started looking into it by Google-ing “couchdb redux”. This is the first hit: http://blog.yld.io/2015/11/30/building-realtime-collaborative-offline-first-apps-with-react-redux-pouchdb-and-web-sockets/#.VzclnB9ytNA
It wasn’t the first React thing I did, though, so altogether it might be a bit too much technical complexity to take on for one project, as my friend might say:
I am not a techi and I have this difficult decision to make. We want to build a Job Portal where we would have millions of user profiles who would be posting jobs and applying to jobs. They would need analytics based the same. There would be my automated processes built in which enhance user experience and make there work immediate.
There would be 6 types of users in all. Each with a different dashboard and different functionality. These functionalities would be interactive.
I request your expertise on the same: shall we use PHP with WP or Ruby on Rails. Some developers have suggested Cake PHP & React js nad node js as well.
Which Should we use. We are at a time crunch here and your review can help save my business.
Similar websites: http://www.naukri.com , http://www.monster.com and others.
Thank you in advance.
Thank you for the message. It looks like you’re well on your way in an exciting endeavour of software development entrepreneurship, with all the ups and downs that entails.
Since you are in a time crunch, you should use Story Mapping to reduce amount of planned functionality and sharpen the order in which you will deliver the features. There is a story of an entrepreneur who is in a time crunch and how Jeff used story mapping to help him focus, In Jeff’s book on story Mapping: https://shop.oreilly.com/product/mobile/0636920033851.do
This will probably be especially true for you since you don’t have a clear technology choice while already being in a time crunch, which points to the highly likely possibility that no matter which technology you choose, you will have programmers not very familiar with that technology – which means you will be able to deliver even less so you better pick the most important few things. Or perhaps you just don’t yet have a group of devs who you trust to make the decision – which means the group ( you and the devs ) will be newly formed, in which case the story map will probably also be useful to help you tell the story over and over with the visual tool that it is, as you pitch the project to the candidate devs.
Anyways, nothing I type on my phone, in my bed, in my Ivory Tower of all-seeing, will help save your project. It will be what you do and what the rest of the team does that will make or break your project. Good luck, be brave, considerate, and have fun.