Metal Toad has been building applications and cloud environments for some of the most well-known global brands for over a decade. Learn more > >

The Framework is dead. Long live the CMS.

If you don't know already, the framework is dead. That is to say, unless you have money to burn, frameworks like Zend, CakePHP, Django, Struts, .NET, and even Rails should not be considered as a foundation for building anything but the most unique and game changing websites*. The age of the framework for building websites is gone and it has been replaced by the open-source CMS or Content Management System.

In this declaration I am not promoting any particular CMS (although I'm partial to Drupal myself), simply letting anybody who hasn't heard the news that just about every website needs more than CRUD (Create Read Update Delete), a shared database connection and other simple tools frameworks provide.

What's so great about a CMS?

Almost every website on the planet needs these key features:

  • Content management (obviously!)
  • Users/roles
  • Built-in session handling
  • Advanced theming
  • Categorization/taxonomies
  • Site search
  • Widely available modules (add-ons, plugins, etc)
  • More formalized code development rules
  • Search engine friendly code/urls

While not every CMS has all of these features, many do. Nor does this mean a faster start on new projects but faster evolution of old projects. Open-source Content Management Systems outpace the competition in terms of development time, available features, and fewer bugs every day of the week. That means lower development costs and faster release cycles - and it means outperforming the competition.

Give me some examples

For people looking for specific platforms that fit the CMS profile, here's a short list:

  • Drupal
  • Joomla
  • WordPress
  • Plone
  • ModX
  • Hippo
  • Concrete5
  • Radiant

There are literally dozens of others to choose from, built in everything from Java to Ruby.

So if you are developer and you are still programming using a framework or (god forbid) a totally custom app, take a few weeks and take a content management system or two for a test drive. You will likely be shocked by how much excellent code is out there for the taking.

Comments

If you have a client that needs a very special design then Drupal can become hell, and you should have used a framework. Even if you then have picked a framework this can also be hell.

My preferred option is often to use components from Zend and Pear, or components from other places that fit my purpose, and roll out my own framework - this will often mean that your have full control over the building of your website.

If people needs a CMS then Drupal is often a great choice, but if the features become highly specialized then the Drupal system can become an obstruction.

What a developer can do within Drupal and the frustration they feel getting Drupal to do what they want, has a direct correlation to how much experience they have with Drupal. It's very easy to say "Drupal doesn't do something", when it may be more appropriate to say "I don't know how to do this in Drupal". It's certainly true that Drupal doesn't do everything, but dismissing a tool (Drupal or otherwise) and going back to existing patterns can leave to stagnation.

By getting onboard with a project thousands of other people have bought into, a developer tap into something larger then themselves or their immediate team.

For our part, Drupal is not always the solution, but it's very few clients who can truly afford to build something from the ground up. This includes not just initial development cost, but security patching, feature addition and support over time.

I'm not sure what you are describing qualifies as any more than healthy discourse amongst a passionate community. I don't see any evidence of developers leaving the community. As a matter of example, the author of the first two articles you listed (sun) wrote that back in 2011, and has been actively committing code back to Drupal as recently last Sunday. I would hardly call this unraveling.

Well I'm not a guru in coding as well as in a CMS. I am learning as well as coding in PHP since from last two years and has created very strong base of web programming. Things were going good, I learned bunch of technology as time passed like JavaScript, AJAX, jQuery and etc. Now I was entering into IT market, and got surprised. In now a days I observed more than 80% peoples want their sites to be built using any CMS like Drupal/Wordpress and many others. Suppose a person who wants to his website build by other, their is 90% + chances that he does knows about programming very well. That's the main reason why he wants his website to be built using a CMS where he can maintain his website by using easy to use admin interfaces instead of hiring any IT person for little changes. That I personally think, is the main reason why CMS are getting high.

Now here comes a big question in front of me. SHOULD I LEARN A WELL KNOWN FRAMEWORK OR A MORE DEMANDING CMS. However I tried learning both and there are obvious problems with them both.
First: Both requires a good learning time. Means you have to commit for any one for at-least some months or may be upto a whole year. Unless you commit for any one, your mind may float between them choosing a best option, lol....
Second: Suppose I choose to start with frameworks, I will dedicate my 90% time designing logic and when it comes to look and feel, I will be either tired or monotonous.Means framework may kill your good UI. And if i choose a CMS it's absolutely either going to kill the logic or I will be their devoting 90% of my time stiching plugins and templates together.

So could not decide yet what's better a CMS or a Framework and Now Want to here from you guys......

This article underscores a strong opinion: the open source CMS (like Drupal) is the next evolution in web development. It may take longer to get to know, but knowing one well will allow you to provide your services to that 80% of people who have realized the value of the CMS. I think the number of people who should be using a CMS is closer to 95%, but that other 15% of them are making ill informed decisions.

From all of the comments i understood one thing i.e,

use CMS to build wonderful websites.
use Frameworks to build wonderful web apps.

I Recommend you choose what to learn based on your immediate need but when you are free you can always just check the other one as knowledge is always precious.

Good strong post, but i think the right tool for the job still applies and thankfully we still get requests for projects that are creative enough that a great framework is the best starting point. For those situations thats Rails for us.

Other times silverstripe is a much better choice because of the functionality it brings. Its also built on a framework good enough to allow for lots of customisation & creativity without the pain.

Iv'e found other CMS's fall short of claims they can expand beyond their core expertise - their architecture just isn't adequate for the task. I'm not talking about Drupal though, i know some fine people who say its great. Never used it.

I definitely don't agree that if the project budget is huge over a long period of time the foundation doesn't matter though. Thats exactly when you need to make sure that the foundation allows for your requirements to define the solution in the most painless way possible.

I am both a designer and developer, and I love Drupal. However I have been asked by a client to recommend a CMS for multimedia - it's a Design school specialising in still photography and video so they need a CMS that is great for streaming large files and working with images.

Drupal 6 is terrible for images (Even simple galleries need upwards of 15 modules and fine grained access control is still a dream), and Drupal 7 still hasn't really completed the Media module. I have used Joomla and I really don't like it. Can anyone tell me what Wordpress is like for a website with mostly video, audio and image content?

Wordpress has strong image capabilities. They recently updated the upload & edit systems & its really good - its nicely made too with a backbone based architecture. One thing to consider is the image sizes / thumbnails you are going to need. Its worth having a good think about all the sizes you will need and specifying them in the functions.php file. WP doesn't create them on the fly, it makes them on upload, so its slightly tricky to change thumb sizes later (although there are good plugins to do this)

For video, its fine. The main thing you need to consider is formats, and how you are going to playback movies - I've used longtail player before which has been really good - it plays html5 formats & has a flash fallback so all devices are supported. There is a WP plugin for longtail that gives you shortcodes etc to place movies in pages.

Frameworks should be used for applications not websites.
E.g at work I create applications that run through the web (previously desktop). I think its fine to use frameworks for this sort of project because CRUD is mostly what you need along with roles, logins, and capabilities.

Besides that you may need the odd "do this when x happens" and other event driven features but a framework will suffice in most cases such as .NET MVC in my instance.

For websites, use CMS like Drupal, Joomla, Wordpress, Dot Net Nuke, etc depending on your language/hosting preference.

From my experience CMS are only much use for companies that tend to pump out a similar type of site (e.g - a typical content site) and even then there are issues.

At my previous place of employment we tried Drupal for a while, but we found it to be too inflexible, it was fine for a mid traffic bog standard content site, on the other hand anything a bit out of the ordinary or that had a lot of stuff that could not be cached to death was a problem and vastly inferior to a framework.

There were also other issues, upgrading between versions was a joke, many modules were full of bugs that were either never updated or took months for the owner to address, which somewhat defeats the point if we have to re-write half the modules.

Furthermore the actual code was not very good, rather clunky and the general view was not a pleasure to work with both from programmers and designers who hated the spaghetti like template system.

Then there was the performance... On a busy site if you could not cache the output to death the performance is abysmal, both in terms of actual speed and in regard to the sheer amount of server resources it takes compared to a typical framework.

Thankfully it was decided Drupal (or any other CMS) was not going to cut it and just increased overheads. training requirements, inefficiencies, etc

Personally, I feel that lightweight CMS systems that don't force you into the developers paradigm about how a CMS / Site should be implemented are key. You can use these on top of a framework and have your own custom logic and biz rules without being locked into some massive system that has a huge learning curve. Umbraco, Drupal, Django, etc... all these I have used and I've felt they are making their end users develop in a way that they're not used to. This can be a problem. Sure, once you learn the system and read a few books, tutorials and have gone through the trial and error process of implementing the system productivity may increase when compared to building a site from scratch.... but as a full stack developer I already have enough on my plate to learn and I don't want another system to learn if I need to deliver the product asap. MrCMS is a .NET MVC lightweight CMS that you can use w/ an existing site. It adds roles, editing, etc... but it doesn't force you into anything. I can easily add a standard page w/o utilizing it at all. I also like the freedom it provides in the realm of themeing and UI design. I can use Bootstrap, knockout or angular or whatever it is I'm comfortable with and it's not as prohibitive as other full blown CMS systems (i.e. Umbraco or Orchard). Just my two cents.

I worked with drupal5 to drupal7 and in this years I think drupal was a good solution for building websites.

Then I rewrite some private projects with a php framework and I say that is most of the time the way to go.

For example views is a great module but if you code your db queries by your own in the code (with helpers like Active Record Pattern or doctrine or framework query builders) is much faster and clearer.

I think we're witnessing the end of Drupal now. As Drupal 8 comes out, people will realise that for all the effort it will take to learn how to manage Drupal's bastard symfony child they would be much, much happier just using a mature real framework like Django or Rails.

I'm expecting an simpler MVC framework will soon arrive and blow both Drupal and perhaps Wordpress out of the market...

As time goes on Drupal seems ever more desperate. All you ever hear from them is they need to recruit more developers (lots of core devs have left, lots of others are looking at more modern alternatives) and there is no real recognition of the massive issues with Drupal ie it's sluggish, a nightmare to work with (just try getting data out of an render array compared to doing the same with any good framework), the form api and the database api are basically just a thorn in your side, and the logo is just totally uncool.

Look at your comments system below, if i want to customise it, i first have to remove all that rubbish about text formats. That's not what a framework does! You don't spend your time removing parts of a framework, you build on top of a minimal base...

Drupal paid my bills once but it was forced on me hence my distain for it. It is good for some projects, ie cheap cms where hosting price not an issue, but their marketeers would have people believe it should be at the core of NASA space program...

For websites, most definitely. It makes sense as they (CMS) cover probably 100% of what you will ever be asked for in a web site. But I found in my experience that if you are building an application that happens to use the web to communicate with the client then you are better off using a framework - particularly if you will be the person managing the content, categories, business rules, etc. A CMS just wont bend the way you want it to for this and you find yourself building custom PHP functions/code and forcing it into a module for the CMS.

In Drupal, you often create sites for people to manage and you end up managing it!

LOL just saw this now "Drupal's bastard symfony child" how offensive can you get?! I feel sorry for Drupal 8 like its a person. Poor little droplet!

I do agree with your Drupal opinion though (except the offensive bit!)

Frameworks are much better than CMS for coding. For example, I built this website with Yii framework: http://ho96.com . I must say that thanks to this framework I was given enough flexibility to do almost anything I wanted. I'm sure with a CMS I couldn't have done all I wanted. I think that CMS are better for designers and frameworks are better for programmers.

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <cpp>, <java>, <php>. The supported tag styles are: <foo>, [foo].
  • Web page addresses and email addresses turn into links automatically.
  • Lines and paragraphs break automatically.

About the Author

Joaquin Lippincott, CEO

Joaquin is a 20+ year technology veteran helping to lead businesses in the move to the Cloud. He frequently speaks on panels about the future of tech ranging from IoT and Machine Learning to the latest innovation in the entertainment industry.  He has helped to modernize software for industry leaders like Sony, Daimler, Intel, the Golden Globes, Siemens Wind Power, ABC, NBC, DC Comics, Warner Brothers & the Linux Foundation.

As the CEO and Founder of Metal Toad, an AWS Advanced Consulting Partner, his primary job is to "get the right people in the room".  This one responsibility is cross-functional and includes both external business development functions as well as internal delegation and leadership development.

A UCLA alumni, he also serves in the community as a Board Member for the Los Angeles Area Chamber of Commerce, the Beverly Hills Chamber of Commerce, and Stand for Children Oregon - a public education political advocacy group. As an outspoken advocate for entry-level job creation in tech he helped found the non-profit, P4TH, an organization dedicated to increasing the number of entry-level jobs in the tech industry, and is in the process of organizing an Advisory Board for the Bixel Exchange, a Los Angeles non-profit that provides almost 200 tech internships every year.

 

Ready to get started?