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

Comments
Grant Shepert's Gravatar Ok, I am obviously a little bias when it comes to Mura, but I do love to see this kind of passion. I tell the story of how Mura kept me a CF developer often, and it is for all of the reasons you mentioned. And I have to agree that the easiest, most powerful way of contributing to the rapidly growing Mura community is building and releasing plugins.

Good stuff, Jason!
# Posted By Grant Shepert | 10/24/11 6:16 PM
Justin Carter's Gravatar To be fair to FarCry (disclaimer: I work for Daemon), it's AMAZING compared to 4-5 years ago :) And for several years, dating back to FarCry 4 (I think, maybe it was 5), it has had a published, publicly available training course for developers to learn how to do most things a new developer would need to do - edit webskins, create new content types, create forms, etc. The documentation on the wiki is available for anyone to contribute new content or corrections, code by example... and if the support there isn't enough then there is of course the farcry-dev mailing list on Google Groups, and Daemon also do consulting and instructor led training.

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 ;)
# Posted By Justin Carter | 10/24/11 7:13 PM
Jason Dean's Gravatar @Justin,

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.
# Posted By Jason Dean | 10/24/11 8:58 PM
Justin Carter's Gravatar @Jason Nope, no offense taken, I thought I would just spread a bit of FarCry love since you mentioned it :) We don't get much exposure when we're all the way Down Under - though there will be a FarCry session (as well as a Mura CMS session) at cf.objective(ANZ).

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.
# Posted By Justin Carter | 10/24/11 10:39 PM
Grant Shepert's Gravatar @Jason, first in terms of bias, I work for Blue River Interactive, the builders of Mura CMS. And sorry if this is a little off-topic, but it is important in the context of devs evaluating Mura as a foundation for their projects.

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.
# Posted By Grant Shepert | 10/25/11 5:29 AM
Justin's Gravatar Coming from an org who is abandoning CF for Oracle over the next few years and the 50 CF developers along with it, I can attest that the main problem is the requirement to build everything from the ground up compacted with the technological debt that poorly implemented homegrown solutions have brought. Mura and Railo are probably the key to CFML's success or failure with younger developers and companies.
# Posted By Justin | 10/25/11 12:25 PM
JP Revel's Gravatar I share your enthusiasm and philosophy here. Mura, as well as the dozens of projects on Riaforge allow developers get up to speed quickly and offer a lot of functionality, keep ColdFusion strong and viable.
# Posted By JP Revel | 10/25/11 3:54 PM
TJ Downes's Gravatar Jason, great post. I've been using Mura for a couple of years and I tout it as the best CF CMS there is (sorry FarCry team!). I was able to sell my first Mura project to a city council after only playing with Mura for two days. I was sold on the simplicity of development, they were sold on the simplicity of it's use.

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.
# Posted By TJ Downes | 10/26/11 1:21 AM
Jas Panesar's Gravatar I'm a little late to the party but have to throw in my support for Plugins. There's something different about how BR has been able to draw the line between plugin and core 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...
# Posted By Jas Panesar | 11/25/11 6:21 PM
Tony Garcia's Gravatar great stuff, Jason. I've been sitting on a few ideas for Mura plugins for a while and I'm going to get off my butt and start working on a few!
# Posted By Tony Garcia | 6/6/12 5:15 PM
BlogCFC was created by Raymond Camden. This blog is running version 5.9.1. Contact Blog Owner