(Don’t Fear) the Features Now with more cowbell. AND DRUPAL 8!! Aimee Degnan / aimee@hook42.com answers@hook42.com
Me Aimee Degnan, CEO 1996 – Enterprise Web Tech & CMS 2006 – PMP, Stanford Advanced PM 2008 – Drupal 2010 – Agile: Scrum Master, Product Owner aimee@hook42.com @aimeeraed www.hook42.com @hook42inc answers@hook42.com answers@hook42.com
Hook 42 Who are we? A boutique software development firm. Cater to both luxury clients and humanitarian efforts. Specialize in complex projects. Contribute to the community. Focus areas: site rescue, migration / upgrades, multilingual, SEO, responsive design, digital strategy, business process improvements answers@hook42.com answers@hook42.com
Remember when … Drupal has a nice feature, you can create a feature using Features. answers@hook42.com answers@hook42.com
Are you scared yet? answers@hook42.com
Remember when … Drupal has a nice [development and deployment] feature - you can create a feature [on your website] [using the] Features [module]. answers@hook42.com 6 answers@hook42.com
What is the Features module? It exports Drupal configurations in the database to code in the structure of a module. answers@hook42.com answers@hook42.com
Intended Usage of Features Bundle a reusable website feature for reuse on other sites. Site1.com/blog Site2.com/blog Site3.com/blog For example, a custom blog feature = content type + views + block + permissions Feature: h42_awesome_blog answers@hook42.com answers@hook42.com
Adapted Usage of D7 Features Bundle database configurations to code for deployment in a multi-stage publication process for a single web site. example.com Dev à Test à Prod answers@hook42.com answers@hook42.com
D7 Features has a bad reputation Too much work Hard to use Messy Painful Evil Ugh answers@hook42.com answers@hook42.com
Poorly made Features hurts everyone Missing variables Circular & multiple dependencies Missing settings Non-exportable?! Un-tested?!? answers@hook42.com answers@hook42.com
Goal: Fix Configuration Management in D8 core The next-gen cowbell has arrived. answers@hook42.com answers@hook42.com
Isn’t it cute? Less menacing? answers@hook42.com answers@hook42.com
But wait … Is there a D8 version of Features? Yes What does it do? Exports configuration as module code. Do I need it? Depends on your use case. Does Configuration Management replace the use of Features? For configuration exports. Yes. Absolutely. Are there usage considerations with Configuration Management? Yes. Absolutely. answers@hook42.com answers@hook42.com
Improvements Drupal 8 Features Management Interface (single roll-up page) Clearer terminology aligned to core revert->import update->export generate -> write overridden -> changed Namespace management Can bundle Features together Bundle prefix management for module export Automatic packaging / architecting features Automatic namespace management Can configure what is “automatic” answers@hook42.com answers@hook42.com
FEATURES VS. CONFIG MANAGEMENT FOCUS: KNOW WHAT EACH SYSTEM IS REALLY GOOD FOR answers@hook42.com answers@hook42.com
Picking & Choosing Changes Features Configuration Management Nice interface Manual, needs dev skill. Easy to see changes All or none model. Creates modules Core UI is overwhelming. Modules generate an See Config partial export “active config” footprint in module for UI. the Config Management system answers@hook42.com answers@hook42.com
Sharing Features Configuration Management Nice interface. Manual creation of module from YAML exports. Namespace management. Needs more dev skill. Module packaged for you. It can be done. answers@hook42.com answers@hook42.com
Confidence in Exports Features Configuration Management D7 – low to medium. Core config management is great! D8 – much better. Contrib is better off the start. Edge cases and less Edge cases and less supported modules iffy. supported modules better than D7, but still may have issues. answers@hook42.com answers@hook42.com
Confidence in Imports Features Configuration Management D7 – based on Core config management architecture. is great! D8 – much better. Contrib is better off the Zombie fields, deletion start. management. Zombie fields. Dreaded Features “Stuck” imports. Override. answers@hook42.com answers@hook42.com
Command line differences Features Configuration Management features-export fex/fu cex (config-export) features-import fim/fr cim (config-import) D7 (drush cc) cget (config-get) cset (config-set) config-merge D8 (drush cr) answers@hook42.com answers@hook42.com
Watch out for … Conflicts The gotchas. Field Cleanup D7 Features: State based Variables in Strongarm Force, cc all == D7 Features: Circular & drush cim, drush cr Mul>ple Dependencies D7 Features: Files don’t Timing dependency get deleted deployments D7 Features: Things that have an ID D7 Features: Module Incorrect module (role, terms, content) dependencies & patching exports answers@hook42.com answers@hook42.com
Takeaways 1. A Feature is an bundled export of custom configurations and custom YAML code. 2. A Feature is great for sharing. 3. Features, you did well in D7. You are better in D8. 4. Drupal 8 is time for Configuration Management. 5. I’m going to try work without Features in D8. 6. D7 Features best practices help parallel development in D8. 7. I love you, Features. Sort of. ;) answers@hook42.com answers@hook42.com
Reference Links Mike Potter: https://www.phase2technology.com/blog/best- practices-for-cmi-and-features-in-drupal-8/ https://chromatichq.com/blog/drupal-7-features-vs-drupal-8- configuration-management http://nuvole.org/blog/2013/sep/03/configuration- management-and-features-look-drupal-8 https://www.drupal.org/project/config_partial_export https://pantheon.io/blog/configuration-workflow-drupal-8-sites https://pantheon.io/docs/drupal-8-configuration-management/ answers@hook42.com answers@hook42.com
Recommend
More recommend