SlideShare a Scribd company logo
1 of 70
Download to read offline
2011-09-18 @ drupalcity.de

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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     1
whoami


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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     2
whoami: f – l – 3 – what?!



 ●   @fl3a → flEa




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     3
whoami: f – l – 3 – what?!



 ●   @fl3a → flea [fliː]




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     4
whoami: f – l – 3 – what?!



 ●   @fl3a → flea [fliː]




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     5
whoami: f – l – 3 – what?!



 ●   @fl3a → flea [fliː]




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     6
whoami: fl3a → flEa → flea → floh...



 ●   @fl3a → floh




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     7
cat features+/toc.txt


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



    features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     8
Questions: What is stored where?


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


features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     10
Questions...




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     11
Questions: How to cooperate with a team*?

●   Working together on live?




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     12
Questions: How to cooperate with a team*?

●   Working together on live?
●   Working with ftp?




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     13
Questions: How to cooperate with a team*?

●   Working together on live?
●   Working with ftp?
●   Sharing sqldumps?




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     14
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     15
Questions: How to handle the staging issue?


Everything works on dev. Now what?




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     16
Questions: How to handle the staging issue?


Everything works on dev. Now what?
●   Install modules again on stage




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     17
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*




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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     18
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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     19
Questions: How to handle the staging issue?


Whats about the „unexportable“ functionality?




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     20
Questions: How to handle the staging issue?


Whats about the „unexportable“ functionality?
Reproduce manually!




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     21
Questions: How to handle the staging issue?


Whats about the „unexportable“ functionality?
Reproduce manually:
●   Module Settings / Configuration




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     22
Questions: How to handle the staging issue?


Whats about the „unexportable“ functionality?
Reproduce manually:
●   Module Settings / Configuration
●   Roles and its Permissions




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     23
Questions: How to handle the staging issue?


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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     24
Questions: How to handle the staging issue?


Whats about the „unexportable“ functionality?
Reproduce manually:
●   Module Settings / Configuration
●   Roles and its Permissions
●   And so on...
●   Ooops, i forgot the live environment, repeat....




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     25
Conclusion




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     26
Conclusion

●   Not a good strategy for a team...




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     27
Conclusion

●   Not a good strategy for a team...
●   No granularity...




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     28
Conclusion

●   Not a good strategy for a team...
●   No granularity...
●   Mostly cumbersome work...




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     29
Conclusion

●   Not a good strategy for a team...
●   No granularity...
●   Mostly cumbersome work...
●   Hard to use repeating patterns...




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     30
Conclusion

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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     31
Conclusion

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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     32
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     33
features




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     34
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     35
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     36
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     37
features: What is missing?


●   Configuration
●   Custom Blocks
●   Input Formats
●   Content




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     38
features: Rule #35?


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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     39
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     40
features: Rule #35 ­ Boxes


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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     41
features: Rule #35 ­ Content




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     42
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     43
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     44
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     45
features: myfeature


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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     46
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     47
features: myfeature.module


 <?php

 include_once('myfeature.features.inc');




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     48
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     49
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     50
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     51
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     52
features: Specifications


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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     53
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     54
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de              55
drush




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     56
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     57
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     58
Installation profiles


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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     59
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     60
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     61
The Plus

●   Perhaps your own Drupal Distribution?




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     62
The Plus

●   Perhaps your own Drupal Distribution?
●   Feature Server
    http://drupal.org/project/fserver




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     63
The Plus

●   Perhaps your own Drupal Distribution?
●   Feature Server
    http://drupal.org/project/fserver
●   Drush Make
    http://drupal.org/project/drush_make




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     64
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




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     65
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)



features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     66
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     67
echo ­e “Thank you!n“


Questions?
 ●   @fl3a
 ●   http://is-loesungen.de
 ●   http://netzaffe.de




features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de     68
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de  
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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de  

More Related Content

What's hot

Drupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of TartuDrupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of TartuRené Lasseron
 
Drupal migrations in 2018 - presentation at DrupalCon in Nashville
Drupal migrations in 2018 - presentation at DrupalCon in NashvilleDrupal migrations in 2018 - presentation at DrupalCon in Nashville
Drupal migrations in 2018 - presentation at DrupalCon in NashvilleIrina Zaks
 
The OpenEuropa Initiative
The OpenEuropa InitiativeThe OpenEuropa Initiative
The OpenEuropa InitiativeNuvole
 
Doctrine Php Object Relational Mapper
Doctrine Php Object Relational MapperDoctrine Php Object Relational Mapper
Doctrine Php Object Relational Mapperguesta3af58
 
Introduction to Module Development (Drupal 7)
Introduction to Module Development (Drupal 7)Introduction to Module Development (Drupal 7)
Introduction to Module Development (Drupal 7)April Sides
 
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...Amplexor
 
Content migration - CSV to Drupal 8
Content migration -  CSV to Drupal 8Content migration -  CSV to Drupal 8
Content migration - CSV to Drupal 8Hector Iribarne
 

What's hot (10)

Drupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of TartuDrupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of Tartu
 
Drupal migrations in 2018 - presentation at DrupalCon in Nashville
Drupal migrations in 2018 - presentation at DrupalCon in NashvilleDrupal migrations in 2018 - presentation at DrupalCon in Nashville
Drupal migrations in 2018 - presentation at DrupalCon in Nashville
 
The OpenEuropa Initiative
The OpenEuropa InitiativeThe OpenEuropa Initiative
The OpenEuropa Initiative
 
Using Features
Using FeaturesUsing Features
Using Features
 
Doctrine Php Object Relational Mapper
Doctrine Php Object Relational MapperDoctrine Php Object Relational Mapper
Doctrine Php Object Relational Mapper
 
Introduction to Module Development (Drupal 7)
Introduction to Module Development (Drupal 7)Introduction to Module Development (Drupal 7)
Introduction to Module Development (Drupal 7)
 
Drupal in-depth
Drupal in-depthDrupal in-depth
Drupal in-depth
 
2014 hadoop wrocław jug
2014 hadoop   wrocław jug2014 hadoop   wrocław jug
2014 hadoop wrocław jug
 
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
 
Content migration - CSV to Drupal 8
Content migration -  CSV to Drupal 8Content migration -  CSV to Drupal 8
Content migration - CSV to Drupal 8
 

Similar to features+ #dcb11

Plone Intranet under the hood
Plone Intranet under the hoodPlone Intranet under the hood
Plone Intranet under the hoodGuido Stevens
 
UX challenges of a UI-centric config management tool
UX challenges of a UI-centric config management toolUX challenges of a UI-centric config management tool
UX challenges of a UI-centric config management toolRUDDER
 
Engage 2018 adm04 - The lazy admin wins
Engage 2018   adm04 - The lazy admin winsEngage 2018   adm04 - The lazy admin wins
Engage 2018 adm04 - The lazy admin winsMatteo Bisi
 
Engage 2018 adm04 The lazy admin wins
Engage 2018   adm04 The lazy admin winsEngage 2018   adm04 The lazy admin wins
Engage 2018 adm04 The lazy admin winsFactor-y S.r.l.
 
Drupal 7 - More than a Simple CMS
Drupal 7 - More than a Simple CMSDrupal 7 - More than a Simple CMS
Drupal 7 - More than a Simple CMSMarco Lancellotti
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master BuilderPhilip Norton
 
XPages Blast - Ideas, Tips and More
XPages Blast - Ideas, Tips and MoreXPages Blast - Ideas, Tips and More
XPages Blast - Ideas, Tips and MoreTeamstudio
 
Pythonsevilla2019 - Introduction to MLFlow
Pythonsevilla2019 - Introduction to MLFlowPythonsevilla2019 - Introduction to MLFlow
Pythonsevilla2019 - Introduction to MLFlowFernando Ortega Gallego
 
Drupal Day 2011 - Features: una vita felice
Drupal Day 2011 - Features: una vita feliceDrupal Day 2011 - Features: una vita felice
Drupal Day 2011 - Features: una vita feliceDrupalDay
 
Choosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management FrameworkChoosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management FrameworkMediacurrent
 
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
 
Drupalmonitor.com - Drupal User Group Meetup Basel
Drupalmonitor.com - Drupal User Group Meetup BaselDrupalmonitor.com - Drupal User Group Meetup Basel
Drupalmonitor.com - Drupal User Group Meetup BaselNETNODE AG
 
Making your first contribution to Foreman
Making your first contribution to ForemanMaking your first contribution to Foreman
Making your first contribution to ForemanDominic Cleal
 
(some) Drupal Theming by Ryan Price
(some) Drupal Theming by Ryan Price(some) Drupal Theming by Ryan Price
(some) Drupal Theming by Ryan PriceRyan Price
 
DITA on a Shoe String
DITA on a Shoe StringDITA on a Shoe String
DITA on a Shoe StringStan Doherty
 
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...Puppet
 
Your first d8 module
Your first d8 moduleYour first d8 module
Your first d8 moduletedbow
 

Similar to features+ #dcb11 (20)

Plone Intranet under the hood
Plone Intranet under the hoodPlone Intranet under the hood
Plone Intranet under the hood
 
UX challenges of a UI-centric config management tool
UX challenges of a UI-centric config management toolUX challenges of a UI-centric config management tool
UX challenges of a UI-centric config management tool
 
Engage 2018 adm04 - The lazy admin wins
Engage 2018   adm04 - The lazy admin winsEngage 2018   adm04 - The lazy admin wins
Engage 2018 adm04 - The lazy admin wins
 
Engage 2018 adm04 The lazy admin wins
Engage 2018   adm04 The lazy admin winsEngage 2018   adm04 The lazy admin wins
Engage 2018 adm04 The lazy admin wins
 
Drupal 7 - More than a Simple CMS
Drupal 7 - More than a Simple CMSDrupal 7 - More than a Simple CMS
Drupal 7 - More than a Simple CMS
 
Drupal 7: More than a simple CMS
Drupal 7: More than a simple CMSDrupal 7: More than a simple CMS
Drupal 7: More than a simple CMS
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master Builder
 
XPages Blast - Ideas, Tips and More
XPages Blast - Ideas, Tips and MoreXPages Blast - Ideas, Tips and More
XPages Blast - Ideas, Tips and More
 
Pythonsevilla2019 - Introduction to MLFlow
Pythonsevilla2019 - Introduction to MLFlowPythonsevilla2019 - Introduction to MLFlow
Pythonsevilla2019 - Introduction to MLFlow
 
Drupal Day 2011 - Features: una vita felice
Drupal Day 2011 - Features: una vita feliceDrupal Day 2011 - Features: una vita felice
Drupal Day 2011 - Features: una vita felice
 
Praes
PraesPraes
Praes
 
Choosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management FrameworkChoosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management Framework
 
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 ...
 
Devops For Drupal
Devops  For DrupalDevops  For Drupal
Devops For Drupal
 
Drupalmonitor.com - Drupal User Group Meetup Basel
Drupalmonitor.com - Drupal User Group Meetup BaselDrupalmonitor.com - Drupal User Group Meetup Basel
Drupalmonitor.com - Drupal User Group Meetup Basel
 
Making your first contribution to Foreman
Making your first contribution to ForemanMaking your first contribution to Foreman
Making your first contribution to Foreman
 
(some) Drupal Theming by Ryan Price
(some) Drupal Theming by Ryan Price(some) Drupal Theming by Ryan Price
(some) Drupal Theming by Ryan Price
 
DITA on a Shoe String
DITA on a Shoe StringDITA on a Shoe String
DITA on a Shoe String
 
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
 
Your first d8 module
Your first d8 moduleYour first d8 module
Your first d8 module
 

More from Florian Latzel

Eine Einführung in Scrum
Eine Einführung in ScrumEine Einführung in Scrum
Eine Einführung in ScrumFlorian Latzel
 
Agiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumAgiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumFlorian Latzel
 
Agiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumAgiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumFlorian Latzel
 
Drupal 6.x, Drupal 7.x -- Scratching the surface
Drupal 6.x, Drupal 7.x -- Scratching the surfaceDrupal 6.x, Drupal 7.x -- Scratching the surface
Drupal 6.x, Drupal 7.x -- Scratching the surfaceFlorian 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
 
drush_multi @ DrupalDevDays 2010
drush_multi @ DrupalDevDays 2010drush_multi @ DrupalDevDays 2010
drush_multi @ DrupalDevDays 2010Florian Latzel
 
Drush und Multisite: drush_multi
Drush und Multisite: drush_multiDrush und Multisite: drush_multi
Drush und Multisite: drush_multiFlorian Latzel
 
Drush – Das Sackmesser für die Kommandozeile
Drush – Das Sackmesser für die KommandozeileDrush – Das Sackmesser für die Kommandozeile
Drush – Das Sackmesser für die KommandozeileFlorian Latzel
 

More from Florian Latzel (8)

Eine Einführung in Scrum
Eine Einführung in ScrumEine Einführung in Scrum
Eine Einführung in Scrum
 
Agiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumAgiles Projektmanagement mit Scrum
Agiles Projektmanagement mit Scrum
 
Agiles Projektmanagement mit Scrum
Agiles Projektmanagement mit ScrumAgiles Projektmanagement mit Scrum
Agiles Projektmanagement mit Scrum
 
Drupal 6.x, Drupal 7.x -- Scratching the surface
Drupal 6.x, Drupal 7.x -- Scratching the surfaceDrupal 6.x, Drupal 7.x -- Scratching the surface
Drupal 6.x, Drupal 7.x -- Scratching the surface
 
Scrum aus der Praxis - DrupalDevDays 2010
Scrum aus der Praxis - DrupalDevDays 2010Scrum aus der Praxis - DrupalDevDays 2010
Scrum aus der Praxis - DrupalDevDays 2010
 
drush_multi @ DrupalDevDays 2010
drush_multi @ DrupalDevDays 2010drush_multi @ DrupalDevDays 2010
drush_multi @ DrupalDevDays 2010
 
Drush und Multisite: drush_multi
Drush und Multisite: drush_multiDrush und Multisite: drush_multi
Drush und Multisite: drush_multi
 
Drush – Das Sackmesser für die Kommandozeile
Drush – Das Sackmesser für die KommandozeileDrush – Das Sackmesser für die Kommandozeile
Drush – Das Sackmesser für die Kommandozeile
 

Recently uploaded

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Recently uploaded (20)

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

features+ #dcb11

  • 1. 2011-09-18 @ drupalcity.de features+ „A Presentation about monsters, features and the plus“ features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   1
  • 2. whoami Florian Latzel ● @fl3a ● http://is-loesungen.de ● http://netzaffe.de features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   2
  • 3. whoami: f – l – 3 – what?! ● @fl3a → flEa features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   3
  • 4. whoami: f – l – 3 – what?! ● @fl3a → flea [fliː] features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   4
  • 5. whoami: f – l – 3 – what?! ● @fl3a → flea [fliː] features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   5
  • 6. whoami: f – l – 3 – what?! ● @fl3a → flea [fliː] features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   6
  • 7. whoami: fl3a → flEa → flea → floh... ● @fl3a → floh features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   7
  • 8. cat features+/toc.txt ● Questions ● Conclusion ● Features ● Drupal API ● Drush ● Installation profiles ● The Plus features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   8
  • 9. Questions: What is stored where? Filesystem: Database: ● Code ● Drupal Settings ● Code Settings ● Modules Settings ● Content Types ● Content ● Views ● Rules ● ... features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   10
  • 12. Questions: How to cooperate with a team*? ● Working together on live? features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   12
  • 13. Questions: How to cooperate with a team*? ● Working together on live? ● Working with ftp? features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   13
  • 14. Questions: How to cooperate with a team*? ● Working together on live? ● Working with ftp? ● Sharing sqldumps? features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   14
  • 15. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   15
  • 16. Questions: How to handle the staging issue? Everything works on dev. Now what? features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   16
  • 17. Questions: How to handle the staging issue? Everything works on dev. Now what? ● Install modules again on stage features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   17
  • 18. 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* * Also possible via code for Rules[1] and Views[2] features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   18
  • 19. 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 features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   19
  • 20. Questions: How to handle the staging issue? Whats about the „unexportable“ functionality? features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   20
  • 21. Questions: How to handle the staging issue? Whats about the „unexportable“ functionality? Reproduce manually! features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   21
  • 22. Questions: How to handle the staging issue? Whats about the „unexportable“ functionality? Reproduce manually: ● Module Settings / Configuration features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   22
  • 23. Questions: How to handle the staging issue? Whats about the „unexportable“ functionality? Reproduce manually: ● Module Settings / Configuration ● Roles and its Permissions features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   23
  • 24. Questions: How to handle the staging issue? Whats about the „unexportable“ functionality? Reproduce manually: ● Module Settings / Configuration ● Roles and its Permissions ● And so on... features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   24
  • 25. Questions: How to handle the staging issue? Whats about the „unexportable“ functionality? Reproduce manually: ● Module Settings / Configuration ● Roles and its Permissions ● And so on... ● Ooops, i forgot the live environment, repeat.... features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   25
  • 27. Conclusion ● Not a good strategy for a team... features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   27
  • 28. Conclusion ● Not a good strategy for a team... ● No granularity... features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   28
  • 29. Conclusion ● Not a good strategy for a team... ● No granularity... ● Mostly cumbersome work... features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   29
  • 30. Conclusion ● Not a good strategy for a team... ● No granularity... ● Mostly cumbersome work... ● Hard to use repeating patterns... features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   30
  • 31. Conclusion ● Not a good strategy for a team... ● No granularity... ● Mostly cumbersome work... ● Hard to use repeating patterns... ● Prone to errors... features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   31
  • 32. Conclusion ● Not a good strategy for a team... ● No granularity... ● Mostly cumbersome work... ● Hard to use repeating patterns... ● Prone to errors... ● No revision history... features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   32
  • 33. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   33
  • 35. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   35
  • 36. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   36
  • 37. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   37
  • 38. features: What is missing? ● Configuration ● Custom Blocks ● Input Formats ● Content features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   38
  • 39. features: Rule #35? Rule #35: "There's a Drupal module for that." [3] features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   39
  • 40. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   40
  • 41. features: Rule #35 ­ Boxes Boxes http://drupal.org/project/boxes ● A reimplementation of custom blocks (boxes) ● Uses the ctools export API features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   41
  • 43. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   43
  • 44. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   44
  • 45. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   45
  • 46. features: myfeature myfeature/ ├── myfeature.features.content.inc ├── myfeature.features.fieldgroup.inc ├── myfeature.features.inc ├── myfeature.info ├── myfeature.module └── myfeature.strongarm.inc features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   46
  • 47. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   47
  • 49. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   49
  • 50. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   50
  • 51. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   51
  • 52. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   52
  • 53. features: Specifications Kit [4] ● KIT Feature Specification (kitf 1.0-draft) ● KIT Theme Specification (kitt 1.0-draft) features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   53
  • 54. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   54
  • 55. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   55
  • 57. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   57
  • 58. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   58
  • 59. Installation profiles You might know Installation Profiles from... ● DrupalCenter ● OpenAtrium ● Acquia Drupal ● Commons ● Open Publish ● ... features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   59
  • 60. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   60
  • 61. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   61
  • 62. The Plus ● Perhaps your own Drupal Distribution? features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   62
  • 63. The Plus ● Perhaps your own Drupal Distribution? ● Feature Server http://drupal.org/project/fserver features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   63
  • 64. The Plus ● Perhaps your own Drupal Distribution? ● Feature Server http://drupal.org/project/fserver ● Drush Make http://drupal.org/project/drush_make features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   64
  • 65. 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 features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   65
  • 66. 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) features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   66
  • 67. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   67
  • 68. echo ­e “Thank you!n“ Questions? ● @fl3a ● http://is-loesungen.de ● http://netzaffe.de features+ | 2011­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de   68
  • 69. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de  
  • 70. 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­09­18 | drupalcity.de | Florian Latzel | http://is­loesungen.de