The importance of Mura (and Plugins)
What I've been thinking about
I've been thinking a lot lately about Blue River Interactive's Mura Content Managent System (hence forth referred to as Mura CMS or just Mura), probably because I have been working a lot with it lately. I am in the process of converting a large, mostly static, web site to Mura, and I have been amazed by its power, versatility and ease-of-use. I have been especially pleased with how easy it is for me to make plugins for it.While thinking about Mura, I have realized something important. Mura CMS is an incredible products with the potential to change the way that ColdFusion and CFML are viewed. And this needs to be recognized. It also has the potential to become a very popular, open source product used outside of the ColdFusion/CFML community.
Brief Backstory
When I was a fledgling web developer, still learning the way things worked and not ready to build anything for production yet, I tried to build things for production. My code sucked, my apps were insecure, they were poorly architected, and were hard to maintain. Sound familiar? I suspect we all have apps like that in our past, whether we admit it or not. Most of us probably have apps like that in our present that we are maintaining. Eventually, I came to recognize that I was not yet ready to build a large, robust application for the web yet, but I wanted to. I had ideas, I had goals, and I had the desire to learn more.As a quick aside, around this time I was recruited to a working group that was put together to create a new website for the Minnesota Valley Humane Society. They wanted a new website to replace the completely static site that they had. They were using Dreamweaver to update static HTML pages and it was an incredible chore to keep up with the daily (if not hourly) changes they needed to make. Adding and removing animals, registering animals for obedience classes, adding and updating availability of classes, highlighting the items they needed donated, etc. Running an animal shelter is a lot of work and keeping the website up-to-date was paramount to its success.
They needed a content management system.
This was early in my development career. I had been working for a year or so at a company that made custom content management systems. I had been involved in the planning, design, and implementation processes. I knew the kind of work that went into building a CMS from scratch and I knew that I did not have the time to build one, in my off-hours, for the shelter. I also knew that I did not have the skills to architect it from scratch and still have it be stable, secure, and functional enough for their needs. I also did not have the knowledge to implement something like FarCry at that time. I looked at it, but quickly became lost. Perhaps that has changed in the last 4-5 years, but when I needed a solution then, I had to turn to a solution outside of the ColdFusion world.
I used Drupal.
About Drupal
Drupal is a content management system/framework built in PHP. It is easy-to-use, versatile, pluggable, and scalable. It has a HUGE number of plugins available to make Drupal be just about anything you want it to be. It can be a blog, a dynamic brochure site, an e-commerce site, or a complete enterprise solution for a large organization. There is little you cannot do with Drupal, and what you can't do you can write a plugin for to make it do. Drupal has a plugin API that allows you to hook into the lifecycle of the application to make things happen. Your plugin can add things to the navigation simply by inserting an appropriately named function in it. It can automatically include itself in the administrative section of the site. And much, much more.Using Drupal I was able to build a complete, custom content management system for the humane society in less than 4 months, on my personal time. Using available plugins I was able to give the shelter most of the functionality they needed. The shelter personnel were very happy with the site and used it for 3 years before they, unfortunately, had to close. Though I know that that site would still be working for them today if they had been able to continue.
If I had had to build that site from scratch, even using ColdFusion, it would have taken me longer than 4 months (again, keep in mind I was only able to work on it part time, maybe 5-10 hours per week). If my employer at the time had built a similar CMS using ColdFusion we would have charge the Humane Society $15,000-$25,000 in custom development (assuming we charged the same as any commercial client). Using Drupal, I was able to give the shelter what they needed for free (my time was volunteer).
Drupal, this open-source and free software, saved thousands of dollars and hundreds of hours.
Drupal Roadblocks (for me)
There were some things that I could not find plugins for in Drupal though. And that was a road block for me. I am not a PHP developer and did not have the over-whelming desire to become one. I knew enough to modify some existing plugins to do what I needed, but there was some functionality I simply did not have the PHP knowledge to create. And I found myself wishing (many times) that this was a ColdFusion environment.Drupal is an amazing piece of software. Don't let any PHP haters tell you otherwise. I am not a PHP advocate, by any stretch of the imagination, but I will not tell anyone they are wrong for using it. It's a fine language and when combined with Drupal can provide an excellent CMS solution. But I am a ColdFusion developer, proud of it, and capable of doing awesome things with it. So I would rather use a ColdFusion solution. To have something like Drupal in the ColdFusion world would be fantastic. Even now that I am a skilled developer capable of building systems fromt he ground-up I still would rather work from an existing, well architected, pluggable system that I can extend to my needs.
Wait... what's this? Mura CMS you say? I've never heard of it.
Enter Mura
Until recently, I had not heard of Mura. I heard about it for the first time at cf.Objective() 2009, I think. It's been around for a while (previously known as Sava CMS), but has not really hit it big until the last few years. Mura CMS is the Drupal of the ColdFusion world (or at least it is getting there).Mura CMS is an "easy-to-use, versatile, pluggable, and scalable" content management system. Sound familiar? I just copied and pasted that from what I said about Drupal above. And it's true. Mura is all of those things. It can do everything that Drupal can do. And in addition it written in CFML which makes it easy for me to extend Mura's functionality through plugins.
So what's missing from Mura then? What makes Mura less awesome than Drupal? The answer there is the number of freely available, open source plugins.
Drupal has thousands of plugins. Perhaps too many. But it has them. It had (most of) the plugins I needed when i was building the HUmane Society site, which I could not have done without those plugins. If I needed functionality, I would turn to the plugin repository and usually find what I need. Of course, there were downsides to that too. When I was building Drupal sites it was, many times, a chore to figure out which plugins to use to accomplish the tasks as hand. It was also burdensome to research all of the plugins I wanted to consider. Some would be incomplete, some would be poorly documented. But others were not and were exactly what I needed.
Mura does not have the plugins that Drupal does. In someways this is good, but in more ways this is bad. I would not have been able to build the Humane Society website without Drupal's plugin ability and without the selection of plugins that I used.
So what is the solution?
The Solution
We need more Mura plugins. "We" meaning the Mura community of users. I do not work for Blue River so please don't get that impression.Plugins, Plugins, Plugins. Plugins, Plugins, Plugins. Plugins, Plugins, Plugins. Plugins, Plugins, Plugins.
Plugins need to be written and released for Mura. They need to be high quality and versatile. They need to be plug and play and they need to be useful. I know, I know, i am demanding a lot. But success does nto come easy. We talk about want it. We talk about wanting to increase the visibility of ColdFusion and to see ColdFusion open source projects succeed. Well, it takes work to make that happen. Who is going to do it?
When I write plugins for Mura (I am on my fourth right now) I try to write them in a way that they are not unique to my needs. I want to release them to others, but I cannot do that if they won't work. They should be plug-n-play. If a user takes my plugin and drops it into their Mura install, it should not throw errors. It should just work. If it needs more info to work properly then it should ask for that info.
I also try to make them versatile. I am not going to hardcode in the colors for my website, I am not going to hardcode in organization names, email addresses, etc. When we right plugins we should try to make them as versatile as possible. Making things as customizable as possible. And building in i18n functionality would be huge.
Yes, all of this makes development take more time. But it is worth it to our community and to ColdFusion and CFML to make that effort.
So how can you help? Write plugins. Find a problem that needs solving and write a plugin to solve it. Take an existing plugin (assuming you have the rights defined by the license) and improve it, help to document existing plugins. There are a number of ways you can help, but the important thing is that we get more plugins out there. And not just any plugins, high-quality, useful plugins.
I will be releasing any plugins I am building as open source, where possible. I have a couple that are just too unique to my system where I cannot, and I have one that I plan to release as a commercial product (if I can ever finish it). But the rest, including the one I am currently working on will be released, probably on GitHub, and will be submitted to the Mura Marketplace for inclusion. I have one on Github already.
Conclusion
Right now Mura is an ideal solution for CFML developers who want to quickly put up a website and have the skill to extend Mura for their needs. But what about those users like young Jason I told you about above. The kind that don't know ColdFusion but still want to build an awesome website. Don't we want them to be able to use Mura too? Surely we don't want to tell them, "oh sorry, Mura does not have a plugin for that. Maybe you should use Drupal". Hell no. We want to tell them, "Yeah, it probably does. Go check out the Mura Plugin Marketplace where there are hundreds of free (and some commercial) plugins. There is likely exactly what you need."Yes, it is possible that someday Mura could have the "too many plugins" problem that Drupal does. But that is a good problem to have and one that can likely be solved with a good market place that has a ratings system and possibly an activity requirement to keep a plugin listed.
If we can get Mura to a point where it is as logical a choice as Drupal for a new website for anyone (whether skilled in ColdFusion or not) then we can make a HUGE step in making both Mura and ColdFusion/CFML more successful in the marketplace. This would help users make the decision that CFML is a good choice and it would help improve the reputation of ColdFusion and CFML in the marketplace. Overall it can help bring about a comeback.
BTW: Everything I have said above applies to Mura CMS Themes as well. They are needed and are just as important to the success of Mura and ColdFusion/CFML





Good stuff, Jason!
The main point you raised in your conclusion, catering to young developers, is a very tricky one to solve...
Before I started working with ColdFusion, I looked at it and thought "What? You have to pay for this thing, I'll never be able to use that as a solo, yet-to-be-employed developer at THAT price, it's a business tool.". Mura does a very good job of hiding this as a product (they don't mention CFML on the home page, they bundle Railo, etc), but I also think that most young developers tinker with a language and then choose to work with products that exist within that space - I know I did when I first started using PHP 10+ years ago. I don't have an answer to this, other than to do what Mura are already doing :)
Another point is the importance of *good* plugins. I'm kind of playing devil's advocate here, but sometimes I look at things like - for example - a "Facebook Like Button" plugin and think "it's 6 lines of code that you copy and paste from the Facebook Developer site, is that really a plugin?" Then you have the issue you raised where there are too many "similar" plugins to choose from, and in the end most of them don't really do what you want and are no longer maintained. This is something that jQuery suffers from massively, and something that can go against frameworks when people don't understand the relationship between a plugin and a version of a product - "I'm trying to get plugin X to work but it's broken. Oh, it was written for jQuery 1.4.x..." I think this is something that even seasoned developers can struggle with sometimes.
Overall I do agree though - plugins are super important to both get developers interested and help grow a community around a product.
P.S. The new FarCry plugin explorer was recently released (http://plugins.farcrycore.org/), just the first part in our upcoming plugin strategy ;)
Thanks for the comment. I hope nothing I said came off as a slight to FarCry. When I looked at it back then it was over my head compared to Drupal. Perhaps it was a documentation issue, perhaps it was my own fault for looking int he wrong places. Either way, I meant no insult to FarCry. I am sure it is awesome.
My efforts here are on Mura. That certainly does not mean that FarCry should be ignored. If it is as easy-to-use out-of-the-box as Mura then that is awesome. PHP has room for Drupal, Joomla, and likely several other CMSs, I hope we can have the ability to support multiple open-source CMS solutions as well.
My concern is that our pool of resources (namely developers) is smaller than PHPs. If we split developers that are willing and capable to develop between two CMSs to build plugins then might we end up with two partial solutions?
I chose Mura because it is easy-to-use and easy to extend. I have met the Blue River buys and had the chance to sit with them ask them questions, pick their brains, and learn from them. They are very much in the limelight. Honestly, I have not heard much about FarCry in recent years.
Again, I mean no offense to FarCry. My ultimate goal is to improve the status of ColdFusion in the development world. And I think that by getting a product like Mura or FarCry into a position that it can compete with Drupal and Joomla for the non-developer market we can accomplish a lot toward that end.
One final note, I do not feel that Mura, or anyone else, is trying to "hide" the price of ColdFusion. Yes, ColdFusion costs money. But that does not mean that a Mura deployment needs to cost you anything more than $0. I don't think anyone is trying to hide anything. For many site the OSS CFMl solutions may be perfect. And those that need Adobe ColdFusion know that it is worth the price.
Targeting non-developers is even more difficult than targeting junior developers, so I don't envy that aim. It's actually really difficult (and time consuming) to build a product that does "everything" out of the box without any developer knowledge.
I gather that Mura goes some way to doing this, compared to FarCry which is more geared towards developers who want to build websites with custom content types, rather than just using "CMS" capabilities out of the box. Of course you can, but the platforms' power lies beyond that. I think Mura is better positioned to take on Drupal for an out of the box experience.
I've actually had the 'Custom Content Types' conversation with FarCry fans/workers before, and should point out that Mura does this as well. You can extend any of the base types, as well as create custom ones. It's done a little differently in Mura than in FarCry, but in the end both work pretty much the same and are equally powerful (indexed, strongly-typed data accessible through both the base CMS and a developer's customizations).
For extensibility, the real strength in Mura comes when you combine plugins and Class Extensions in Mura, which allows you to customize the UI of the back-end administrator and front-end user experience without breaking the upgrade path or even needing to add new db tables. Mura 5.5's new drag/drop Form Builder will eventually be combined with Class Extensions to make building/extending Mura not only easier, but much more flexible/powerful. Also new to 5.5 is the Configurator which is also available to plugins, making per-page (really per-insert) configuration of a plugin's generated content super easy.
The plugin architecture is good, and I feel the same as you. It needs the community to really focus on creating good, reusable plugins, like WordPress and Drupal have. It's a very powerful platform that really is easy to develop plugins for once you get the basics down. Kudos to the guys at BRI.
Nowadays, I don't do much CF (I'm mostly UI) so I don't do much with CMS, but when I do, I use Mura.
I had the opportunity to speak to the importance of Plugins, going through the benefits of a vibrant Plugin ecosystem at MuraCon 2011.
The slides are up for anyone who might be interested.
http://www.panesar.net/2011/09/02/building-mura-cm...