A Look at the Concrete5 CMS

28th June 2011 | Tags:

There are so many Con­tent Man­age­ment Sys­tems (CMS’s) out there that due to the sheer vol­ume of choice it’s easy to plump for the best known options, such as Dru­pal, Joomla! and Word­press. How­ever there are times when these “flag­ship” CMS’s might not be the best option. Dru­pal, for exam­ple, can be overly com­plex and bloated for fairly sim­ple web­sites (per­son­ally I’ve often thought of it more as a frame­work any­way), or Word­press might be too spe­cific for a site that’s not strictly a blog. I’ve long wanted a good, easy-​to-​use, stripped-​down but exten­si­ble — alter­na­tive, and one such option I’ve looked at recently is Concrete5. Concrete5 has gone from being a com­mer­cial prod­uct to MIT-​licensed Open Source and makes some pretty bold claims about being easier-​to-​use and bet­ter coded than Dru­pal or Joomla. But does it live up to these lofty ambi­tions? And how does it com­pare to Dru­pal, Joomla and so on?

The User Interface

The first thing that leaps out about Concrete5 is the inline edit­ing (or at least, a modal window-​based approach to inline edit­ing), a fea­ture which the major CMS’s have been slow or resis­tant to adopt but which I’ve often thought would help con­tent edi­tors no end. Too often there’s a dis­con­nect between areas of a page and the admin­is­tra­tive inter­face to those areas (Drupal’s block sys­tem being one such exam­ple), so being able to edit things directly — or near as dammit — pro­vides a real advan­tage from a usabil­ity point-​of-​view. There are some screen­shots of this func­tion­al­ity below, and the Concrete5 team have put together a video show­ing it in action.

Inline editing in Concrete5
Using Concrete5’s inline edit­ing fea­ture, you sim­ply need to click an area of the page whilst in edit mode to directly edit the con­tent or char­ac­ter­is­tics of that area.
Inline editing in Concrete5
In this screen­shot, click­ing an area and select­ing *edit* has brought up a rich text edi­tor as a modal win­dow, allow­ing the con­tent to be edited directly.

Them­ing Concrete5

Them­ing in Concrete5 is nice and sim­ple. The Concrete5 web­site even includes a screen­cast show­ing, it claims, how a design can be con­verted to theme in just eight min­utes. (The real­ity is some­what dif­fer­ent, nat­u­rally, but there’s no rea­son why a sim­ple HTML page can’t con­verted in around that.) There’s also a mini­u­mum amount of code required in the theme files to make it work, which is some­thing I per­son­ally like when a project is divided up between front and back-​end coders (an area, I believe, where Word­press excels). As I men­tioned ear­lier I’ve always found Drupal’s block archi­tec­ture to be among its weak­est fea­tures from a usabil­ity point-​of-​view, so it’s very refresh­ing to be able to add a new region with a cou­ple of lines of code, browse to a page and click the region to begin pop­u­lat­ing it with blocks (every ele­ment of con­tent in Concrete5 is encap­su­lated in a block; in con­trast to Dru­pal, where blocks typ­i­cally con­tain ter­tiary con­tent). Re-​ordering and mov­ing blocks between regions takes a cou­ple of clicks before drag­ging around the page — sim­ple and intuitive.

Design options in Concrete5
Concrete5 allowis a num­ber of dif­fer­ent lay­outs — con­fig­urable in the theme — across a site. Themes are read­ily avail­able on the Mar­ket­place, and can be installed (along with other add-​ons) from the admin area of the web­site itself.

It’s rel­a­tively sim­ple to over­ride the out­put of any block in your theme, in such as way that you aren’t touch­ing the Concrete5 core — it’s just not par­tic­u­larly obvi­ous ini­tially (In fact, I’ll prob­a­bly write a tuto­r­ial on this later).

Dig­ging Into the Concrete5 Codebase

Dig­ging into the code, the first obser­va­tion I made — and the most strik­ing and wel­come — was the extent to which Concrete5 adheres to the O-​O par­a­digm and the MVC archi­tec­ture. The block sys­tem — which, don’t for­get, is at the core of the CMS — utilises MVC, with a con­troller respon­si­ble for add and edit oper­a­tions on con­tent of a given type, ren­dered using a sep­a­rate, the­me­able tem­plate file. Each block (which can effec­tively be the out­put of a whole page) can be neatly encap­su­lated in a pack­age. What’s less clear, how­ever, is how to over­ride aspects of a block such as its markup, with­out recre­at­ing a whole pack­age or edit­ing the view within a con­tributed pack­age (unlike Dru­pal for exam­ple, where a module’s out­put can be over­ri­den by cre­at­ing new tem­plate files in the site’s theme). Com­ment­ing leads a lot to be desired, though that’s hardly exclu­sive to Concrete5, but most files appear to be rel­a­tively short, with func­tion­al­ity divided up neatly and encap­su­lated within classes in a log­i­cal and con­sis­tent man­ner. Cod­ing styles aren’t always con­sis­tent (cap­i­tal­i­sa­tion of SQL state­ments, for exam­ple), but not in a way which is overly sig­nif­i­cant or which makes the code dif­fi­cult to follow.

The File Structure

On the sub­ject of Concrete5’s direc­tory struc­ture, this is neat and tidy with a nice clean sep­a­ra­tion between core and cus­tom exten­sions, themes and so on. The core is incor­po­rated under a sin­gle sub­di­rec­tory which might seem sim­ple and common-​sense, but is a more log­i­cal arrange­ment — and eas­ier when updat­ing — than Drupal’s, for exam­ple. Concrete5’s neat plu­gin sys­tem means that any add-​on — be it an add-​on or a theme — can be installed as a pack­age by plac­ing it in that folder, and the sys­tem is smart enough to work out what’s being installed.

Third Party Libraries — Zend Frame­work, JQuery, ADOdb

Concrete5 uses a num­ber of trusted (by me, at least!) third-​party mod­ules and libraries, includ­ing Zend Frame­work (one that I favour in par­tic­u­lar), ADOdb and of course JQuery. Expe­ri­ence with Zend has helped my learn­ing curve already, and the use of JQuery over some­thing like Dojo is — in my view, at least — a bonus. Third-​party libraries are neatly stored away in clearly marked direc­to­ries and it’ quickly clear how new mod­ules would be incor­po­rated when build­ing new extensions.

Extend­ing Concrete5

One crit­i­cism I noticed when can­vass­ing opin­ions on Concrete5 — which mir­rors my ini­tial impres­sion, I have to admit — is what the company’s busi­ness model appears to be inso­much as the core prod­uct is free and open source, but a sig­nif­i­cant pro­por­tion of the add-​ons avail­able through their Mar­ket­place come at a price. Whilst the com­pany clearly make no attempt to hide this fact, it’s some­thing that might not be imme­di­ately obvi­ous when assess­ing Concrete5 as a CMS. An advan­tage of Dru­pal here is that com­mer­cial mod­ules are a rar­ity, and the com­mu­nity of devel­op­ers much larger. On the flip-​side, the “mar­ket­place” becomes exactly that for devel­op­ers to ben­e­fit finan­cially from their own work. It also implies — though I can­not yet con­firm or refute this assump­tion — that add-​ons come with a cer­tain guar­an­tee of qual­ity, as they pre­sum­ably have to accepted into the Mar­ket­place by the com­pany. (Note how­ever that as an add-​on is sim­ply a direc­tory struc­ture, there is no require­ment that an add-​on be deliv­ered through that mar­ket­place — the App Store this ain’t.)

Some Pros and Cons of Concrete5

I’ve both cov­ered and found a num­ber of pros and cons while dig­ging around with Concrete5, which I’ll sum­marise below.

Pros:

  • Slick and easy-​to-​use interface
  • Easy to install
  • Fully O-​O
  • Judi­cious use of third-​party libraries
  • Easy to theme
  • Excel­lent documentation
  • Per­forms well
  • Use­ful selec­tion of helpers
  • Not too bloated

Cons:

  • Much smaller com­mu­nity than the “big two” (Dru­pal and Joomla)
  • Many add-​ons come at an addi­tional cost
  • Cer­tain things you might expect “out of the box” have to be sourced or devel­oped man­u­ally (e.g. a con­tact form)
  • The com­ment­ing in the source isn’t great
  • The per­mis­sions model lacks the gran­u­lar­ity of, say, Drupal&rsquos — and the “advanced per­mis­sions” must be man­u­ally enabled
  • The doc­u­men­ta­tion seems weighted towards CMS users; some them­ing and devel­op­ment areas not very well covered

Concrete5 vs Dru­pal vs Joomla, and Conclusions

If this is the ques­tion you’re look­ing for an answer to, I’m going to dis­ap­point you because I don’t think it’s fair to com­pare them (though of course it’s inevitable that peo­ple will try to). As I’ve already stated, Dru­pal is — in my view at least — a devel­op­ment plat­form as much, if not more, as a CMS. Dru­pal might, for exam­ple, be used to cre­ate an intranet (Open Atrium is one such endeav­our) — Concrete5 is unlikely to be suited to such a task. But as a CMS, Concrete5 is an excel­lent option. One of the things I liked about Concrete5 is that’s nice to be able to think about a site in terms of what the user sees and work back­wards, rather than get bogged down with con­tent types and schemas and worry about pre­sen­ta­tion later. The click-​to-​edit block mech­a­nism, the inline edit­ing and the empha­sis on fill­ing regions of a page inter­ac­tively feels more intu­itive than, say, build­ing con­tent types and then tem­plat­ing in Dru­pal. This approach might ren­der Conrete5 less suit­able for a com­plex web appli­ca­tion, but makes it a much more sat­is­fy­ing choice for a sim­ple web­site — and it’s one I’ll be tak­ing for some web­sites in the future.

Comments

    Thanks so much for taking the time to review concrete5! It’s great to see more people taking a serious look at it.

    Just to provide some clarification on some of the questions/concerns you raise:
    1) Yes the marketplace has a vetting process run by our community. The add-on has to install, it can’t collide with others, it has to do what it says, and it has to be kept working -regardless of if its free or not. If it costs something, the developer MUST provide support in a timely fashion or we refund transactions and pull the add-on. The idea here is a lot of work goes into making these systems fully featured and if we can spread some of that work out amungst the community, we should spread some of the compensation too.

    Yes you can always install a package by hand, so we’re not like Apple in the sense that your device is locked up. We are however providing one-click installs if you connect your site to the community, and we expect a non-techie to be able to shop, install, and use add-ons and themes from our marketplace just fine.

    2) You should check out Custom Templates for block. That’s basically a customizeable view layer and it sounds like might be what you’re looking for.

    3) You should play more with advanced permissions. While we are going to update the roles they allow in the next major version, they are quite granular when it comes down to locking specific pages, page types, areas of pages, or even blocks on pages. The reason you have to flip a value in a config file to turn them on is they are rather powerful and somewhat confusing to a casual user.

    In general you’ll find we take an "onion skin" approach to features in concrete5. We try to make things look simple at a glance, but there’s a fair amount of power under the hood if you dig.

    4) A contact form can be easily be built with the Form block in the core. It’s not awesome, but its more than adequate and requires no development skills to use.

    5) You can actually build rather robust applications with concrete5 if you care to. There’s a "single page" model you should check out. There’s a powerful members profile framework you can extend. We’ve built sites with millions of pages in them, and we’ve seen companies build extranets that replace sharepoint and power the whole company. Generally this type of work flys under the radar, but here’s a quickie example:
    http://www.concrete5.org/about/showcase/enterprise/genisys-genco-intranet/

    The fact that a PM can start with something that actually works out of the box this weekend, and get more buyin as they go, really powers concrete5 to be an effective solution for these more enterprisey problems.

    Beyond that, you got it right. We’re not as good about commenting the core as we should be, but now that we’ve left subversion and are using GIT that’s getting slowly better.

    Thanks again for the detailed review.

    -Franz Maruna
    CEO, Concrete CMS inc.

    2nd July 2011
    frz
    frz

    Franz,

    Thanks for the detailed response. The more I look at the product the more I see the "onion skin" approach in action, so I’m constantly revising my view on certain aspects. The example of the intranet you supplied is particularly interesting - I’m certainly going to build a few simple websites with it, before - all being well - looking at scaling up. I’ll be following the product with interest!

    5th July 2011
    Lukas White
    Lukas White

    Thanks for your thoughtful review, which "digs beneath the surface" more than usual and, I think, reflects pretty accurately how a typical web developer would respond to the package.

    I’ve adopted it as our company standard CMS for the typical business website – where very specialized requirements don’t necessitate specific add-ons. End users find it a joy to interact with. And, the "onion" approach to the environment provides a gradually exposed richness and flexibility – which is available on an "as-needed" basis. But, working at the top level – which maps pretty closely actual web development – is fast and fluid.

    You note the ease of customizing the environment. For a developer, this is crucial, and far superior to a number of other CMSes, where these issues seem an afterthought.

    Thanks again for your review.

    30th September 2011
    Jay van Santen
    Jay van Santen

    I can only back up what Franz says. For the past few years I had been using Drupal and Wordpress and occasionally Joomla. I favoured Wordpress. However in April this year I was coerced into building a site in Conrete5 and absolutely love it. It is so easy to do compared to the other three mentioned above and you get a really professional product to give to clients. It does have some drawbacks, but these are only minor and I have since built about 15 sites in Concrete5 and no complaints to date. The fact you can take an home page (HTML/CSS) and flip it into C5 in ten miutes and voila you have a CMS, then a further ten mintes showing a client how to edit it, really says it all.

    10th November 2011
    Edwin Cooke
    Edwin Cooke

    Currently a Drupal developer and exploring other options. I love MVC and I miss it. I’m interested to see what module building is like in C5 compared to Drupal or WP plugins. Thanks for the in-depth review.

    24th February 2012
    Joel Milne
    Joel Milne

    You can’t be serious, Frank. A whole year has past since this review and the contact form has not been fixed yet. Seriously? You call that form THING a contact form? It is so hard to customize.

    Concrete 5 is a disgrace, though not as disgraceful as $#@# wordpress. For now I will be doing things BY HAND.

    21st July 2012
    Darryl
    Darryl

    Drupal is not bloated. It’s a framework to work with. There’s thousands of modules you can add on to make it bloated if you wish, but core drupal is just that. The very basics of a cms needed. Inline editing is available in drupal 7 through either http://drupal.org/project/aloha or http://drupal.org/project/editablefields at present. Drupal 8 plans to integrate this set of functionality into core I believe.

    10th August 2012
    Phil
    Phil

    My first introduction to the CMS world was Joomla back in 2004. I found it cumbersome and hardly intuitive. Recently looking at it again, sure it had one helluva lot of components and add-ons like word press. Some cool features but for the most part bloated. Discovered Concrete5 a couple years ago. For a web designer who’s non-programmer it’s been a dream. Clients can actually edit their own site without anxiety of going into some cluttered admin area. The block system is great and I don’t mind paying a few bucks here and there to get the necessary tools to make a website work. We’re all here to make money. Cheers

    19th August 2012
    Brandon
    Brandon

    I’ve seen a few people talking about the Contact Form and thought I would add my 2 cents. The block for the Contact Form does indeed suck. (that is if you are looking to build anything but a simple contact form). I had a project I inherited to create a Registration Form. No way could I use C5's form as a starting point. Nothing decent in the MarketPlace either.

    What I did was create my own html form, with exact placement (I used tables) and then saved it as RegistrationForm.php. I then tossed it into the ExternalForm folder in my project.

    Then you can add a external form block and point to your new form you just created. Ajax, JavaScript and PHP can be used in the controller file for validation, writing to a database or Credit Card authorizations.

    It took me a while but the form is nicely themed, input fields are able to flow left to right as you continue your way to the bottom for Submit. It turned out very nice.

    Happy Coding :)

    6th September 2012
    James
    James

    I am the manager of the IT department of a multinational company. The company’s website is a good css based design and effective information architecture. There are approximately 10,000 HTML pages. In addition to the main website there are small website developed in house in PHP and MySQL by the IT support staff and several other websites and intranets developed in ASP by the marketing and recruitment departments. These all have different design to the main website. Pls I need suggestions as to which web content management sytem would fit the company.

    5th November 2012
    Anonymous
    Anonymous

    which web content management system would fit the company and why?

    5th November 2012
    Anonymous
    Anonymous

    Informative Blog

    Thanks for Sharing !!

    17th January 2013
    AnonymousWeb Development Company Faridabad
    AnonymousWeb Development Company Faridabad

Links and images are allowed, but please note that rel="nofollow" will be automactically appended to any links.