SlideShare a Scribd company logo
1 of 84
Download to read offline
How to R.E.A.D 
Steps for selecting the correct module. 
#PatchOrCustom, #justREAD
Who You Are. 
• Site Builder 
• Developer 
• Decision Maker 
• New to Drupal 
! 
• Want to re-enforce habits
What’s it all about. 
How to quickly make smart, informed decisions.
What we’ll cover. 
• Steps to decide between a contrib, patched or 
custom module. 
• Basics of patching. 
• Basics of writing a module.
Michael Miles 
• Associate Director of PHP @ Genuine Interactive. 
• Drank the Drupal Kool-aid in 2008. (it’s grape flavored) 
! 
• Twitter: @mikemiles86 
• D.o: mikemiles86 
@WeAreGenuine
A lover of memes.
How to R.E.A.D! 
(yay acr!onyms!)
R.E.A.D 
• Research what exists. 
• Evaluate the options. 
• Analyze the gap. 
• Determine amount of change. 
#justREAD
Research what exists.
Research what exists. 
• Isolate keywords about functionality. 
• Search for existing modules. 
• Use the community.
Evaluate the options.
Evaluate the options. 
• Read the module description. 
• Look at community adoption. 
• Look at maintainer activity.
Analyze the gap.
Analyze the gap. 
• Download and test the module. 
• Discover missing functionality. 
• Check issue queue for solutions.
Patch not found.
Determine amount of change.
Determine amount of change. 
• Review the module code. 
• Estimate how much has to be changed. 
• Do changes extend or alter module?
Let’s review. 
Like developers…
Research.! 
Find modules? 
Evaluate.! 
find best 
fit? 
Analyze.! 
is there a 
gap? 
Use community solutions. 
Determine.! 
big change? 
Build a custom module. 
Use existing module. 
Community 
solutions 
exist? 
Patch. 
YES YES YES 
YES 
NO NO 
NO NO 
YES 
NO 
…Flow Chart FTW!
Research.! 
Find modules? 
Evaluate.! 
find best 
fit? 
Analyze.! 
is there a 
gap? 
Use community solutions. 
Determine.! 
big change? 
Build a custom module. 
Use existing module. 
Community 
solutions 
exist? 
Patch. 
YES YES YES 
YES 
NO NO 
NO NO 
YES 
NO 
…Flow Chart FTW!
Examples.
Scenario #1.
The Requirements. 
WHEN SAVING A FILE 
AND IT IS A JPEG IMAGE 
THEN THE EXIF META DATA NEEDS TO BE CAPTURED 
AND MAPPED TO CUSTOM FIELDS 
AND THESE MAPPINGS NEED TO BE EXPORTABLE USING 
FEATURES 
!
Step 1 
Research what exists.
WHEN SAVING A FILE 
Research what exists. 
AND IT IS A JPEG IMAGE 
THEN THE EXIF META DATA NEEDS TO BE CAPTURED 
AND MAPPED TO CUSTOM FIELDS 
AND THESE MAPPINGS NEED TO BE EXPORTABLE USING 
FEATURES. 
! 
Isolate keywords about functionality.
Research what exists. 
Search for existing modules.
Research what exists. 
Talk to the community. 
IRC: #drupal, #drupal-support
Research what exists. 
Find possible existing solutions 
• The Exif module 
• The Exif custom module
Step 2 
Evaluate the options.
Evaluate the options 
Read the module description.
Evaluate the options 
Look at community adoption. 
Exif 
Exif Custom
Evaluate the options 
Look at maintainer activity.
Evaluate the options 
Determine best fit.
Step 3 
Analyze the gap.
Analyze the gap. 
Download and test the module.
Analyze the gap. 
Discover missing functionality.
Analyze the gap. 
Check issue queue for solutions.
Step 4 
Determine amount of change.
Determine amount of change. 
Review the module code.
Determine amount of change. 
Estimate how much has to be changed. 
• Requires little rewriting of code base. 
• Need to add new hooks and one new file.
Determine amount of change. 
Will changes extend or alter the module?
Which path to choose? 
• Patch Exif Custom module 
! 
• Write own Exif module
PATCH!
What is a Patch? 
• drupal.org/patch 
• A structured list of changes to a file. 
• Used to re-create changes to a files. 
• Focus on a single change.
How to create a Patch. 
• Clone module repository. 
• Create a new branch. 
• Make changes to code. 
• Test changes. 
• Generate the patch.
Clone module repository. 
mm:~$ git clone --branch 7.x-1.x http://git.drupal.org/project/exif_custom.git
Create a branch. 
mm:exif_custom$ git checkout -b patch/features_integration
Make changes.
Test changes.
Create the patch file. 
mm:exif_custom$ git diff 7.x-1.x > exif_custom-features_integration.patch
How to submit a Patch. 
• Create/Comment on an issue. 
• Attach the patch. 
• [description]-[issue-number]-[comment-number].patch 
• Revise based on testing/reviews.
Create an issue.
Attach the patch. 
[description]-[issue-number]-[comment-number].patch
Contributing back to the community.
Scenario #2.
The Requirements. 
WHEN SITE USES WORKBENCH TO MODERATE CONTENT 
THEN CAN CREATE MULTIPLE TRANSITIONS BETWEEN STATES 
AND TRANSITIONS ARE EXPORTABLE USING FEATURES 
! 
WHEN EDITNG A CONTENT REVISION 
THEN CAN SCHEDULE A TRANSITION 
AND CAN SELECT DATE FOR FIRST STATE 
AND CAN SELECT DATE FOR SECOND STATE
Step 1 
Research what exists.
Research what exists. 
Isolate keywords about functionality. 
WHEN SITE USES WORKBENCH TO MODERATE CONTENT 
THEN CAN CREATE MULTIPLE TRANSITIONS BETWEEN STATES 
AND TRANSITIONS ARE EXPORTABLE USING FEATURES 
! 
WHEN EDITNG A CONTENT REVISION 
THEN CAN SCHEDULE A TRANSITION 
AND CAN SELECT DATE FOR FIRST STATE 
AND CAN SELECT DATE FOR SECOND STATE
Research what exists. 
Search for existing modules.
Step 2 
Evaluate the options.
Evaluate the options 
Read the module description.
Evaluate the options 
Look at community adoption.
Evaluate the options 
Look at maintainer activity.
Step 3 
Analyze the gap.
Analyze the gap. 
Download and test the module.
Analyze the gap. 
Discover missing functionality. 
• Unable to create different transitions per type 
• Unable to select different transitions for revisions 
• No features integration.
Step 4 
Determine amount of change.
Determine amount of change. 
Review the module code.
Determine amount of change. 
Estimate how much has to be changed. 
• Will need to change how transitions are created. 
• Will need to change how schedules are stored. 
• Will need to add features integration.
Determine amount of change. 
Will changes extend or alter the module?
Which path to choose? 
• Patch Scheduler workbench module 
! 
• Write own scheduler module
CUSTOM MODULE!
Module Writing Guidelines. 
• drupal.org/developing/modules 
• Follow Drupal coding standards. 
• Make use of hooks and APIs. 
• Test your code.
Contributing a module. 
• Is it functionality other could use? 
• Name appropriately. 
• Provide accurate description. 
• Be an active maintainer.
Name appropriately.
Provide detailed description.
Be an active maintainer.
Free QA and improvements from community.
How to R.E.A.D. 
• Research what exists. 
• Evaluate the options. 
• Analyze the gap. 
• Determine amount of change. 
#justREAD
Thank You! 
@mikemiles86

More Related Content

Similar to How to R.E.A.D: Steps for how to select the correct module @NEWDCamp 2014

Reviewing CPAN modules
Reviewing CPAN modulesReviewing CPAN modules
Reviewing CPAN modules
neilbowers
 

Similar to How to R.E.A.D: Steps for how to select the correct module @NEWDCamp 2014 (20)

CPAN Curation
CPAN CurationCPAN Curation
CPAN Curation
 
33rd degree talk: open and automatic coding conventions with walkmod
33rd degree talk: open and automatic coding conventions with walkmod33rd degree talk: open and automatic coding conventions with walkmod
33rd degree talk: open and automatic coding conventions with walkmod
 
Drupal upgrades and migrations. BAD Camp 2013 version
Drupal upgrades and migrations. BAD Camp 2013 versionDrupal upgrades and migrations. BAD Camp 2013 version
Drupal upgrades and migrations. BAD Camp 2013 version
 
Design p atterns
Design p atternsDesign p atterns
Design p atterns
 
Eurosport's Kodakademi #2
Eurosport's Kodakademi #2Eurosport's Kodakademi #2
Eurosport's Kodakademi #2
 
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
 
MOSKitt Extensibility. Mutatis mutandis
MOSKitt Extensibility. Mutatis mutandisMOSKitt Extensibility. Mutatis mutandis
MOSKitt Extensibility. Mutatis mutandis
 
Modern Module Development
Modern Module DevelopmentModern Module Development
Modern Module Development
 
Search api d8
Search api d8Search api d8
Search api d8
 
Passport to DITA Implementation CIDM April 2017
Passport to DITA Implementation CIDM April 2017Passport to DITA Implementation CIDM April 2017
Passport to DITA Implementation CIDM April 2017
 
Git Going w/ Git
Git Going w/ GitGit Going w/ Git
Git Going w/ Git
 
Drupal 8 Deep Dive: Plugin System
Drupal 8 Deep Dive: Plugin SystemDrupal 8 Deep Dive: Plugin System
Drupal 8 Deep Dive: Plugin System
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Object Oriented Programming in Swift Ch0 - Encapsulation
Object Oriented Programming in Swift Ch0 - EncapsulationObject Oriented Programming in Swift Ch0 - Encapsulation
Object Oriented Programming in Swift Ch0 - Encapsulation
 
Badcamp 2015 - R.E.A.D: Four Steps for Selecting The Right Modules
Badcamp 2015 - R.E.A.D: Four Steps for Selecting The Right ModulesBadcamp 2015 - R.E.A.D: Four Steps for Selecting The Right Modules
Badcamp 2015 - R.E.A.D: Four Steps for Selecting The Right Modules
 
Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Reviewing CPAN modules
Reviewing CPAN modulesReviewing CPAN modules
Reviewing CPAN modules
 
Few minutes To better Code - Refactoring
Few minutes To better Code - RefactoringFew minutes To better Code - Refactoring
Few minutes To better Code - Refactoring
 
Clean code presentation
Clean code presentationClean code presentation
Clean code presentation
 

More from Michael Miles

More from Michael Miles (18)

Inclusive Design: Thinking beyond accessibility
Inclusive Design: Thinking beyond accessibilityInclusive Design: Thinking beyond accessibility
Inclusive Design: Thinking beyond accessibility
 
How to Foster Team Success
How to Foster Team SuccessHow to Foster Team Success
How to Foster Team Success
 
How to Foster Team Success | Drupalcon 2017
How to Foster Team Success | Drupalcon 2017How to Foster Team Success | Drupalcon 2017
How to Foster Team Success | Drupalcon 2017
 
Inclusive Design: Thinking Beyond Accessibility | NERDSummit 2017
Inclusive Design: Thinking Beyond Accessibility | NERDSummit 2017Inclusive Design: Thinking Beyond Accessibility | NERDSummit 2017
Inclusive Design: Thinking Beyond Accessibility | NERDSummit 2017
 
Inclusive Design: Thinking Beyond Accessibility | DCNL 2017
Inclusive Design: Thinking Beyond Accessibility | DCNL 2017Inclusive Design: Thinking Beyond Accessibility | DCNL 2017
Inclusive Design: Thinking Beyond Accessibility | DCNL 2017
 
The Flexibility of Drupal 8 | DCNLights 2017
The Flexibility of Drupal 8 | DCNLights 2017The Flexibility of Drupal 8 | DCNLights 2017
The Flexibility of Drupal 8 | DCNLights 2017
 
Drupal8Day: Demystifying Drupal 8 Ajax Callback commands
Drupal8Day: Demystifying Drupal 8 Ajax Callback commandsDrupal8Day: Demystifying Drupal 8 Ajax Callback commands
Drupal8Day: Demystifying Drupal 8 Ajax Callback commands
 
INCLUSIVE DESIGN: Going beyond Accessibility
INCLUSIVE DESIGN: Going beyond AccessibilityINCLUSIVE DESIGN: Going beyond Accessibility
INCLUSIVE DESIGN: Going beyond Accessibility
 
Inclusive Design
Inclusive DesignInclusive Design
Inclusive Design
 
The Flexibility of Drupal 8
The Flexibility of Drupal 8The Flexibility of Drupal 8
The Flexibility of Drupal 8
 
Demystifying AJAX Callback Commands in Drupal 8
Demystifying AJAX Callback Commands in Drupal 8Demystifying AJAX Callback Commands in Drupal 8
Demystifying AJAX Callback Commands in Drupal 8
 
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
 
The Flexibility of Drupal
The Flexibility of DrupalThe Flexibility of Drupal
The Flexibility of Drupal
 
The Flexibility of Drupal
The Flexibility of DrupalThe Flexibility of Drupal
The Flexibility of Drupal
 
Demystifying Drupal AJAX Callback Commands
Demystifying Drupal AJAX Callback CommandsDemystifying Drupal AJAX Callback Commands
Demystifying Drupal AJAX Callback Commands
 
NYCCAMP 2015 Demystifying Drupal AJAX Callback Commands
NYCCAMP 2015 Demystifying Drupal AJAX Callback CommandsNYCCAMP 2015 Demystifying Drupal AJAX Callback Commands
NYCCAMP 2015 Demystifying Drupal AJAX Callback Commands
 
The Flexibility of Drupal
The Flexibility of DrupalThe Flexibility of Drupal
The Flexibility of Drupal
 
Flcamp2015 - R.E.A.D: Four steps for selecting the right modules
Flcamp2015 - R.E.A.D: Four steps for selecting the right modulesFlcamp2015 - R.E.A.D: Four steps for selecting the right modules
Flcamp2015 - R.E.A.D: Four steps for selecting the right modules
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 

How to R.E.A.D: Steps for how to select the correct module @NEWDCamp 2014