(Don t Fear) the Features Now with more cowbell. Aimee Degnan / aimee@hook42.com

Similar documents
Wednesday, November 7, 12 THE LEADER IN DRUPAL PLATFORM DESIGN AND DEVELOPMENT

Features-Based Deployment

AVOIDING THE GIT OF DESPAIR

Drupal Site Tuneup. Vroom! Vroom! Kristen Pol / kristen@hook42.com

Drupal Flyover (There s a Module for That) Emma Jane Hogbin Author, Drupal User's Guide

The truth about Drupal

Configuration Management in Drupal 8. Andrea Pescetti Nuvole

Everything you ever wanted to know about Drupal 8*

Migrating into Drupal 8

Achieving Continuous Integration with Drupal

MASTER DRUPAL 7 MODULE DEVELOPMENT

Drupal 8 The site builder's release

TestStand Certification Overview

How To Fix A Bug In Drupal 8.Dev

Entites in Drupal 8. Sascha Grossenbacher Christophe Galli

Drupalcamp Vienna 2009

Automate Your Deployment with Bamboo, Drush and Features DrupalCamp Scotland, 9 th 10 th May 2014

Drupal 6 to Drupal 7 Migration Worksheet

Preparing for Drupal 8

Automating Drupal Development with Patterns

Simple and powerful site deployment with capistrano

A (Web) Face for Radio. NPR and Drupal7 David Moore

Putting It All Together. Vagrant Drush Version Control

Love and Devotion. Richard Hayward State Library of Victoria. 14 January 2012, 2:30 3:15pm.

Abdullah Radwan. Target Job. Work Experience (9 Years)

Trainer name is P. Ranjan Raja. He is honour of and he has 8 years of experience in real time programming.

Eliminate Workflow Friction with Git

Lesson Plans Microsoft s Managing and Maintaining a Microsoft Windows Server 2003 Environment

Optimizing Drupal Performance. Benchmark Results

Kubernetes-Murano Integration in Mirantis OpenStack 7.0

How to Migrate From Existing BusinessObjects or Cognos Environments to MicroStrategy. Ani Jain January 29, 2014

Drupal Training Modules 2015

Drupal and Search Engine Optimization

ultimo theme Update Guide Copyright Infortis All rights reserved

Ontario Ombudsman. Goals

CiviCRM for Joomla! Integration, Best Practices, Extensions, and More. Jeremy Proffitt // Brian Shaughnessy

Startup Guide. Version 2.3.9

DBdeployer. About the Speaker: CJ Estel, Operations Database Engineer CoverMyMeds

Version Management with Subversion for Designers

How to Create a Multi-user Content Management Platform with Drupal in a vcloud Environment. A VMware Cloud Evaluation Reference Document

Administering Team Foundation Server 2013

Oracle Insurance Policy Administration. Version

D7 Panels From Zero to Hero Tutorial

Configuring an ios App Store application

Collaborating Across Disciplines with Revit Architecture, MEP, and Structure

Compiere Technical Architecture Modern, configurable, extendible

Prospect module. Quick reference guide. Opmetrix app version 4.10 onwards

The following is a comparison between CiviCRM, RedHen and CRM Core which are the leading option for CRM in the Drupal Community.

X-POS GUIDE. v3.4 INSTALLATION SmartOSC and X-POS

ultimo theme Update Guide Copyright Infortis All rights reserved

Drupal CMS for marketing sites

Faichi Solutions. The Changing Face of Drupal with Drupal 8

OMU350 Operations Manager 9.x on UNIX/Linux Advanced Administration

Advanced Solutions of Microsoft SharePoint Server 2013 Course 20332A; 5 Days, Instructor-led

Thursday, November 1, 12 THE LEADER IN DRUPAL PLATFORM DESIGN AND DEVELOPMENT

SharePoint 2013 End User Level I

Lingotek + Drupal Finally. Networked translation inside Drupal.

The Nuts and Bolts of Autodesk Vault Replication Setup

A Close Look at Drupal 7

Printer Performance and Troubleshooting Printers

WHITEPAPER. SBM Path to Production for Enterprises

BUILDING MULTILINGUAL WEBSITES WITH DRUPAL 7

Streamline your drupal development workflow in a 3-tier-environment - A story about drush make and drush aliases

Administration: Users and Roles

The Search API in Drupal 8. Thomas Seidl (drunken monkey)

CiviCRM for Drupal Developers

Who is SharePoint Joel?

Welcome to Drupal Camp 2013!

Quick Start Guide. This guide will help you get started with Kentico CMS for ASP.NET. It answers these questions:

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

Drupal for Designers

Corporate I.T. Services Limited Updating your Network Infrastructure Technology Skills to Windows Server 2008 (Beta 3)

The Fastest Way to a Drupal Site: Think it, Plan it, Build it.

UW- Madison Department of Chemistry Intro to Drupal for Chemistry Site Editors

Drupal Performance Tuning

ThirtySix Software WRITE ONCE. APPROVE ONCE. USE EVERYWHERE. SMARTDOCS SHAREPOINT CONFIGURATION GUIDE THIRTYSIX SOFTWARE

Sage CRM 7.3 SP2. Release Notes. Revision: SYS-REA-ENG-7.3SP2-1.0 Updated: April 2016

Reliable Business Data Implementing A Successful Data Governance Strategy with Enterprise Modeling Standards

IT Academy Lesson Plan

ArchiveOne Enterprise (Compliance) Version 6.0 SR1 Release Notes

SharePoint 2013 End User Level I Course 55050; 3 Days, Instructor-led

WordPress 2.9 e-commerce

Hyper-V Protection. User guide

Data Management Applications with Drupal as Your Framework

TestOps: Continuous Integration when infrastructure is the product. Barry Jaspan Senior Architect, Acquia Inc.

Setting up a local working copy with SVN, MAMP and rsync. Agentic

DETAILED BOOT CAMP AGENDA

Silverbear Membership Solution

Drupal Node Overview. Attendee Guide. Prepared for: EDT502, Fall 2007, Dr. Savenye Prepared by: Jeff Beeman. November 26, 2007 EDT502 Final Project

WEB DEVELOPER S GUIDE TO THE DHTS ENVIRONMENT

DevShop. Drupal Infrastructure in a Box. Jon Pugh CEO, Founder ThinkDrop Consulting Brooklyn NY

Module developer s tutorial

SAP HANA Cloud Platform, Portal Service: Overview SAP Cloud Experience and SAP Portal Product Management May 2016

Migrating into Drupal 8 Migrando a Drupal 8

Migrating helpdesk to a new server

Upgrading Cisco UCS Central

ProxiBlue Gift Promotions

Updating Drupal. Tri-Valley Drupal Users Group August, 2012

Authorize.net modules for oscommerce Online Merchant.

Transcription:

(Don t Fear) the Features Now with more cowbell. Aimee Degnan / aimee@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

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

Drupal has a nice feature, you can create a feature using Features.

Are you scared yet?

Drupal has a nice [development and deployment] feature - you can create a feature [on your website] [using the] Features [module].

Getting there. 1. What is a Feature? 2. Why use Features? 3. What is this Features jargon? 4. How do I do Features right? 5. Why is it important to be organized? 6. When should I fear the Features?

What is the Features module? It exports Drupal configurations in the database to code in the structure of a module.

Intended Usage 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

Adapted Usage Bundle database configurations to code for deployment in a multi-stage publication process for a single web site. example.com Dev à Test à Prod

Other Usage Features can be installed in a distribution with special considerations. Apps are Features with EVEN MORE COWBELL. They have an extended interface for non-technical user installation. See Panopoly, OpenPublish/Public/Enterprise/ Academy for great examples. From LevelTen: http://www.youtube.com/watch?v=sf7bzw9wcwg

Features has a bad reputation! Too much work! Hard to use! Messy! Painful! Evil! Ugh

Poorly made Features hurts everyone! Missing variables! Circular & Multiple Dependencies! Missing settings! Non-exportable?!! Un-tested?!?

Goal: Love Features Through understanding. And more cowbell.

Features is a Band Member

Features Band Members Dependencies: Ctools: https://drupal.org/project/ctools Extra cowbell add-ons: Diff: https://drupal.org/project/diff Extending features Features:! Features Extra: https://drupal.org/project/features_extra! FTools: https://drupal.org/project/ftools (local)! Strongarm: https://drupal.org/project/strongarm! Features Override: https://drupal.org/project/features_override

Features Band Members Content Export Support:! UUID Features Integration (+UUID) https://drupal.org/project/uuid_features! Nice comparison of Node Export vs. UUID Features: https://drupal.org/node/1311428! If content needs to be bundled, consider Deploy: https://drupal.org/project/deploy/

Behind the music.! featurename.info! featurename.features.inc! includes calls to other modules that are extending! (ds / strong-arm)! featurename.module! exists blank by default, but you can put hook_xxx_alters and any other module extensions! featurename.features.[exportable-type].inc! Created by specific module exportables! (user_permissions, workbench_moderation)! featurename.[exportable-type].inc! Created by specific module exportables! (strongarm, ds, )

Prevent conflicts. Reduce dependencies. ARCHITECTING FEATURES FOCUS: ORGANIZE FOR PARALLEL DEVELOPMENT FIELD REUSE INDEPENDENT SITE FEATURES

Isolate & identify the Feature(s) that gets turned on first and turned off last.

Two Leading Approaches All Views All Panels All Content Types Field Bases View Modes Image Styles Blog Product PPC Landing Page Use Cases: Small dev team Large w/ type per dev Code deployment Single use By Type / Purpose Base / Shared / Global Se/ngs By Site Func3onality Use Cases: Large dev team DistribuIons Code deployment Reusable Features Benefits: Know where things go Manages dependencies Reduce Merge Conflicts* Which one to choose? Depends on your organizaion and project needs Benefits: Isolate site features* Parallel development Reduce Merge Conflicts

What is your name, Feature? Like any module, a Feature is unique. Avoid naming collisions. Best practices: Create a Feature tag to group features Prefix the name with a code h42_blog Add a clear descriptor of contents*

Where do you live, precious Feature? Features are essentially modules. They are custom to your install.! In [droot]/sites/all/modules/custom! Or [droot]/sites/all/modules/features! Or in your architect s convention.

Results of the Naming Convention

Features Structure Feature Name Feature Contents Requirements base_site Views, ctools, jquery updates, global perms Enables all shared modules May leverage an install profile for this it base_field Stores all field bases and field collecions base for reuse Most other Features require this Feature base_frontend base_dev All shared / global theme and theme support se/ngs: Base view modes, image styles, breakpoints, picture All modules that are used to support development: Views UI, Fields UI, Devel, Devel Themer Most other Features require this Feature Can safely turn off in any environment without impacing site funcionality base_content_tools Link checkers, wysiwyg All tools for the content editors base_seo Metatag, xmlsitemap, pathauto, global redirect Isolate SEO based se/ngs h42_blog Content type, any blog views, permissions for blog, blog view modes se/ngs, pathauto, custom metatag, xmlsitemap Isolate all se/ngs for a single part of a site s funcionality

What are you saying? FEATURES TERMINOLOGY FOCUS: KNOW WHAT THE BUTTON LABELS MEAN

Know your lingo (all)! Dependencies: like a module, a feature can have dependencies on modules or other features! Disabled: a feature that is not used! Overridden: the code on disk is different that the database structure! Needs Review: things have really changed, you need to consider reverting your feature w/o a look

Know your lingo (UI)! Recreate: make changes to an existing feature! Generate: pressing the button to export the code disk! Review Overrides: with the diff module installed you can see an overview of changes

Know your lingo (drush)! Revert: apply all settings in exported code to DB! Update: pressing the button to export the code disk! Diff: with the diff module installed you can see an overview of changes

Most used Drush Commands https://drupal.org/node/960926! See the difference of code and DB:! drush features-diff (fdiff) NAME_OF_FEATURE! Apply code in a Feature to DB:! drush features-revert (fr) NAME_OF_FEATURE! drush features-revert-all (fr-all, fr)! Add new configs from DB to a Feature:! drush features-update (fu) NAME_OF_FEATURE! drush features-update-all (fu-all)

Watch out for The gotchas. State based Variables in Strongarm Circular & MulIple Dependencies Field Cleanup Force, cc all, force, cc all Files don t get deleted Module export formats Incorrect module exports Timing Dependency deployments Module dependencies & patching Things that have an ID (role, terms, content)

Takeaways. 1. A Feature is an bundled export of custom configurations and custom code. 2. A Feature is great for backups, code deployment, and sharing. 3. Features, you will not override my sanity. 4. I m going to try a Feature s architecture on my site. 5. I m going to use a clear naming convention to quickly identify my Features. 6. I love you, Features. Sort of. ;)

Goal: Love Features Through understanding. And more cowbell.