What I've been thinking aboutI'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 BackstoryWhen 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 DrupalDrupal 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 MuraUntil 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 SolutionWe 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.
ConclusionRight 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