Is it okay to mix and match server languages for a single solution? What if I want the flexibility/value of ExpressionEngine to manage the content of my site, but have a large part of of the site that needs some heavily customized code that Ruby on Rails is a good fit for.
I often find myself thinking, "Is it okay to mix and match platforms for a single solution?" For the longest time my inner designer told me that this was a bad idea. You pick the platform that works best for the problem you are trying to solve and then deal with it. The more time I spend thinking about this view of the world I start to wonder if I am trapped in my own dogmatic view. Surely there are other ways to approach problems.
A little backstory
Early last year I did a review of every content management system (CMS) that I could find. (On platforms that I wanted to use day to day, sorry .net.) I came away with the opinion that PHP had the best systems to offer for the requirements that we had. Of those PHP-based content management systems, ExpressionEngine (http://expressionengine.com/) seemed to be the front runner. It offered the most flexibility, ease of use, and a large development community. Also when I looked under the hood at ExpressionEngine 2 it was built in a way that made me smile. We have completed several projects with it and love it as a platform to build websites on. Expression Engine seems to make both the web developer happy as well as the client, which is no small feat.
ExpressionEngine works great for managing content and e-commerce, but it is not meant to manage data or custom business workflows. This is not a bad thing at all, it was not designed to do that. ExpressionEngine is built with PHP and CodeIgniter so it is very possible to make custom extensions. At Sparkbox almost every single project we take on has a CMS, and I doubt this will change.
After starting my career in Java and C++ I have fallen in love with Ruby on Rails (RoR). For custom development jobs you get more bang for your buck with RoR than with anything else. Now one strike against RoR is that there is no well-developed, easy-to-use content management system. I know that some of my Ruby friends have argued that Rails is a content management system, but I still don't see the value for our clients in creating a custom solution for every site. In spite of this, I still believe that RoR is the best solution for most custom development jobs.
Can they be combined?
When I think about web projects that start to go outside of informational sites I wonder if there are not cases to put both solutions to use. Can I manage the content and front-end of the site in ExpressionEngine and the data and custom workflows in RoR? It seems that with the way RoR uses REST this would be a perfectly workable solution. As long as you could clearly define the contract between the two platforms, then isolating the content from the managed data might be a desirable thing.
While there are some things that I may never change my mind about, I find my self rethinking many of the things that I thought I knew. Maybe we should all start asking why not rather than why.
What do you think? Have you ever mixed and matched server-side solutions?