Content Management has come of age and systems need to move forward. Tools such as WordPress, Drupal and eZ Publish have evolved to what they are rather organically. Now they face the challenge of renewing themselves.
2. Agenda and Focus
• History, briefly on today and a practical example of one way forward
• Focus on, but not limited to, Open Source PHP Content Management
• I'll just pretend I know it all and am always right
• In a developer mindset, no business agenda
3. Content management in the Nordics
• EpiServer, Midgard, SiteCore, eZ
Publish, eScenic, Polopoly, Umbraco...
• The Nordics are a great place to do content management, but
momentum seems to be shifting to central Europe
• There are not enough Content Management Hipsters around
• A lot of CMS enthusiasts (WordPressers, Drupalistas, Joomlagsters,
etc.)
• Finns like to build websites, but not tools to build websites?
4. A reference (nevermind the Finnish)
• ...toimittama ratkaisu on globaalisti käytettävä Internetin julkaisu- ja
sisällönhallintajärjestelmä. Se mahdollistaa sekä konsernin
maailmanlaajuisesti levitettävän aineiston että maakohtaisen,
paikallisilla kielillä valmistettavan sisällön hallinnan ja julkaisun
keskitetysti yhden järjestelmän kautta. Sisällönhallintajärjestelmän
avulla Kone voi lisäksi rakentaa uusia palvelukokonaisuuksia täysin
itsenäisesti.
7. Content Management Yesterday
• Pay a million dollars for some HTML forms, a database and some
scripts to tie those together.
• Noobs started creating similar software for themselves with LAMP
• Better technology does not always "win", hip and easy does.
• Throwing money at it also worked.
8. Content Management Today
• Everything and nothing has changed
• The forms, DB and scripts free, but they're still just that in better(?)
tech
• The noobs (and PHP) grew up, "their" software now powers the
internet
• You can really setup a great website without coding skillz
• Known brands dominate, even though anyone can create cola
9. Content Management Today
• Content management is a commodity nowadays
• Expectations high: "Make it work like Google, Facebook and Apple
do"
• Popular tools were not built for today, they have evolved for today
• 10+ year old feature rich software translates to a lot of legacy
• Wordpress and Drupal onboard: REST API is a sure bet in bullshit
bingo
• Status quo likely to hold a few years, nothing groundbreaking in sight?
10. Content Management Tomorrow?
• The ferry trip ticket is free, but you're expected to spend at the
taxfree on hosting, support, marketing automation, spam blocking...
• Some thoughts on sustainability:
• Scaling Open Source communities
• Five for the Future
11. Famous quotes
• "WordPress is too big to fail"
• "Nobody ever got fired for buying Drupal"
• "If I had asked people what they wanted, they would have said a
better Joomla!"
• "If all you have is eZ Publish, everything looks like content to publish”
12. Why change and is it even possible?
• "The Unix philosophy emphasizes building short, simple, clear,
modular, and extensible code that can be easily maintained and
repurposed by developers other than its creators."
• Our current tools are like Windows. Victims of their own success.
• Why do we reinvent the wheel? Create abstractions for content, etc.
• Operating systems being cloudified, but we still scaling with "servers"
not services
13. Why change and is it even possible?
• The previously impossible does happen: Nokia phones sold to
Microsoft as they fight irrelevance
• There needs to be a real payoff for change, not just tech tinkering
• These systems enforce you to work on their terms and you can't often
genuinely swap pieces like in a framework
• Decoupling been trumpeted for years, but most CMSs remain
monoliths
15. Examples of change in LAMP CMSs
• WordPress: Nothing fundamental yet, gradual improvements
• Large scale change will be monumental (not core, but the plugins)
• Giant user and developer base to please
• "We are a framework!"
• Typo3: Write your own PHP web framework
• No, just no.
16. Examples of change in LAMP CMSs
• Drupal 8: Introducing more common components
• Major technical improvements to Drupal with Symfony Components
• Drupalisms, but with new stuff... a bit of a bastard.
• Some developer upheaval: a credible Drupal 7 fork
• Apostrophe: Rebuilding from scratch (Symfony1 -> Express.js)
• Lots of work and two parallel versions
• An interesting project to follow!
18. Some truths about eZ Publish
• eZ Publish is not easy!
• eZ Publish will not take over the world!
• eZ Publish will not be as easy to hack as WordPress!
• eZ Publish does not "have a module for that" like Drupal!
• eZ Publish can still be a good choice for some use cases!
19. Solid basic concepts since, like... forever
• One application with one or more content repositories (with a tree)
• Perform queries on content (object) or location (node)
• Sites are configured views to a repository:
• Site matching with domain, path, combo
• Site root location
• Languages
• Designs…
20. Starting point
• Started in 1999, ticks "all the boxes" in the feature lists ('memba
these?)
• Custom MVC framework, DB, based on 2002 PHP4 OOP (static
methods)
• Core product has rich text editing, locations, versioning,
multilanguage, Solr search engine, auditing, web store, full XML
content, REST API, etc...
• Limited popularity due to complexity and learning curve
• It works, but clearly the end is nigh
21. Refactoring eZ Publish
• Move to full stack Symfony2 with 100% backwards compatibility
• No DB schema change for legacy storage engine
• Storage engines are pluggable, currently legacy and legacy_solr
(Elastic Search being worked on)
• Refactoring legacy functionality gradually to services
• Symfony3 in the future is an evolution, not a revolution
22. Refactoring eZ Publish
• Leveraging Symfony2 for authentication, routing, Doctrine
DBAL...Uses Symfony2 bundles
• (Flysystem, Stash, Imagine, HTTPCache...)
• Existing framework documentation applies
• It took around 2 years for a version to be honestly great
• New admin interface and other changes in 2015
• Just one Open Source eZ Platform
23. Relevant versions*
• 4.7: The last legacy version
• 5.4: The last version with Symfony2 and legacy support
• 6.x: Symfony2 stack only
• API: eZ API and Domain objects only
* Community versions use YYYY.MM versioning
24. Working with 2014.11 - the great
• Woot, it is HMVC through and through. Symfony2 devs feel at home!
• Upgrade from a 2008 eZ Publish worked
• You can gradually refactor your legacy site(s):
• Use a mixture of legacy and new template code
• Access legacy kernel anywhere (in a closure)
• Add new sites without legacy functionality calls
• Caching is Symfony awesome
• PHPStorm autocompletion for API kicks ass
25. Working with 2014.11 - the bad
• You'll need to know a lot to get started and it's work in progress
• Documentation is not really great, no established good practices
• Would need more "how-to" articles to gain popularity
• Symfony template functionality still not teh bestest (theme
inheritance)
• Rapid development (coding can't touch Drupal clicking, WP
hackability)
• Performance? I guess well built Symfony2 scales enough for most
needs
26. Working with 2014.11 - the hmmm…
• So it's nice for developers, but no beef for the customers yet
• You can do things faster in XYZ if you know it
• Still limited adoption
• No set public site architecture (think Drupal behaviours, etc.)
• Symfonysms apply
27. Divide and conquer
• Use best from elsewhere, don't use the CMF/CMS for everything
• Full REST API and a client lib for single page apps (Angular, Ember...)
• Leverage Elcodi or Sylius components for eCommerce
• Push emails to RabbitMQ for sending, or other batch jobs?
• No need to include the whole stack to use just the API in your apps
28. Some code and stuff
• ezstart, a demo setup
• EzXmlSitemapBundle
• eZ Publish Docker
• Using legacy code
• Signals reference
• eZ Publish Public API
• eZ Publish REST API
• HTTP Caching
29. Cool links of the day
• Sulu CMF
• Keystone.js
• Bolt CMS
• October CMS
• PHPCR
• ORO CRM
• Developing with prismic.io
• Contentful for developers
• Symfony and CMS: Comparing Bolt, Drupal 8 and eZ Platform