On Content Management,
Technology and Refactoring
Jani Tarvainen, @velmu, 2014/12/19
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
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?
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.
Y u no say it's responsive?
We had WAP for
that in 2002.
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.
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
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?
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
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”
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
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
Bergie's decoupling slide
Create - Decoupled CMS interface from Henri Bergius
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.
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!
Refactoring
eZ Publish
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!
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…
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
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
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
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
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
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
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
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
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
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
Thanks

Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish

  • 1.
    On Content Management, Technologyand Refactoring Jani Tarvainen, @velmu, 2014/12/19
  • 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 inthe 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 (nevermindthe 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.
  • 5.
    Y u nosay it's responsive?
  • 6.
    We had WAPfor that in 2002.
  • 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 • "WordPressis 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 andis 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 andis 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
  • 14.
    Bergie's decoupling slide Create- Decoupled CMS interface from Henri Bergius
  • 15.
    Examples of changein 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 changein 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!
  • 17.
  • 18.
    Some truths abouteZ 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 conceptssince, 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 • Startedin 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 andstuff • 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 ofthe 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
  • 30.