Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

concrete5 from developer perspective

This presentation was part of the concrete5 Café held in the Exove premises in Helsinki, Finland (28.10.2014).

Antti Hukkanen from Mainio Tech gave a presentation of concrete5 covering many of the concrete5's developer concepts and comparing the system briefly to Drupal and WordPress. The future of concrete5 (5.7) was briefly covered at the end of the presentation.

Thank you for everyone who took part in the event!

Mainio Tech:


concrete5 from developer perspective

  1. 1. Antti Hukkanen / CEO, Mainio Tech Oy concrete5 from developer perspective concrete5 café - 28.10.2014
  2. 2. Topics 1. Mainio Tech (About us) 2. concrete5 in General (for non-concrete5’ ers) 3. Comparison (vs. Drupal, vs. WordPress) 4. concrete5.7 (The future of concrete5)
  3. 3. Mainio Tech • Founded 2011 • Small office of a couple of developers in Lauttasaari, Helsinki • Focus on technology • All website projects with concrete5 • Personally actively using concrete5 since 2010 (v5.4.0.5)
  4. 4. concrete5 in General
  5. 5. Page Types / Page Templates (5.7) • Every site consists of different pages with different structure • Page types/templates generalize this into pre-made ”templates” that give the structure to a page
  6. 6. Areas & Blocks • Each page type in concrete5 consists of editable areas • Blocks are like ”lego blocks” that can be placed into any area of any page
  7. 7. Blocks • Blocks map the real life concepts into reusable ”content builder” elements that can be placed in areas • Allows the developer to create any kind of editing UI for specific type of content
  8. 8. Attributes • Attributes generalize the ”fields” concept for any type of object – Internal objects that take advantage of attributes: Page, File and User • Allows the on-the-fly creation of new attributes for any object that utilizes this architecture. Can be defined through the UI. – E.g. ”we need our users to tell us their names” or ”we need the ability to tag all our files” • Attributes are typed into specific types, e.g. text, boolean, date/time, select, file, etc. – Developers can create own attribute types that can be attached into any object that use the architecture
  9. 9. Single Pages • Single purpose pages with view layer and controller – E.g. registration, login, dashboard pages, etc. • ”Using concrete5 as a framework” • Mainly used to build dashboard functionality • Not great for multilingual sites – Page types are better for ML sites, they also provide the same kind of architecture (view-controller)
  10. 10. Packages • Everything can be ”packaged” in concrete5 – Blocks – Page Types – Page Templates (5.7) – Single Pages – Themes • Packages are used to make general purpose functionality available for multiple sites (compare to Drupal modules, WordPress plugins)
  11. 11. Some Technical Points • MVC – Blocks (view-controller) – Page Types (view-controller) – Single Pages (view-controller) • Overrides architecture allows overriding any part/file of the core • Database abstraction layer (ADODB in 5.6, Doctrine 2 in 5.7->)
  12. 12. + Lots more… • Functionality that helps in building online communities – Originally lots of the framework behind concrete5 was developed for this purpose • Stacks for reusable content • Flexible permissions structure • Workflows (enterprise use) • Jobs architecture for (recurring) automated tasks • Caching layer • + Wide range of add-ons – Not as many as with Drupal or WordPress (which is not necessarily a bad thing) – Many add-ons are paid but very reasonably priced ($15-100) and the commercial license allows full code modification for the project where they are used, one license per project
  13. 13. Comparison
  14. 14. concrete5 vs WordPress • WordPress = ”Printing Press” • concrete5 = ”Word Processor” • Solving the problem from different perspectives – WP: CMS bolted on top of blogging platform – C5: Built from bottom up to be a bridge between developers and site owners • concrete5 is more flexible in terms of the content structure of a page and also in terms of being a developer framework
  15. 15. Concepts: concrete5 vs WordPress concrete5 WordPress Attributes N/A Blocks Widgets (although they serve a different purpose) Packages Plugins (and Themes) Page Types Templates Stacks Sidebars Themes Themes
  16. 16. concrete5 vs Drupal • Drupal = ”Developer toolbox with CMS functionality” • concrete5 = ”User friendly CMS with developer framework” • Setup process is much more ”lean” and you can get a site up and running much quicker in concrete – Drupal: ”For a basic site, you need module A, B, C, D and E, and also need to know how they all work together” – concrete5: Install and start building • Easier to teach – concrete5 works truly through an in-context editing interface. In Drupal, the user experience is much more confusing to a newbie (as of my own experience, prior to drupal8). Probably the overall experience is still better in c5 when comparing concrete5.7 vs drupal8, although drupal8 introduces inline editing. • MVC – Has much of do with preferences but many developers prefer MVC – It usually keeps the codebase much cleaner, more understandable and more easily approachable (my personal opinion)
  17. 17. Concepts: concrete5 vs Drupal concrete5 Drupal Attributes Fields, Taxonomies Blocks Blocks Packages Modules Page Types Content Types Stacks Panels Themes Themes
  18. 18. Where to use concrete5? • Short answer: – Content and design driven web projects – Online communities – Or basically anywhere, there is not a reason why concrete5 would not fit some problem scope but we ourselves would rather tailor complex web application on top of a framework (more flexibility) • Longer answer: – concrete5 shines in design-centric sites that require lots of different types of content – When making pixel perfect sites that are easy to edit for the end user – When you want to deliver solutions that the end user is able to use
  19. 19. concrete5.7
  20. 20. New functionality in 5.7 • Full in-context editing • New image editor • Conversations (for building forums, commenting, etc.) • Groups can now be hierarchical
  21. 21. Different in concrete5.7 • Page Types and Page Templates • ”Tools” no longer exist – Use custom routes and custom controllers insead • Directory structure • General structuring of the code – Most backend stuff now lie in the /src directory, except for the controllers
  22. 22. Developer updates in concrete5.7 • New era of PHP finally reaches concrete5 – Composer – Namespacing – Code styling: PSR-2 & PSR-4 + generally better code guidelines (e.g. for writing JS and CSS) – Autoloading (PSR-0) • Symphony framework components replace some of the old homebrew components – Routing layer – Events layer – Request, Session & Cookie libraries (Symphony HttpFoundation) • Doctrine ORM for DB abstraction – Not currently very widely used, even in the core
  23. 23. Other new developer stuff in 5.7 • Built-in assets system (CSS/JS minification and combining, dependecy management) • Authentication layer for building 3rd party authentications • New taxonomy: Topics – E.g. categorization of Blog Entries or Projects (examples in the default 5.7 installation)
  24. 24. ? Antti Hukkanen