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

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

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

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

Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Recently uploaded (20)

What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, Ocado
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 

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