SlideShare a Scribd company logo
Features
a better way to package stuff


         Rob Knight
     NWDUG February 2010
About me

‣ Drupal developer since version 4.6
‣ Member of the Drupal Association -
  you should be too!
‣ Working in Manchester at PRWD
Intro
‣ Features is a Drupal module created
  by Development Seed
‣ It enables ‘Features’ to be created
  which package CCK types, Views,
  Contexts and more
‣ It moves configuration from the
  database to code
What is a Feature?

‣ A Feature is a special kind of module
‣ Features consist of generated code
‣ Features are created via the admin UI
‣ Features have version numbers
How a Drupal installation changes

                             Version
     Level      Changes
                             control?
     Core         Rarely       Yes

    Contrib     Regularly      Yes

  Custom code   Frequently    Maybe

   Database     Constantly     No


  Problem: how to manage change
         in the database?
The difference Features make
Example: Packaging
     a blog Feature

‣ ‘Blog Post’ content type
‣ Some views
‣ A Context for displaying blocks
A content type
A simple view
A context
The resulting blog


                 Text




Here we can see the blog content type,
  the context and the view in action
Creating a Feature
Creating a Feature
Creating a Feature
Feature contents
Generated code
Installing the Feature




When the Feature is enabled, all module
  dependencies will be enabled too
Changes




If any component of the feature is changed, the
     Feature is ‘overridden’. In this case, I’ve
                  changed a View
Viewing a ‘diff’




  I can now choose to revert the
changes or update the Feature code
Version control


‣ Because Features are code, they can
  be managed like source code
‣ Updating a Feature is just like
  updating a module
Deployment

‣ Features are great for ‘additive’
  changes
‣ Not so great for ‘destructive’ changes
‣ Complex changes between Feature
  versions are still tricky
Feature Servers

‣ Imagine running your own
  drupal.org-style module repository
‣ Supports “Available Updates”
  monitoring
‣ Powerful integration with drush and
  drush make
What features doesn’t do
         (yet)
‣ Taxonomy
‣ Node content and attachments
‣ Menus


‣ However, alternatives exist and more
  modules are integrating with
  Features
Pitfalls

‣ Many contrib modules as yet
  unsupported
‣ Features isn’t magic - it’s just a
  system for generating code
‣ Upgrades still need some manual
  intervention
Questions and Answers
Thanks for listening

‣ Features is maintained by Development
  Seed and is available at
  http://drupal.org/project/features


‣ My site & blog are at
  http://robknight.org.uk

More Related Content

What's hot (20)

Single Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSSingle Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJS
M R Rony
 
Single page App
Single page AppSingle page App
Single page App
Gaurav Gawande
 
Fork CMS
Fork CMSFork CMS
Fork CMS
Lester Lievens
 
A Gentle Introduction to Blazor
A Gentle Introduction to BlazorA Gentle Introduction to Blazor
A Gentle Introduction to Blazor
Jose Javier Columbie
 
Free Online SharePoint Framework Webinar
Free Online SharePoint Framework WebinarFree Online SharePoint Framework Webinar
Free Online SharePoint Framework Webinar
Manoj Mittal
 
Lap Around ASP.NET MVC 5
Lap Around ASP.NET MVC 5Lap Around ASP.NET MVC 5
Lap Around ASP.NET MVC 5
Lohith Goudagere Nagaraj
 
Moving from PHP to a nodejs full stack CMS
Moving from PHP to a nodejs full stack CMSMoving from PHP to a nodejs full stack CMS
Moving from PHP to a nodejs full stack CMS
Make & Build
 
Single page applications
Single page applicationsSingle page applications
Single page applications
Diego Cardozo
 
Bundle Splitting in Volto
Bundle Splitting in VoltoBundle Splitting in Volto
Bundle Splitting in Volto
PloneFoundation
 
Codegen2021 blazor mobile
Codegen2021 blazor mobileCodegen2021 blazor mobile
Codegen2021 blazor mobile
Jose Javier Columbie
 
Rise of the responsive single page application
Rise of the responsive single page applicationRise of the responsive single page application
Rise of the responsive single page application
Oren Shatken
 
ASP.NET 5 Overview
ASP.NET 5 OverviewASP.NET 5 Overview
ASP.NET 5 Overview
Shahed Chowdhuri
 
Building great spa’s with angular js, asp.net mvc and webapi
Building great spa’s with angular js, asp.net mvc and webapiBuilding great spa’s with angular js, asp.net mvc and webapi
Building great spa’s with angular js, asp.net mvc and webapi
Maurice De Beijer [MVP]
 
Host, deploy & scale Blazor Server Apps
Host, deploy & scale Blazor Server AppsHost, deploy & scale Blazor Server Apps
Host, deploy & scale Blazor Server Apps
Jose Javier Columbie
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page Application
KMS Technology
 
What the heck are Features and why do I need them for my Drupal website?
What the heck are Features and why do I need them for my Drupal website?What the heck are Features and why do I need them for my Drupal website?
What the heck are Features and why do I need them for my Drupal website?
Bryan Mayjor
 
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Conference
 
Single page application
Single page applicationSingle page application
Single page application
Arthur Fung
 
WordPress as a Headless CMS - Bronson Quick
WordPress as a Headless CMS - Bronson QuickWordPress as a Headless CMS - Bronson Quick
WordPress as a Headless CMS - Bronson Quick
WordCamp Sydney
 
Learn VBScript – Part 1 of 4
Learn VBScript – Part 1 of 4Learn VBScript – Part 1 of 4
Learn VBScript – Part 1 of 4
Srinimf-Slides
 
Single Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSSingle Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJS
M R Rony
 
Free Online SharePoint Framework Webinar
Free Online SharePoint Framework WebinarFree Online SharePoint Framework Webinar
Free Online SharePoint Framework Webinar
Manoj Mittal
 
Moving from PHP to a nodejs full stack CMS
Moving from PHP to a nodejs full stack CMSMoving from PHP to a nodejs full stack CMS
Moving from PHP to a nodejs full stack CMS
Make & Build
 
Single page applications
Single page applicationsSingle page applications
Single page applications
Diego Cardozo
 
Bundle Splitting in Volto
Bundle Splitting in VoltoBundle Splitting in Volto
Bundle Splitting in Volto
PloneFoundation
 
Rise of the responsive single page application
Rise of the responsive single page applicationRise of the responsive single page application
Rise of the responsive single page application
Oren Shatken
 
Building great spa’s with angular js, asp.net mvc and webapi
Building great spa’s with angular js, asp.net mvc and webapiBuilding great spa’s with angular js, asp.net mvc and webapi
Building great spa’s with angular js, asp.net mvc and webapi
Maurice De Beijer [MVP]
 
Host, deploy & scale Blazor Server Apps
Host, deploy & scale Blazor Server AppsHost, deploy & scale Blazor Server Apps
Host, deploy & scale Blazor Server Apps
Jose Javier Columbie
 
Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page Application
KMS Technology
 
What the heck are Features and why do I need them for my Drupal website?
What the heck are Features and why do I need them for my Drupal website?What the heck are Features and why do I need them for my Drupal website?
What the heck are Features and why do I need them for my Drupal website?
Bryan Mayjor
 
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Conference
 
Single page application
Single page applicationSingle page application
Single page application
Arthur Fung
 
WordPress as a Headless CMS - Bronson Quick
WordPress as a Headless CMS - Bronson QuickWordPress as a Headless CMS - Bronson Quick
WordPress as a Headless CMS - Bronson Quick
WordCamp Sydney
 
Learn VBScript – Part 1 of 4
Learn VBScript – Part 1 of 4Learn VBScript – Part 1 of 4
Learn VBScript – Part 1 of 4
Srinimf-Slides
 

Similar to Features: A better way to package stuff in Drupal (20)

Drupal Presentation for CapitalCamp 2011: Features Driven Development
Drupal Presentation for CapitalCamp 2011: Features Driven DevelopmentDrupal Presentation for CapitalCamp 2011: Features Driven Development
Drupal Presentation for CapitalCamp 2011: Features Driven Development
Mediacurrent
 
Intro to Features Module on Drupal
Intro to Features Module on DrupalIntro to Features Module on Drupal
Intro to Features Module on Drupal
Aidan Foster
 
Features everywhere
Features everywhere Features everywhere
Features everywhere
Mediacurrent
 
Building and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextBuilding and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and Context
Svilen Sabev
 
Gov features
Gov featuresGov features
Gov features
Jeff Miccolis
 
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationIBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
Development Seed
 
10 Reasons why you should be using features for your Drupal project
10 Reasons why you should be using features for your Drupal project10 Reasons why you should be using features for your Drupal project
10 Reasons why you should be using features for your Drupal project
Wunderkraut
 
Drupal Deployment
Drupal DeploymentDrupal Deployment
Drupal Deployment
q0rban
 
Easy Drupal Project Deployment With Features Module & Drush
Easy Drupal Project Deployment With Features Module & DrushEasy Drupal Project Deployment With Features Module & Drush
Easy Drupal Project Deployment With Features Module & Drush
QArea
 
Using Features
Using FeaturesUsing Features
Using Features
Alexandru Badiu
 
Git Going w/ Git
Git Going w/ GitGit Going w/ Git
Git Going w/ Git
heyMP
 
Drupal Features Module by New Tech Fusion presentation
Drupal Features Module by New Tech Fusion presentationDrupal Features Module by New Tech Fusion presentation
Drupal Features Module by New Tech Fusion presentation
NewTechFusion Cybertech Pvt Ltd
 
Features & Installation Profiles
Features & Installation ProfilesFeatures & Installation Profiles
Features & Installation Profiles
David Watson
 
Features
FeaturesFeatures
Features
Gokul Nk
 
Drupal: an Overview
Drupal: an OverviewDrupal: an Overview
Drupal: an Overview
Matt Weaver
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2
Anil Sagar
 
Hong Kong Drupal User Group - 2014 March 8th
Hong Kong Drupal User Group - 2014 March 8thHong Kong Drupal User Group - 2014 March 8th
Hong Kong Drupal User Group - 2014 March 8th
Wong Hoi Sing Edison
 
CapitalCamp Features
CapitalCamp FeaturesCapitalCamp Features
CapitalCamp Features
Phase2
 
Introduction to Drupal Basics
Introduction to Drupal BasicsIntroduction to Drupal Basics
Introduction to Drupal Basics
Juha Niemi
 
Synapseindia drupal intro 0
Synapseindia drupal intro 0Synapseindia drupal intro 0
Synapseindia drupal intro 0
saritasingh19866
 
Drupal Presentation for CapitalCamp 2011: Features Driven Development
Drupal Presentation for CapitalCamp 2011: Features Driven DevelopmentDrupal Presentation for CapitalCamp 2011: Features Driven Development
Drupal Presentation for CapitalCamp 2011: Features Driven Development
Mediacurrent
 
Intro to Features Module on Drupal
Intro to Features Module on DrupalIntro to Features Module on Drupal
Intro to Features Module on Drupal
Aidan Foster
 
Features everywhere
Features everywhere Features everywhere
Features everywhere
Mediacurrent
 
Building and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and ContextBuilding and Deployment of Drupal sites with Features and Context
Building and Deployment of Drupal sites with Features and Context
Svilen Sabev
 
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationIBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
Development Seed
 
10 Reasons why you should be using features for your Drupal project
10 Reasons why you should be using features for your Drupal project10 Reasons why you should be using features for your Drupal project
10 Reasons why you should be using features for your Drupal project
Wunderkraut
 
Drupal Deployment
Drupal DeploymentDrupal Deployment
Drupal Deployment
q0rban
 
Easy Drupal Project Deployment With Features Module & Drush
Easy Drupal Project Deployment With Features Module & DrushEasy Drupal Project Deployment With Features Module & Drush
Easy Drupal Project Deployment With Features Module & Drush
QArea
 
Git Going w/ Git
Git Going w/ GitGit Going w/ Git
Git Going w/ Git
heyMP
 
Features & Installation Profiles
Features & Installation ProfilesFeatures & Installation Profiles
Features & Installation Profiles
David Watson
 
Drupal: an Overview
Drupal: an OverviewDrupal: an Overview
Drupal: an Overview
Matt Weaver
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2
Anil Sagar
 
Hong Kong Drupal User Group - 2014 March 8th
Hong Kong Drupal User Group - 2014 March 8thHong Kong Drupal User Group - 2014 March 8th
Hong Kong Drupal User Group - 2014 March 8th
Wong Hoi Sing Edison
 
CapitalCamp Features
CapitalCamp FeaturesCapitalCamp Features
CapitalCamp Features
Phase2
 
Introduction to Drupal Basics
Introduction to Drupal BasicsIntroduction to Drupal Basics
Introduction to Drupal Basics
Juha Niemi
 
Synapseindia drupal intro 0
Synapseindia drupal intro 0Synapseindia drupal intro 0
Synapseindia drupal intro 0
saritasingh19866
 
Ad

Features: A better way to package stuff in Drupal