SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
2011-07-07
               DUB – Drupal Usergroup Berlin
                  „Drupal Deployment“

                            features+
     „A Presentation about monsters, features and the plus“




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      1
whoami


Florian Latzel
 ●   @fl3a
 ●   http://netzaffe.de
 ●   http://is-loesungen.de




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      2
whoami: f – l – 3 – what?!



 ●   @fl3a → flEa




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      3
whoami: f – l – 3 – what?!



 ●   @fl3a → flea [fliː]




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      4
whoami: f – l – 3 – what?!



 ●   @fl3a → flea [fliː]




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      5
whoami: f – l – 3 – what?!



 ●   @fl3a → flea [fliː]




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      6
whoami: fl3a → flEa → flea → floh...



 ●   @fl3a → floh




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      7
cat features+/toc.txt


●   Questions
●   Conclusion
●   Features
●   Drupal API
●   Drush
●   Installation profiles
●   The Plus



    features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      8
Questions: What is stored where?


Filesystem:                                Database:
●   Code                                    ●   Drupal Settings
●   Code Settings                           ●   Modules Settings
                                            ●   Content Types
                                            ●   Content
                                            ●   Views
                                            ●   Rules
                                            ●   ...


features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      9
Questions: What is exportable* right now?


Filesystem:                                Database:
●   Code                                    ●   Drupal Settings
●   Code Settings                           ●   Modules Settings
                                            ●   Content Types
                                            ●   Content

    *(and importable)
                                            ●   Views
                                            ●   Rules
                                            ●   ...


features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      10
Questions: How to cooperate with a team*?

 ●   Working together on live?
 ●   Working with ftp?
 ●   Sharing sqldumps?
 ●   Overwriting others' work?


*(Perhaps a distributed team)




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      11
Questions: How to handle the staging issue?


Everything works on dev. Now what?
 ●   Install modules again on stage
 ●
     Export Views, Rules, CT's manually from dev*
 ●   Import them manually into stage


* Also possible via code for Rules[1] and Views[2]




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      12
Questions: How to handle the staging issue?


Reproduce „unexportable“ functionality manually:
●   Module Settings / Configuration
●   Roles and its Permissions
●   And so on ...




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      13
Conclusion

●   Not a good strategy for a team...
●   No granularity...
●   Mostly cumbersome work...
●   Hard to use repeating patterns...
●   Prone to errors...
●   No revision history...
●   No VCS / SCM...




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      14
features




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      15
features: The Features Module


Features
http://drupal.org/project/features

Requires ctools
http://drupal.org/project/ctools
●   Uses the ctools export API
●   Export functionality
    and configuration into code
●   Code means Drupal Module


features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      16
features: What can it handle?


Drupal Core:
●   CCK Fields
●   CCK Fieldgroups
●   Content Types
●   Dependencies (required modules)
●
    Menus and Menu links*
●   Permissions
●   Roles
●
    Taxonomy (Vocabularies)*                          * Currently in development.


features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel         17
features: What can it handle?


Contributed Modules:
 ●   Context                                ●   ImageCache
 ●   CKEditor Profiles                      ●   Panels
                                                (Page Manager)
 ●   Feeds
                                            ●   Rules
 ●   Flags (from 6.x-2.x)
                                            ●   Views




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      18
features: What is missing?


●   Configuration
●   Custom Blocks
●   Input Formats
●   Content




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      19
features: Rule #35?


Rule #35: "There's a Drupal module for that." [3]




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      20
features: Rule #35 ­ Configuration


Strongarm
http://drupal.org/project/strongarm
●   Settings are usually stored
    in {variables}
●   Strongarm makes variables
    exportable via features
●   Uses the ctools export API




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      21
features: Rule #35 ­ Boxes


Boxes
http://drupal.org/project/boxes
●   A reimplementation
    of custom blocks (boxes)
●   Uses the ctools export API




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      22
features: Rule #35 ­ Content




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      23
features: Rule #35 ­ Content


Nodes, Node revisions, User, Taxonomy
http://drupal.org/project/uuid_features
●   Requires uuid
    → Universally Unique Identifier
    http://drupal.org/project/uuid
●   e.g. node/259 gets the following uuid:
    f3159efc-3e1c-102e-882c-fd9c148d8804




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      24
Features: Rule #35 ­ import formats 


Input Formats
http://drupal.org/project/input_formats
●   Allows you to export / import Input Formats
    manually like CT's and Views
●   Features Module Integration
●   Requires Exportables
    http://drupal.org/project/exportables
●   Requires Strongarm and Ctools, too




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      25
features: myfeature


A Profile CT with...
●   content_profile
●   cck_private_fields
●   flag_friend, flag_friend_access
●   content_taxonomy
●   And a lot of fields...




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      26
features: myfeature


 myfeature/
 ├── myfeature.features.content.inc
 ├── myfeature.features.fieldgroup.inc
 ├── myfeature.features.inc
 ├── myfeature.info
 ├── myfeature.module
 └── myfeature.strongarm.inc




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      27
Features: myfeature.info

core = "6.x"
dependencies[] = "cck_private_fields"
dependencies[] = "cck_private_fields_flag_friend"
dependencies[] = "content_profile"
...
description = "Myfeature desciption"
features[ctools][] = "strongarm:strongarm:1"
...
features[fieldgroup][] = "profile-group_personal"
...
features[node][] = "profile"
...
features[user_permission][] = "edit own profile content"
features[user_permission][] = "edit privacy options for field field_relations
features[user_permission][] = "view private data for field field_relationship
...
features[user_role][] = "Community member"
features[variable][] = "comment_anonymous_profile"
...
name = "myfeature"
package = "Features"



  features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      28
features: myfeature.module


 <?php

 include_once('myfeature.features.inc');




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      29
Features: myfeature.features.inc (1)


<?php

/**
  * Implementation of hook_ctools_plugin_api().
  */
function myfeature_ctools_plugin_api() {
   list($module, $api) = func_get_args();
   if ($module == "strongarm" && $api == "strongarm") {
     return array("version" => 1);
   }
}




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      30
Features: myfeature.features.inc (2)

/**
  * Implementation of hook_node_info().
  */
function myfeature_node_info() {
   $items = array(
     'profile' => array(
       'name' => t('Profile'),
       'module' => 'features',
       'description' => t('A user profile built as content.'),
       'has_title' => '1',
       'title_label' => t('Title'),
       'has_body' => '0',
       'body_label' => '',
       'min_word_count' => '0',
       'help' => '',
     ),
   );
   return $items;
}

features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      31
Features: myfeature.features.inc


<?php

/**
  * Implementation of hook_ctools_plugin_api().
  */
function myfeature_ctools_plugin_api() {
   list($module, $api) = func_get_args();
   if ($module == "strongarm" && $api == "strongarm") {
     return array("version" => 1);
   }
}




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      32
features: myfeature.features.content.inc

<?php

/**
  * Implementation of hook_content_default_fields().
  */
function myfeature_content_default_fields() {
   $fields = array();
   ...
   // Exported field: field_relationship_status
   $fields['profile-field_relationship_status'] = array(
     'field_name' => 'relationship_status',
     'type_name' => 'profile',
     'display_settings' => array(
        'weight' => '37',
        'parent' => 'group_common,
        'label' => array(
          'format' => 'above',
        ),
       ...
       'allowed_values' => 'solo^M
In a relationship^M
complicated',
       ...
      'label' => 'relationship status',
   );
}

features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      33
features: Specifications


Kit [4]
●   KIT Feature Specification (kitf 1.0-draft)
●   KIT Theme Specification (kitt 1.0-draft)




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      34
features: Known Issues


Lost in translation [5]...
 ●   e.g. a field is named 'Beziehungsstatus'
 ●   e.g. in your myfeature.content.inc
     you will get: t('Beziehungsstatus')
     that will be used as translation source
 ●   but it should be t('relationship status')
 ●   Still a open issue in Features Module [6]
 ●   Solution: Features Export Language [7]



features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      35
Drupal API: If a feature is not enough... 


You know, Drupal has an API...
Create Upgrade-Path's with Drupal's update.php
●   Create myfeature.install file
●   Implement hook_install()
    http://api.drupal.org/api/drupal/developer--hooks--install.php/function/hook_install/6

●   Implement hook_update_N()
    http://api.drupal.org/api/drupal/developer--hooks--install.php/function/hook_update_N/6

Perhaps you might use db_query()
or implement hook_you_name_it()



features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel                   36
drush




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      37
drush fu


Features Module provides some drush commands:
●   drush features
●   drush features-export [feature name] [component list]
●   drush features-update [feature name]
●   drush features-revert [feature name]
●   drush features-diff [feature name]




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      38
drush: Useful features related extensions

●   Features Clone
    http://drupal.org/project/features_clone
●   Features Plumber
    http://drupal.org/project/features_plumber
●   Features Fetch
    http://drupal.org/project/features_fetch




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      39
Installation profiles


You might know Installation Profiles from...
●   DrupalCenter
●   OpenAtrium
●   Acquia Drupal
●   Commons
●   Open Publish
●   ...




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      40
Installation Profiles: myprofile

drupal-6.x/
├── COPYRIGHT.txt
├── cron.php
├── includes
├── index.php
├── install.php
├── misc
├── modules
├── profiles
│   ├── default
│   │    └── default.profile
│   └── myprofile
│        ├── myprofile.profile
│        └── translations
│            └── de.po
├── robots.txt
├── scripts
├── sites
├── themes
├── update.php
└── xmlrpc.php

features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      41
Installation Profile: myprofile.profile


/**
 * Implementation of hook_profile_modules()
 *
 * @return
 * array of modules to be required and activated
 */
function myprofile_profile_modules(){
   return array(

      // feature-stuff
      'myfeature',
       …
    );
}


features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      42
The Plus

●   Perhaps your own Drupal Distribution?
●   Feature Server
    http://drupal.org/project/fserver
●   Drush Make
    http://drupal.org/project/drush_make
●   Drush make UI
    http://drupal.org/project/drush_make_ui
●   drush site-install
    (in drush core >= 4.0)
●   CI – Continious Integration
    (with e.g. Hudson / Jenkins)
features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel      43
cat ~/feature+/appendix/references.txt


[1] http://drupal.org/node/298634
[2] http://api.lullabot.com/hook_views_default_views
[3] Robert Douglass at DrupalCamp Stockholm
  http://twitter.com/#!/toddross/statuses/1970578988
[4] http://drupal.org/project/kit
[5] http://blog.erdfisch.de/2011/05/features-international
[6] http://drupal.org/node/874760
[7] http://drupal.org/sandbox/xamanu/1161994




features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel   
cat ~/feature+/appendix/image­credits.txt

●   Flea (RHCP)
    http://en.wikipedia.org/wiki/File:Flea_in_skeleton_t-shirt.jpg
●   Flea (anatomy)
    http://en.wikipedia.org/wiki/File:Scheme_flea_anatomy-en.svg
●   Feature Monster
    http://drupal.org/files/images/features_monster.png
●   The future of drupal features
    http://www.flickr.com/photos/developmentseed/3575550279/
●   Strongarm Monster
    http://drupal.org/files/images/strongarm.png
●   Boxes Monster
    http://drupal.org/node/820924
●   „Node Collision“
    http://www.slideshare.net/eaton/drupal-deployment-presentation
●   Adrian <3 drush
    http://www.flickr.com/photos/developmentseed/3614279203/
Feature related images by developmentSEED, monsters by Saman Bemel Benrud

features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel   

Weitere ähnliche Inhalte

Was ist angesagt?

Drupal Developer Days Keynote
Drupal Developer Days KeynoteDrupal Developer Days Keynote
Drupal Developer Days KeynoteAngela Byron
 
Best Practices for Development Deployment & Distributions: Capital Camp + Gov...
Best Practices for Development Deployment & Distributions: Capital Camp + Gov...Best Practices for Development Deployment & Distributions: Capital Camp + Gov...
Best Practices for Development Deployment & Distributions: Capital Camp + Gov...Phase2
 
Ts drupal6 module development v0.2
Ts   drupal6 module development v0.2Ts   drupal6 module development v0.2
Ts drupal6 module development v0.2Confiz
 
Improving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLAImproving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLAJesus Manuel Olivas
 
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016Paul McKibben
 
Plain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsPlain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsAngela Byron
 
Convert modules from 6.x to 7.x
Convert modules from 6.x to 7.xConvert modules from 6.x to 7.x
Convert modules from 6.x to 7.xJoão Ventura
 
Ansible Project Deploy (phpbenelux 2015)
Ansible Project Deploy (phpbenelux 2015)Ansible Project Deploy (phpbenelux 2015)
Ansible Project Deploy (phpbenelux 2015)Ramon de la Fuente
 
Easily Manage Patching and Application Updates with Chocolatey + Puppet - Apr...
Easily Manage Patching and Application Updates with Chocolatey + Puppet - Apr...Easily Manage Patching and Application Updates with Chocolatey + Puppet - Apr...
Easily Manage Patching and Application Updates with Chocolatey + Puppet - Apr...Puppet
 
Bring drupal 8 to all in their native languages
Bring drupal 8 to all in their native languagesBring drupal 8 to all in their native languages
Bring drupal 8 to all in their native languagesSébastien Corbin
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"IT Event
 
Oleksandr Medvediev - Content delivery tools in Drupal 8.
Oleksandr Medvediev - Content delivery tools in Drupal 8.Oleksandr Medvediev - Content delivery tools in Drupal 8.
Oleksandr Medvediev - Content delivery tools in Drupal 8.DrupalCamp Kyiv
 
Drush Aegir & Drush, Drupal Roadshow Austria
Drush Aegir & Drush, Drupal Roadshow AustriaDrush Aegir & Drush, Drupal Roadshow Austria
Drush Aegir & Drush, Drupal Roadshow AustriaIztok Smolic
 
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011camp_drupal_ua
 
Virtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 MayVirtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 MayPuppet
 
Doctrine Php Object Relational Mapper
Doctrine Php Object Relational MapperDoctrine Php Object Relational Mapper
Doctrine Php Object Relational Mapperguesta3af58
 

Was ist angesagt? (20)

Drupal Developer Days Keynote
Drupal Developer Days KeynoteDrupal Developer Days Keynote
Drupal Developer Days Keynote
 
2014 hadoop wrocław jug
2014 hadoop   wrocław jug2014 hadoop   wrocław jug
2014 hadoop wrocław jug
 
Best Practices for Development Deployment & Distributions: Capital Camp + Gov...
Best Practices for Development Deployment & Distributions: Capital Camp + Gov...Best Practices for Development Deployment & Distributions: Capital Camp + Gov...
Best Practices for Development Deployment & Distributions: Capital Camp + Gov...
 
Migrating data to drupal 8
Migrating data to drupal 8Migrating data to drupal 8
Migrating data to drupal 8
 
Ts drupal6 module development v0.2
Ts   drupal6 module development v0.2Ts   drupal6 module development v0.2
Ts drupal6 module development v0.2
 
Improving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLAImproving your Drupal 8 development workflow DrupalCampLA
Improving your Drupal 8 development workflow DrupalCampLA
 
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
 
Plain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsPlain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticals
 
Convert modules from 6.x to 7.x
Convert modules from 6.x to 7.xConvert modules from 6.x to 7.x
Convert modules from 6.x to 7.x
 
Ansible Project Deploy (phpbenelux 2015)
Ansible Project Deploy (phpbenelux 2015)Ansible Project Deploy (phpbenelux 2015)
Ansible Project Deploy (phpbenelux 2015)
 
Ansible project-deploy
Ansible project-deployAnsible project-deploy
Ansible project-deploy
 
Easily Manage Patching and Application Updates with Chocolatey + Puppet - Apr...
Easily Manage Patching and Application Updates with Chocolatey + Puppet - Apr...Easily Manage Patching and Application Updates with Chocolatey + Puppet - Apr...
Easily Manage Patching and Application Updates with Chocolatey + Puppet - Apr...
 
3 Git
3 Git3 Git
3 Git
 
Bring drupal 8 to all in their native languages
Bring drupal 8 to all in their native languagesBring drupal 8 to all in their native languages
Bring drupal 8 to all in their native languages
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
 
Oleksandr Medvediev - Content delivery tools in Drupal 8.
Oleksandr Medvediev - Content delivery tools in Drupal 8.Oleksandr Medvediev - Content delivery tools in Drupal 8.
Oleksandr Medvediev - Content delivery tools in Drupal 8.
 
Drush Aegir & Drush, Drupal Roadshow Austria
Drush Aegir & Drush, Drupal Roadshow AustriaDrush Aegir & Drush, Drupal Roadshow Austria
Drush Aegir & Drush, Drupal Roadshow Austria
 
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
 
Virtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 MayVirtual Bolt Workshop - 6 May
Virtual Bolt Workshop - 6 May
 
Doctrine Php Object Relational Mapper
Doctrine Php Object Relational MapperDoctrine Php Object Relational Mapper
Doctrine Php Object Relational Mapper
 

Andere mochten auch

TCommFunctional-Website_Deisgn_Development_Management_945
TCommFunctional-Website_Deisgn_Development_Management_945TCommFunctional-Website_Deisgn_Development_Management_945
TCommFunctional-Website_Deisgn_Development_Management_945tutorialsruby
 
Agiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumAgiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumFlorian Latzel
 
Was bedeutet eine optimale Ressourcenplanung und –verfolgung für ein oder meh...
Was bedeutet eine optimale Ressourcenplanung und –verfolgung für ein oder meh...Was bedeutet eine optimale Ressourcenplanung und –verfolgung für ein oder meh...
Was bedeutet eine optimale Ressourcenplanung und –verfolgung für ein oder meh...remasoft
 
Agiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumAgiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumFlorian Latzel
 
Scrum aus der Praxis - DrupalDevDays 2010
Scrum aus der Praxis - DrupalDevDays 2010Scrum aus der Praxis - DrupalDevDays 2010
Scrum aus der Praxis - DrupalDevDays 2010Florian Latzel
 
Responsive goes Agile!
Responsive goes Agile!Responsive goes Agile!
Responsive goes Agile!Dirk Pogrzeba
 
LeSS-Intro - Scrum Meetup Berlin
LeSS-Intro - Scrum Meetup BerlinLeSS-Intro - Scrum Meetup Berlin
LeSS-Intro - Scrum Meetup BerlinAnton Skornyakov
 
Status Quo Agile - Ergebnis-Highlights der Studie zu Verbreitung und Nutzen a...
Status Quo Agile - Ergebnis-Highlights der Studie zu Verbreitung und Nutzen a...Status Quo Agile - Ergebnis-Highlights der Studie zu Verbreitung und Nutzen a...
Status Quo Agile - Ergebnis-Highlights der Studie zu Verbreitung und Nutzen a...Ayelt Komus
 
Consultinform AG, Ressourcenplanung, wo stecken die Stolpersteine?
Consultinform AG, Ressourcenplanung, wo stecken die Stolpersteine?Consultinform AG, Ressourcenplanung, wo stecken die Stolpersteine?
Consultinform AG, Ressourcenplanung, wo stecken die Stolpersteine?Consultinform AG
 
Agiles Projektmanagement mit Redmine
Agiles Projektmanagement mit RedmineAgiles Projektmanagement mit Redmine
Agiles Projektmanagement mit RedmineAlphaNodes GmbH
 
Expertentagung Agiles Projektmanagement 2015: Projektmanagement neu gedacht: ...
Expertentagung Agiles Projektmanagement 2015: Projektmanagement neu gedacht: ...Expertentagung Agiles Projektmanagement 2015: Projektmanagement neu gedacht: ...
Expertentagung Agiles Projektmanagement 2015: Projektmanagement neu gedacht: ...Ayelt Komus
 
Agile Projectmanagement
Agile ProjectmanagementAgile Projectmanagement
Agile ProjectmanagementManfred Rieder
 

Andere mochten auch (13)

TCommFunctional-Website_Deisgn_Development_Management_945
TCommFunctional-Website_Deisgn_Development_Management_945TCommFunctional-Website_Deisgn_Development_Management_945
TCommFunctional-Website_Deisgn_Development_Management_945
 
Agiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumAgiles Projektmanagement mit Scrum
Agiles Projektmanagement mit Scrum
 
Was bedeutet eine optimale Ressourcenplanung und –verfolgung für ein oder meh...
Was bedeutet eine optimale Ressourcenplanung und –verfolgung für ein oder meh...Was bedeutet eine optimale Ressourcenplanung und –verfolgung für ein oder meh...
Was bedeutet eine optimale Ressourcenplanung und –verfolgung für ein oder meh...
 
Agiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumAgiles Projektmanagement mit Scrum
Agiles Projektmanagement mit Scrum
 
Scrum aus der Praxis - DrupalDevDays 2010
Scrum aus der Praxis - DrupalDevDays 2010Scrum aus der Praxis - DrupalDevDays 2010
Scrum aus der Praxis - DrupalDevDays 2010
 
Responsive goes Agile!
Responsive goes Agile!Responsive goes Agile!
Responsive goes Agile!
 
LeSS-Intro - Scrum Meetup Berlin
LeSS-Intro - Scrum Meetup BerlinLeSS-Intro - Scrum Meetup Berlin
LeSS-Intro - Scrum Meetup Berlin
 
Status Quo Agile - Ergebnis-Highlights der Studie zu Verbreitung und Nutzen a...
Status Quo Agile - Ergebnis-Highlights der Studie zu Verbreitung und Nutzen a...Status Quo Agile - Ergebnis-Highlights der Studie zu Verbreitung und Nutzen a...
Status Quo Agile - Ergebnis-Highlights der Studie zu Verbreitung und Nutzen a...
 
Consultinform AG, Ressourcenplanung, wo stecken die Stolpersteine?
Consultinform AG, Ressourcenplanung, wo stecken die Stolpersteine?Consultinform AG, Ressourcenplanung, wo stecken die Stolpersteine?
Consultinform AG, Ressourcenplanung, wo stecken die Stolpersteine?
 
Agiles Projektmanagement mit Redmine
Agiles Projektmanagement mit RedmineAgiles Projektmanagement mit Redmine
Agiles Projektmanagement mit Redmine
 
Expertentagung Agiles Projektmanagement 2015: Projektmanagement neu gedacht: ...
Expertentagung Agiles Projektmanagement 2015: Projektmanagement neu gedacht: ...Expertentagung Agiles Projektmanagement 2015: Projektmanagement neu gedacht: ...
Expertentagung Agiles Projektmanagement 2015: Projektmanagement neu gedacht: ...
 
Agile Projectmanagement
Agile ProjectmanagementAgile Projectmanagement
Agile Projectmanagement
 
Das Agile Team
Das Agile TeamDas Agile Team
Das Agile Team
 

Ähnlich wie features+

Top 8 Improvements in Drupal 8
Top 8 Improvements in Drupal 8Top 8 Improvements in Drupal 8
Top 8 Improvements in Drupal 8Angela Byron
 
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...Eric Sembrat
 
Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...
Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...
Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...Chipway
 
Everything You Need to Know About the Top Changes in Drupal 8
Everything You Need to Know About the Top Changes in Drupal 8Everything You Need to Know About the Top Changes in Drupal 8
Everything You Need to Know About the Top Changes in Drupal 8Acquia
 
Drupal Architecture and functionality
Drupal Architecture and functionality Drupal Architecture and functionality
Drupal Architecture and functionality Ann Lam
 
Your first d8 module
Your first d8 moduleYour first d8 module
Your first d8 moduletedbow
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesShabir Ahmad
 
Drupal 8 - What’s cooking?
Drupal 8 - What’s cooking?Drupal 8 - What’s cooking?
Drupal 8 - What’s cooking?Alkuvoima
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master BuilderPhilip Norton
 
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)Konstantin Komelin
 
DDAY2014 - Features per Drupal 8
DDAY2014 - Features per Drupal 8DDAY2014 - Features per Drupal 8
DDAY2014 - Features per Drupal 8DrupalDay
 
Drupal 8 DX Changes
Drupal 8 DX ChangesDrupal 8 DX Changes
Drupal 8 DX Changesqed42
 
Difference Between Drupal 6 vs drupal 7
Difference Between Drupal 6 vs drupal 7 Difference Between Drupal 6 vs drupal 7
Difference Between Drupal 6 vs drupal 7 Dhinakaran Mani
 
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011camp_drupal_ua
 
How to Migrate Drupal 6 to Drupal 8?
How to Migrate Drupal 6 to Drupal 8?How to Migrate Drupal 6 to Drupal 8?
How to Migrate Drupal 6 to Drupal 8?DrupalGeeks
 
Drupal 8 Initiatives
Drupal 8 InitiativesDrupal 8 Initiatives
Drupal 8 InitiativesAngela Byron
 
Drupal 6 to Drupal 8 Migration
Drupal 6 to Drupal 8 MigrationDrupal 6 to Drupal 8 Migration
Drupal 6 to Drupal 8 MigrationAmeex Technologies
 

Ähnlich wie features+ (20)

Top 8 Improvements in Drupal 8
Top 8 Improvements in Drupal 8Top 8 Improvements in Drupal 8
Top 8 Improvements in Drupal 8
 
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
 
Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...
Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...
Conference Migrate to Drupal 8 by Leon Cros at Drupal Developer Days 2015 in ...
 
Everything You Need to Know About the Top Changes in Drupal 8
Everything You Need to Know About the Top Changes in Drupal 8Everything You Need to Know About the Top Changes in Drupal 8
Everything You Need to Know About the Top Changes in Drupal 8
 
Drupal Architecture and functionality
Drupal Architecture and functionality Drupal Architecture and functionality
Drupal Architecture and functionality
 
Your first d8 module
Your first d8 moduleYour first d8 module
Your first d8 module
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API Changes
 
Drupal 8 - What’s cooking?
Drupal 8 - What’s cooking?Drupal 8 - What’s cooking?
Drupal 8 - What’s cooking?
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master Builder
 
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
#D8CX: Upgrade your modules to Drupal 8 (Part 1 and 2)
 
#D8 cx: upgrade your modules to drupal 8
#D8 cx: upgrade your modules to drupal 8 #D8 cx: upgrade your modules to drupal 8
#D8 cx: upgrade your modules to drupal 8
 
DDAY2014 - Features per Drupal 8
DDAY2014 - Features per Drupal 8DDAY2014 - Features per Drupal 8
DDAY2014 - Features per Drupal 8
 
Drupal 8 DX Changes
Drupal 8 DX ChangesDrupal 8 DX Changes
Drupal 8 DX Changes
 
Using Features
Using FeaturesUsing Features
Using Features
 
Difference Between Drupal 6 vs drupal 7
Difference Between Drupal 6 vs drupal 7 Difference Between Drupal 6 vs drupal 7
Difference Between Drupal 6 vs drupal 7
 
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
 
How to Migrate Drupal 6 to Drupal 8?
How to Migrate Drupal 6 to Drupal 8?How to Migrate Drupal 6 to Drupal 8?
How to Migrate Drupal 6 to Drupal 8?
 
Migrations
MigrationsMigrations
Migrations
 
Drupal 8 Initiatives
Drupal 8 InitiativesDrupal 8 Initiatives
Drupal 8 Initiatives
 
Drupal 6 to Drupal 8 Migration
Drupal 6 to Drupal 8 MigrationDrupal 6 to Drupal 8 Migration
Drupal 6 to Drupal 8 Migration
 

Kürzlich hochgeladen

Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 

Kürzlich hochgeladen (20)

Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 

features+

  • 1. 2011-07-07 DUB – Drupal Usergroup Berlin „Drupal Deployment“ features+ „A Presentation about monsters, features and the plus“ features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    1
  • 2. whoami Florian Latzel ● @fl3a ● http://netzaffe.de ● http://is-loesungen.de features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    2
  • 3. whoami: f – l – 3 – what?! ● @fl3a → flEa features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    3
  • 4. whoami: f – l – 3 – what?! ● @fl3a → flea [fliː] features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    4
  • 5. whoami: f – l – 3 – what?! ● @fl3a → flea [fliː] features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    5
  • 6. whoami: f – l – 3 – what?! ● @fl3a → flea [fliː] features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    6
  • 7. whoami: fl3a → flEa → flea → floh... ● @fl3a → floh features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    7
  • 8. cat features+/toc.txt ● Questions ● Conclusion ● Features ● Drupal API ● Drush ● Installation profiles ● The Plus features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    8
  • 9. Questions: What is stored where? Filesystem: Database: ● Code ● Drupal Settings ● Code Settings ● Modules Settings ● Content Types ● Content ● Views ● Rules ● ... features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    9
  • 10. Questions: What is exportable* right now? Filesystem: Database: ● Code ● Drupal Settings ● Code Settings ● Modules Settings ● Content Types ● Content *(and importable) ● Views ● Rules ● ... features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    10
  • 11. Questions: How to cooperate with a team*? ● Working together on live? ● Working with ftp? ● Sharing sqldumps? ● Overwriting others' work? *(Perhaps a distributed team) features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    11
  • 12. Questions: How to handle the staging issue? Everything works on dev. Now what? ● Install modules again on stage ● Export Views, Rules, CT's manually from dev* ● Import them manually into stage * Also possible via code for Rules[1] and Views[2] features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    12
  • 13. Questions: How to handle the staging issue? Reproduce „unexportable“ functionality manually: ● Module Settings / Configuration ● Roles and its Permissions ● And so on ... features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    13
  • 14. Conclusion ● Not a good strategy for a team... ● No granularity... ● Mostly cumbersome work... ● Hard to use repeating patterns... ● Prone to errors... ● No revision history... ● No VCS / SCM... features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    14
  • 16. features: The Features Module Features http://drupal.org/project/features Requires ctools http://drupal.org/project/ctools ● Uses the ctools export API ● Export functionality and configuration into code ● Code means Drupal Module features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    16
  • 17. features: What can it handle? Drupal Core: ● CCK Fields ● CCK Fieldgroups ● Content Types ● Dependencies (required modules) ● Menus and Menu links* ● Permissions ● Roles ● Taxonomy (Vocabularies)* * Currently in development. features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    17
  • 18. features: What can it handle? Contributed Modules: ● Context ● ImageCache ● CKEditor Profiles ● Panels (Page Manager) ● Feeds ● Rules ● Flags (from 6.x-2.x) ● Views features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    18
  • 19. features: What is missing? ● Configuration ● Custom Blocks ● Input Formats ● Content features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    19
  • 20. features: Rule #35? Rule #35: "There's a Drupal module for that." [3] features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    20
  • 21. features: Rule #35 ­ Configuration Strongarm http://drupal.org/project/strongarm ● Settings are usually stored in {variables} ● Strongarm makes variables exportable via features ● Uses the ctools export API features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    21
  • 22. features: Rule #35 ­ Boxes Boxes http://drupal.org/project/boxes ● A reimplementation of custom blocks (boxes) ● Uses the ctools export API features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    22
  • 24. features: Rule #35 ­ Content Nodes, Node revisions, User, Taxonomy http://drupal.org/project/uuid_features ● Requires uuid → Universally Unique Identifier http://drupal.org/project/uuid ● e.g. node/259 gets the following uuid: f3159efc-3e1c-102e-882c-fd9c148d8804 features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    24
  • 25. Features: Rule #35 ­ import formats  Input Formats http://drupal.org/project/input_formats ● Allows you to export / import Input Formats manually like CT's and Views ● Features Module Integration ● Requires Exportables http://drupal.org/project/exportables ● Requires Strongarm and Ctools, too features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    25
  • 26. features: myfeature A Profile CT with... ● content_profile ● cck_private_fields ● flag_friend, flag_friend_access ● content_taxonomy ● And a lot of fields... features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    26
  • 27. features: myfeature myfeature/ ├── myfeature.features.content.inc ├── myfeature.features.fieldgroup.inc ├── myfeature.features.inc ├── myfeature.info ├── myfeature.module └── myfeature.strongarm.inc features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    27
  • 28. Features: myfeature.info core = "6.x" dependencies[] = "cck_private_fields" dependencies[] = "cck_private_fields_flag_friend" dependencies[] = "content_profile" ... description = "Myfeature desciption" features[ctools][] = "strongarm:strongarm:1" ... features[fieldgroup][] = "profile-group_personal" ... features[node][] = "profile" ... features[user_permission][] = "edit own profile content" features[user_permission][] = "edit privacy options for field field_relations features[user_permission][] = "view private data for field field_relationship ... features[user_role][] = "Community member" features[variable][] = "comment_anonymous_profile" ... name = "myfeature" package = "Features" features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    28
  • 30. Features: myfeature.features.inc (1) <?php /** * Implementation of hook_ctools_plugin_api(). */ function myfeature_ctools_plugin_api() { list($module, $api) = func_get_args(); if ($module == "strongarm" && $api == "strongarm") { return array("version" => 1); } } features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    30
  • 31. Features: myfeature.features.inc (2) /** * Implementation of hook_node_info(). */ function myfeature_node_info() { $items = array( 'profile' => array( 'name' => t('Profile'), 'module' => 'features', 'description' => t('A user profile built as content.'), 'has_title' => '1', 'title_label' => t('Title'), 'has_body' => '0', 'body_label' => '', 'min_word_count' => '0', 'help' => '', ), ); return $items; } features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    31
  • 32. Features: myfeature.features.inc <?php /** * Implementation of hook_ctools_plugin_api(). */ function myfeature_ctools_plugin_api() { list($module, $api) = func_get_args(); if ($module == "strongarm" && $api == "strongarm") { return array("version" => 1); } } features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    32
  • 33. features: myfeature.features.content.inc <?php /** * Implementation of hook_content_default_fields(). */ function myfeature_content_default_fields() { $fields = array(); ... // Exported field: field_relationship_status $fields['profile-field_relationship_status'] = array( 'field_name' => 'relationship_status', 'type_name' => 'profile', 'display_settings' => array( 'weight' => '37', 'parent' => 'group_common, 'label' => array( 'format' => 'above', ), ... 'allowed_values' => 'solo^M In a relationship^M complicated', ... 'label' => 'relationship status', ); } features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    33
  • 34. features: Specifications Kit [4] ● KIT Feature Specification (kitf 1.0-draft) ● KIT Theme Specification (kitt 1.0-draft) features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    34
  • 35. features: Known Issues Lost in translation [5]... ● e.g. a field is named 'Beziehungsstatus' ● e.g. in your myfeature.content.inc you will get: t('Beziehungsstatus') that will be used as translation source ● but it should be t('relationship status') ● Still a open issue in Features Module [6] ● Solution: Features Export Language [7] features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    35
  • 36. Drupal API: If a feature is not enough...  You know, Drupal has an API... Create Upgrade-Path's with Drupal's update.php ● Create myfeature.install file ● Implement hook_install() http://api.drupal.org/api/drupal/developer--hooks--install.php/function/hook_install/6 ● Implement hook_update_N() http://api.drupal.org/api/drupal/developer--hooks--install.php/function/hook_update_N/6 Perhaps you might use db_query() or implement hook_you_name_it() features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    36
  • 38. drush fu Features Module provides some drush commands: ● drush features ● drush features-export [feature name] [component list] ● drush features-update [feature name] ● drush features-revert [feature name] ● drush features-diff [feature name] features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    38
  • 39. drush: Useful features related extensions ● Features Clone http://drupal.org/project/features_clone ● Features Plumber http://drupal.org/project/features_plumber ● Features Fetch http://drupal.org/project/features_fetch features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    39
  • 40. Installation profiles You might know Installation Profiles from... ● DrupalCenter ● OpenAtrium ● Acquia Drupal ● Commons ● Open Publish ● ... features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    40
  • 41. Installation Profiles: myprofile drupal-6.x/ ├── COPYRIGHT.txt ├── cron.php ├── includes ├── index.php ├── install.php ├── misc ├── modules ├── profiles │ ├── default │ │ └── default.profile │ └── myprofile │ ├── myprofile.profile │ └── translations │ └── de.po ├── robots.txt ├── scripts ├── sites ├── themes ├── update.php └── xmlrpc.php features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    41
  • 42. Installation Profile: myprofile.profile /** * Implementation of hook_profile_modules() * * @return * array of modules to be required and activated */ function myprofile_profile_modules(){ return array( // feature-stuff 'myfeature', … ); } features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    42
  • 43. The Plus ● Perhaps your own Drupal Distribution? ● Feature Server http://drupal.org/project/fserver ● Drush Make http://drupal.org/project/drush_make ● Drush make UI http://drupal.org/project/drush_make_ui ● drush site-install (in drush core >= 4.0) ● CI – Continious Integration (with e.g. Hudson / Jenkins) features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel    43
  • 44. cat ~/feature+/appendix/references.txt [1] http://drupal.org/node/298634 [2] http://api.lullabot.com/hook_views_default_views [3] Robert Douglass at DrupalCamp Stockholm http://twitter.com/#!/toddross/statuses/1970578988 [4] http://drupal.org/project/kit [5] http://blog.erdfisch.de/2011/05/features-international [6] http://drupal.org/node/874760 [7] http://drupal.org/sandbox/xamanu/1161994 features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel   
  • 45. cat ~/feature+/appendix/image­credits.txt ● Flea (RHCP) http://en.wikipedia.org/wiki/File:Flea_in_skeleton_t-shirt.jpg ● Flea (anatomy) http://en.wikipedia.org/wiki/File:Scheme_flea_anatomy-en.svg ● Feature Monster http://drupal.org/files/images/features_monster.png ● The future of drupal features http://www.flickr.com/photos/developmentseed/3575550279/ ● Strongarm Monster http://drupal.org/files/images/strongarm.png ● Boxes Monster http://drupal.org/node/820924 ● „Node Collision“ http://www.slideshare.net/eaton/drupal-deployment-presentation ● Adrian <3 drush http://www.flickr.com/photos/developmentseed/3614279203/ Feature related images by developmentSEED, monsters by Saman Bemel Benrud features+ | 2011­07­07 | DUB – Drupal Usergroup Berlin | ISL Florian Latzel