What's so great about new concrete5 anyway?
Concrete CMS first started as commercial software in 2003.
For 5 years we never had to worry about backwards compatibility because our projects were mostly bespoke online communities. The CMS was maturing as a best practices toolkit.
In 2008 we went open source and for dozens and dozens of releases across six major versions we maintained a “single button push” upgrade path (like WordPress.) In 2013 we started working on version 7, our first version you couldn’t just upgrade to (like Drupal.) There are free tools to export content from a version 6 site and into a version 7 site, but it is totally a rebuild and data migration project. We know that’s real work, and we didn’t mean to cause you a hassle. To be frank - quite a bit changed with web development over the last decade, and concrete5 needed to grow up to keep up.
We should have done a better job with version numbering, and we don’t intend to do another non-backwards compatible release again in the foreseeable future. Sometimes it is hard to do the right thing. These are some of the reasons why we know concrete5 today is worth it:
Whole new UX
Legacy version 6 used a lot of overlay windows. Today concrete5 uses more side panels and does more editing on the page. Settings is more quickly accessible from a gear side panel. You can get to your site tree and make new pages from another panel. The Dashboard is there too. Everything does a better job of sliding in from the side and getting out of the way quickly when you don’t need it.
The Dashboard now uses the full real-estate instead of the fake window look of 5.6, there’s also a saner navigation method in the sidebar to get around and an ongoing push for overall consistency that is clearly worth while.
The good old content block now works on the page instead of in the overlay window it used to launch in. That coupled with smaller strokes around block areas and a labeling philosophy of “show it when you need it” gives modern concrete5 a modern sleeker experience. We’ve found that it can feel more “touchy” to a seasoned version 6 site manager, but people quickly learn how it works and enjoy the overall process improvements.
Flexible Pages & page types
In the past if you used page types to build data types (like a calendar page for example) your layout for that page was married to the same page type. This worked fine in simple situations. As sites became more complex and you might want an event that used different form factors, you’d end up with dozens and dozens of page types and this approach would fall flat.
With concrete5 today you have separate templates and page types. Every page type can use one or more of the templates. You can even map default blocks to different areas on different templates.
Mobile Ready
When we thought of mobile in the early days of smart phones, there was no “responsive” design. We had a mobile theme switcher built in and that was great. Today mobile is central to any client we work with, and that shows in concrete5 now. There’s a mobile browser preview built into the Settings panel on every page. Themes are built to be aware of their responsive breakpoints. Layouts automatically collapse gracefully. The ability to for a designer to dictate styles that control what content does in particular situations is quite powerful. Images get automatically resized into a dozen different form factors for different browser sizes. The editing toolbar and dashboard itself behave better on smaller browsers too.
It’s not just a WCM, is a CMS.
We had always focused on building a great page based editing experience with concrete5. Over time more of the projects we saw needed the benefits of strongly typed content in a central repository. Out of the desire to have a graceful editing experience that anyone can use, but also be able to power data-centric websites, “Express” has been born.
Express lets you create objects by grouping custom attributes together. You can create relationships between these objects. Express will let you quickly scaffold out add/edit interfaces so you can build websites around relational databases. Imagine being able to make your own database driven application as one might locally with Microsoft Access, but also have it instantly manageable by a community online because you built it in concrete5 with Express.
This is pretty cool stuff, admittedly still in its early stages, but actively being used and added to by our team in github all the time.
Folders
Files have folders now. So do stacks. You can drag and drop files around to move them into folders.
Add page UX
You can configure each page type’s new pages to launch to either Composer or in-context editing mode. This means for something like a “Job Post” you can have form driven add/edit user experience, while on “General Page” you can just give an editor WYSIWYG layout controls in edit mode.
When you want to start a new page, you no longer have to navigate to where it’ll finally live in the site tree first. (The old “add a sub-page” thing…) This was always difficult to explain in version 6 and the auto-saving drafts model in modern concrete5 is much more intuitive. Expect more UX around this and workflow in coming releases.
Layouts
Totally rethought from the bottom up. They are responsive aware and can be saved, skinned and re-used to do impressive unique elements in an atomic design fashion, all using fewer pre-built page types.
Users/Groups
The whole users dashboard section has had a serious cleanup. Groups can now be organized into a tree and being in a child group inherently puts you in the parent group as well.
Namespacing, ORM and Standards
We used to be dependent on ADOdb, an outdated SQL abstraction layer. We’ve since rebuilt everything to ORM based Doctrine. We’ve also updated all our PHP to be namespaced. While that does increase the initial learning curve for folks new to programming, this more strictly object oriented approach is clearly the future of PHP and we want to be part of it.
Through the hard work of Korvin Szanto, we’ve actually become PHP Framework Interoperability Group members adding our voice to the direction of PHP.
Symfony
We now use the popular framework Symfony for a number of systems including Routing/MVC, Sessions, Cookies, Event Dispatching and Class Loading.
Topics
A new core attribute gives you the ability to make as many tree based taxonomies as you want. Now it’s easy to organize anything into categories.
Sitewide Attributes
You can now make custom attributes that are available across the whole site. There’s also more infrastructure for managing multiple websites from the same install being cooked into the core every day.
Marketplace
None of the add-ons and themes that work for legacy version 6 will work for concrete5 today without some re-engineering. Coding standards are stricter and a lot more work has gone into the popular themes for concrete5 today than used to back in 2008 when image sliders were still kinda new. You can expect the typical theme to be responsive with graceful breakpoints, custom navigations, and their own image slider/gallery treatments in the modern concrete5 marketplace.
Page Rendering Optimization
Asset system allows the core team and third party to developers to define and group JavaScript and CSS assets together, and require them with a single simple line of code.
Block Type Update
A slew of new block types built into the core including; Conversations, FAQ, Feature, Horizontal Rule, Image Slider, Page Attribute Display (handy one!), Page Title, Share This Page, Social Links, Testimonial, Topics List.
We overhauled the video player to be HTML5 video compliant. We dumped TinyMCE, tried out Redactor for a while, and now are using CKEditor quite nicely. Not only that, but all blocks have had their markup reevaluated so they’re more consistently extendable with custom templates.
Internationalization is Cooked In
We took a bunch of features that were only part of the enterprise add-on and made them now part of the core. The only thing the enterprise add-on really gets you at this point is XML import/export. All the UX for translating strings and pages in the CAT GUI is now built into the core.
CSS Customization
The style settings for your theme have been configurable in concrete5 for a long time, but the interface was always pretty brutal at best. Now this has been rethought to work in a panel at the page level, have preset defaults, a XML based configuration, and can be applied at a page specific or site wide level.
Brand new Help system
We’ve added a customizable welcome first time users page. We’ve built in a floating tab contextual help slide out. We’ve even integrated a walkthrough guide system so you can do those little game tutorial tooltips to explain your extensions. You can customize the help experience and content pretty dramatically now.
Image Editing
We were frustrated when Picnik (the image editor service we used in v6) was sold to google and then mothballed, so we built our own. There is now a full on JS based image editor that lets you do cropping, rotation and sizing. We even made a filters setup so you can make your new pictures look old.
Code Cleanup
Almost every bit of JavaScript used in concrete5 has been rewritten. We’ve also eliminated a lot of old crufty stuff that had to go; table based layouts, inconvenient classes, anything we thought wasn’t our best work was on the chopping block. The result is a code base that adheres to modern PHP standards and is a breath of fresh air to developers.
Look out at that Sunset...
Legacy concrete5 (v6-) has been getting security updates and nothing more for about 2 years now. When we first announced version 7 would be non-backwards compatible, we promised we’d give everyone at least 12 months notice before we stopped offering any support on version 6 - and we haven’t yet made that announcement… yet.
Before we’d announce a end of life date for the concrete5 legacy security updates, we’d announce a stop date for marketplace sales of version 6 add-ons and themes here at concrete5.org. You should expect that to happen before too long and it’ll be a good indicator that we’re really closing the door on concrete5 legacy.
Hopefully after reading this list you’ll understand that if you’re building something new, you’d be wise to build it on modern concrete5.
If you’ve got something still on legacy v6-, you should be thinking of a rebuild and migration strategy now.
[Update: August 24, 2018] Sunset has arrived
The end of life date was announced for legacy concrete5 today. Please see the announcement here. There will be no support for legacy concrete5 (5.6 and below) after August 24, 2019.