SlideShare a Scribd company logo
1 of 27
How to bring your idea to life
and foster adoption by the
community
I Have a Great Idea
For a Drupal Module!
Now What?
Martin Anderson-Clutz
@mandclu
Martin
Anderson-Clutz
@mandclu
@mandclu@drupal.community
This Talk
● Based on my own experience, YMMV
● Intended to help you better define what your module should do,
and why
● A resource guide
● Amount of code === NULL
The BIG IDEA
● What problem are you trying to solve?
● Jakob’s Law
○ What mental models exist in the space?
● Toolkit vs. Solutions
○ Sometimes both are needed!
Proof of Concept (optional)
● Implement the simplest possible, core idea of what you want to achieve
○ Hard code values initially
● A great way to test the overall concept, and collect early feedback
● Motivating to see your idea take shape
Research
● Does this already exist? What similar modules are available?
○ Could a library get me part way?
○ Search drupal.org (and google), use synonyms
● Could this be a new feature on an existing module?
● Are there analogous modules I can use for reference?
● Is there an abandoned project I could take over?
Plan
● What functionality is needed?
○ User stories?
● What should be configurable?
● What existing functionality can I extend?
○ Identify classes or hooks
● What needs to be stored?
○ Config or content entities?
○ Or DB tables?
<code>
Writing Your Code
● Free tools available
○ VS Code for Drupal
● Coding standards are important
○ Lint as you go
● Write automated tests
○ Test-Driven Development
● Drush generators
○ Generate entity
● Get feedback early and often
Get Help
● Your local DUG
● Slack: #module-development
● Contrib Half Hour
● Forums or Stack exchange
● Collaborators?
Your Drupal.org Project
● Start as a sandbox
● Promote to full project when it's ready to share
○ Lint!
● Use the README template
Your Drupal.org Project Page
● Suggested content
● Describe the problem you’re trying to solve
● List key features
● Similar Modules
○ How is yours different?
● Fancy logo?
● Screen captures
Releases
● Start by doing a smaller number of things really well
● Stable releases!
● Grow features over time
○ Listen to user feedback
● Creating a release
● Alpha, beta, etc.
● Semantic versioning
● Opt into security coverage
Spread the Word
● The Weekly Drop
○ Maybe wait until stable, or at least beta
● Blog about it
● Get involved in relevant Slack channels
● Find other people with the problem you started out to solve
● Present!
○ DUGs and camps love new content
● Talking Drupal podcast - Module of the Week
Maintainership
● Be the maintainer you wish all modules had
○ Be responsive
○ Make releases
○ Write documentation
○ Collaborate
● An opportunity to be “the boss”
● Follow your passion
● Learn!
Smart Date
Origin Story
● Initial idea ~2009
○ Bring calendar conventions to Drupal, esp duration concept
● Decided to create a module in early 2019
● Researched existing solutions
○ Found some, reached out
○ Missed some, discussions later
Need For A Field, Module
Editor UX
Performance
Formatting
Timeline
● Apr 3 2019 - sandbox: “Timestamp ranges”
● Apr 18 - project: “Smart Date”
● Apr 19 - alpha1 release
● May 6 - beta1
… other releases ...
● May 24 - blog, beta6
● May 30 - The Weekly Drop
Timeline
● Jun 10 - Decided output structure translation was a stable blocker
● Jun 19 - rc1 release added custom config entities
● Jul 4 - Fullcalendar View patch to support Smart Date
● Jul 11 - Stable 1.0 release!
● Jul 12 - blog: Smart Date - Time to Level Up!
● Oct 17 - “Using Smart Date” presentation at Waterloo DUG
● Feb 23 2020 - 2.0 - Recurring dates, timezones
● Feb 24 - blog: Smart Date 2.0: Let's Do This Again!
Timeline
● Apr 28 - 2.4 - Fullcalendar View support
● Jul 13 - 3.0 - Stable support for core date fields, theme improvements
● Aug 14 - DrupalCamp Colorado presentation
● Sep 10 - Digital Camp Atlanta presentation
● Sep 17 - Virtual Flyover Camp presentation
● Sep 21 - blog: Smart Date 3.0
● Oct 16 - BADCamp presentation
● Nov 16 - 3.1 - Recur by hour, minute - “consecutive” events, blog
● Nov 19 - Drupal Yorkshire presentation
Timeline
● Apr 7 2021 - DrupalNYC (DUG) presentation
● Apr 15 - 3.2 - Hide end date unless different, HTML5 time element
wrapper, drush script to migrate values from core fields
● Apr 16 - DrupalCon presentation
● May 23 - 3.3 - Inline widget for more compact display
● Aug 20 - 3.4 - Support for Date Augmenter API
○ Add to Calendar Augmenter
○ Link Augmenter
○ Date Content Augmenter
Keys to Success
● Solved common problems
● Extended core code wherever possible
● Provided both tools and solutions
○ Starter Kit, Calendar Kit
● Community contributions
● Made maintainership a focus
○ Listening to what users need
● Promoted through blogs, The Weekly Drop,
presentations
Additional Resources
● Drupalize.me Drupal Module Development Guide
● Managing a drupal.org theme, module, or distribution project - Drupal.org
○ Maintainership
● Drupal MRN - tool for making release notes
● Please publish a stable release - sullice.com
● Drupal slack - #maintainers
● Post questions at the Maintainer Support project
● #ddd23 TALK: Why Module Builder should be
in your developer toolkit - YouTube
Questions
Comments
@mandclu
@mandclu@drupal.community
Thank you!
@mandclu

More Related Content

Similar to I have a Great Idea for a Drupal Module! Now What? - DrupalDevDays 2023

The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...Prasid Pathak
 
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
 
Why Drupal Is Not a Word Processor
Why Drupal Is Not a Word ProcessorWhy Drupal Is Not a Word Processor
Why Drupal Is Not a Word ProcessorCaroline Roberts
 
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentationOpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentationAlkacon Software GmbH & Co. KG
 
Open Innovation Lab (OIL) - 2014 Sep 26th
Open Innovation Lab (OIL) - 2014 Sep 26thOpen Innovation Lab (OIL) - 2014 Sep 26th
Open Innovation Lab (OIL) - 2014 Sep 26thWong Hoi Sing Edison
 
`People Management` by Roman Paska
`People Management` by Roman Paska`People Management` by Roman Paska
`People Management` by Roman PaskaLemberg Solutions
 
What is Drupal? And Why is it Useful? Webinar
What is Drupal? And Why is it Useful? WebinarWhat is Drupal? And Why is it Useful? Webinar
What is Drupal? And Why is it Useful? WebinarSuzanne Dergacheva
 
Drupal for beginners - Global Training Days - Cebu 2016
Drupal for beginners - Global Training Days - Cebu 2016Drupal for beginners - Global Training Days - Cebu 2016
Drupal for beginners - Global Training Days - Cebu 2016Luc Bézier
 
Gsoc2012 checklist
Gsoc2012 checklistGsoc2012 checklist
Gsoc2012 checklistDavid Bain
 
Nonprofit technology common problems and some possible solutions
Nonprofit technology common problems and some possible solutionsNonprofit technology common problems and some possible solutions
Nonprofit technology common problems and some possible solutions501 Commons
 
Open drupal DrupalCamp Gent 2018
Open drupal DrupalCamp Gent 2018Open drupal DrupalCamp Gent 2018
Open drupal DrupalCamp Gent 2018LimoenGroen
 
Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1
Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1
Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1Vladimir Roudakov
 
DrupalCon Austin 2014 Review
DrupalCon Austin 2014 ReviewDrupalCon Austin 2014 Review
DrupalCon Austin 2014 ReviewDaniel Stout
 
Super lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik MukelyanSuper lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik MukelyanDrew Malone
 
How NOT to Develop ( With WordPress ) - Wcchi 2014
How NOT to Develop ( With WordPress ) - Wcchi 2014How NOT to Develop ( With WordPress ) - Wcchi 2014
How NOT to Develop ( With WordPress ) - Wcchi 2014Dan Beil
 
Continuing-Ed Opportunities with Drupal
Continuing-Ed Opportunities with DrupalContinuing-Ed Opportunities with Drupal
Continuing-Ed Opportunities with Drupalgstupar
 
Kickstarting career as an Android developer.pdf
Kickstarting career as an Android developer.pdfKickstarting career as an Android developer.pdf
Kickstarting career as an Android developer.pdfShreyaDhurde
 

Similar to I have a Great Idea for a Drupal Module! Now What? - DrupalDevDays 2023 (20)

The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
 
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
 
Why Drupal Is Not a Word Processor
Why Drupal Is Not a Word ProcessorWhy Drupal Is Not a Word Processor
Why Drupal Is Not a Word Processor
 
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentationOpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
 
Open Innovation Lab (OIL) - 2014 Sep 26th
Open Innovation Lab (OIL) - 2014 Sep 26thOpen Innovation Lab (OIL) - 2014 Sep 26th
Open Innovation Lab (OIL) - 2014 Sep 26th
 
`People Management` by Roman Paska
`People Management` by Roman Paska`People Management` by Roman Paska
`People Management` by Roman Paska
 
Basic Views
Basic ViewsBasic Views
Basic Views
 
Improving drupals cex and ax
Improving drupals cex and axImproving drupals cex and ax
Improving drupals cex and ax
 
What is Drupal? And Why is it Useful? Webinar
What is Drupal? And Why is it Useful? WebinarWhat is Drupal? And Why is it Useful? Webinar
What is Drupal? And Why is it Useful? Webinar
 
LET'S TALK ANDROID Dev
LET'S TALK ANDROID DevLET'S TALK ANDROID Dev
LET'S TALK ANDROID Dev
 
Drupal for beginners - Global Training Days - Cebu 2016
Drupal for beginners - Global Training Days - Cebu 2016Drupal for beginners - Global Training Days - Cebu 2016
Drupal for beginners - Global Training Days - Cebu 2016
 
Gsoc2012 checklist
Gsoc2012 checklistGsoc2012 checklist
Gsoc2012 checklist
 
Nonprofit technology common problems and some possible solutions
Nonprofit technology common problems and some possible solutionsNonprofit technology common problems and some possible solutions
Nonprofit technology common problems and some possible solutions
 
Open drupal DrupalCamp Gent 2018
Open drupal DrupalCamp Gent 2018Open drupal DrupalCamp Gent 2018
Open drupal DrupalCamp Gent 2018
 
Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1
Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1
Drupal south 2014 - bootstrap vs foundation deathmatch - v.1.1
 
DrupalCon Austin 2014 Review
DrupalCon Austin 2014 ReviewDrupalCon Austin 2014 Review
DrupalCon Austin 2014 Review
 
Super lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik MukelyanSuper lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik Mukelyan
 
How NOT to Develop ( With WordPress ) - Wcchi 2014
How NOT to Develop ( With WordPress ) - Wcchi 2014How NOT to Develop ( With WordPress ) - Wcchi 2014
How NOT to Develop ( With WordPress ) - Wcchi 2014
 
Continuing-Ed Opportunities with Drupal
Continuing-Ed Opportunities with DrupalContinuing-Ed Opportunities with Drupal
Continuing-Ed Opportunities with Drupal
 
Kickstarting career as an Android developer.pdf
Kickstarting career as an Android developer.pdfKickstarting career as an Android developer.pdf
Kickstarting career as an Android developer.pdf
 

More from Martin Anderson-Clutz

Simplifying Your Admin Experience - FLDC 2023.pptx
Simplifying Your Admin Experience - FLDC 2023.pptxSimplifying Your Admin Experience - FLDC 2023.pptx
Simplifying Your Admin Experience - FLDC 2023.pptxMartin Anderson-Clutz
 
Configuration Kits - DrupalCamp NYC 2021
Configuration Kits - DrupalCamp NYC 2021Configuration Kits - DrupalCamp NYC 2021
Configuration Kits - DrupalCamp NYC 2021Martin Anderson-Clutz
 
Simplifying your admin experience - Stanford WebCamp
Simplifying your admin experience - Stanford WebCampSimplifying your admin experience - Stanford WebCamp
Simplifying your admin experience - Stanford WebCampMartin Anderson-Clutz
 
Robust Events System In Minutes | DrupalCon North America 2021
Robust Events System In Minutes | DrupalCon North America 2021Robust Events System In Minutes | DrupalCon North America 2021
Robust Events System In Minutes | DrupalCon North America 2021Martin Anderson-Clutz
 
Manually curated solr search results | DrupalCon NA 2021
Manually curated solr search results | DrupalCon NA 2021Manually curated solr search results | DrupalCon NA 2021
Manually curated solr search results | DrupalCon NA 2021Martin Anderson-Clutz
 
Simplifying the Drupal Admin Experience
Simplifying the Drupal Admin ExperienceSimplifying the Drupal Admin Experience
Simplifying the Drupal Admin ExperienceMartin Anderson-Clutz
 
Recurring Dates in Drupal - BADCAMP 2020
Recurring Dates in Drupal - BADCAMP 2020Recurring Dates in Drupal - BADCAMP 2020
Recurring Dates in Drupal - BADCAMP 2020Martin Anderson-Clutz
 
Smart Date - Drupalcamp Colorado 2020
Smart Date - Drupalcamp Colorado 2020Smart Date - Drupalcamp Colorado 2020
Smart Date - Drupalcamp Colorado 2020Martin Anderson-Clutz
 

More from Martin Anderson-Clutz (10)

Simplifying Your Admin Experience - FLDC 2023.pptx
Simplifying Your Admin Experience - FLDC 2023.pptxSimplifying Your Admin Experience - FLDC 2023.pptx
Simplifying Your Admin Experience - FLDC 2023.pptx
 
Image Optimization in Drupal
Image Optimization in DrupalImage Optimization in Drupal
Image Optimization in Drupal
 
Configuration Kits - DrupalCamp NYC 2021
Configuration Kits - DrupalCamp NYC 2021Configuration Kits - DrupalCamp NYC 2021
Configuration Kits - DrupalCamp NYC 2021
 
Simplifying your admin experience - Stanford WebCamp
Simplifying your admin experience - Stanford WebCampSimplifying your admin experience - Stanford WebCamp
Simplifying your admin experience - Stanford WebCamp
 
Robust Events System In Minutes | DrupalCon North America 2021
Robust Events System In Minutes | DrupalCon North America 2021Robust Events System In Minutes | DrupalCon North America 2021
Robust Events System In Minutes | DrupalCon North America 2021
 
Manually curated solr search results | DrupalCon NA 2021
Manually curated solr search results | DrupalCon NA 2021Manually curated solr search results | DrupalCon NA 2021
Manually curated solr search results | DrupalCon NA 2021
 
Simplifying the Drupal Admin Experience
Simplifying the Drupal Admin ExperienceSimplifying the Drupal Admin Experience
Simplifying the Drupal Admin Experience
 
Site Search and Relevance
Site Search and RelevanceSite Search and Relevance
Site Search and Relevance
 
Recurring Dates in Drupal - BADCAMP 2020
Recurring Dates in Drupal - BADCAMP 2020Recurring Dates in Drupal - BADCAMP 2020
Recurring Dates in Drupal - BADCAMP 2020
 
Smart Date - Drupalcamp Colorado 2020
Smart Date - Drupalcamp Colorado 2020Smart Date - Drupalcamp Colorado 2020
Smart Date - Drupalcamp Colorado 2020
 

Recently uploaded

iThome_CYBERSEC2024_Drive_Into_the_DarkWeb
iThome_CYBERSEC2024_Drive_Into_the_DarkWebiThome_CYBERSEC2024_Drive_Into_the_DarkWeb
iThome_CYBERSEC2024_Drive_Into_the_DarkWebJie Liau
 
[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformon
[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformon[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformon
[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformonhackersuli
 
一比一原版(Design毕业证书)新加坡科技设计大学毕业证原件一模一样
一比一原版(Design毕业证书)新加坡科技设计大学毕业证原件一模一样一比一原版(Design毕业证书)新加坡科技设计大学毕业证原件一模一样
一比一原版(Design毕业证书)新加坡科技设计大学毕业证原件一模一样AS
 
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书AS
 
Down bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirtsrahman018755
 
Beyond Inbound: Unlocking the Secrets of API Egress Traffic Management
Beyond Inbound: Unlocking the Secrets of API Egress Traffic ManagementBeyond Inbound: Unlocking the Secrets of API Egress Traffic Management
Beyond Inbound: Unlocking the Secrets of API Egress Traffic Managementseank14
 
一比一原版美国北卡罗莱纳大学毕业证如何办理
一比一原版美国北卡罗莱纳大学毕业证如何办理一比一原版美国北卡罗莱纳大学毕业证如何办理
一比一原版美国北卡罗莱纳大学毕业证如何办理A
 
原版定制(Glasgow毕业证书)英国格拉斯哥大学毕业证原件一模一样
原版定制(Glasgow毕业证书)英国格拉斯哥大学毕业证原件一模一样原版定制(Glasgow毕业证书)英国格拉斯哥大学毕业证原件一模一样
原版定制(Glasgow毕业证书)英国格拉斯哥大学毕业证原件一模一样AS
 
Free on Wednesdays T Shirts Free on Wednesdays Sweatshirts
Free on Wednesdays T Shirts Free on Wednesdays SweatshirtsFree on Wednesdays T Shirts Free on Wednesdays Sweatshirts
Free on Wednesdays T Shirts Free on Wednesdays Sweatshirtsrahman018755
 
Washington Football Commanders Redskins Feathers Shirt
Washington Football Commanders Redskins Feathers ShirtWashington Football Commanders Redskins Feathers Shirt
Washington Football Commanders Redskins Feathers Shirtrahman018755
 
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样AS
 
Thank You Luv I’ll Never Walk Alone Again T shirts
Thank You Luv I’ll Never Walk Alone Again T shirtsThank You Luv I’ll Never Walk Alone Again T shirts
Thank You Luv I’ll Never Walk Alone Again T shirtsrahman018755
 
一比一原版英国格林多大学毕业证如何办理
一比一原版英国格林多大学毕业证如何办理一比一原版英国格林多大学毕业证如何办理
一比一原版英国格林多大学毕业证如何办理AS
 
一比一定制波士顿学院毕业证学位证书
一比一定制波士顿学院毕业证学位证书一比一定制波士顿学院毕业证学位证书
一比一定制波士顿学院毕业证学位证书A
 
Lowongan Kerja LC Yogyakarta Terbaru 085746015303
Lowongan Kerja LC Yogyakarta Terbaru 085746015303Lowongan Kerja LC Yogyakarta Terbaru 085746015303
Lowongan Kerja LC Yogyakarta Terbaru 085746015303Dewi Agency
 
一比一原版布兰迪斯大学毕业证如何办理
一比一原版布兰迪斯大学毕业证如何办理一比一原版布兰迪斯大学毕业证如何办理
一比一原版布兰迪斯大学毕业证如何办理A
 
HUMANIZE YOUR BRAND - FREE E-WORKBOOK Download Now
HUMANIZE YOUR BRAND - FREE E-WORKBOOK Download NowHUMANIZE YOUR BRAND - FREE E-WORKBOOK Download Now
HUMANIZE YOUR BRAND - FREE E-WORKBOOK Download NowIdeoholics
 
一比一原版(Polytechnic毕业证书)新加坡理工学院毕业证原件一模一样
一比一原版(Polytechnic毕业证书)新加坡理工学院毕业证原件一模一样一比一原版(Polytechnic毕业证书)新加坡理工学院毕业证原件一模一样
一比一原版(Polytechnic毕业证书)新加坡理工学院毕业证原件一模一样AS
 
I’ll See Y’All Motherfuckers In Game 7 Shirt
I’ll See Y’All Motherfuckers In Game 7 ShirtI’ll See Y’All Motherfuckers In Game 7 Shirt
I’ll See Y’All Motherfuckers In Game 7 Shirtrahman018755
 
VIP ℂall Girls Bangalore 8250077686 WhatsApp: Me All Time Serviℂe Available D...
VIP ℂall Girls Bangalore 8250077686 WhatsApp: Me All Time Serviℂe Available D...VIP ℂall Girls Bangalore 8250077686 WhatsApp: Me All Time Serviℂe Available D...
VIP ℂall Girls Bangalore 8250077686 WhatsApp: Me All Time Serviℂe Available D...Model Neeha Mumbai
 

Recently uploaded (20)

iThome_CYBERSEC2024_Drive_Into_the_DarkWeb
iThome_CYBERSEC2024_Drive_Into_the_DarkWebiThome_CYBERSEC2024_Drive_Into_the_DarkWeb
iThome_CYBERSEC2024_Drive_Into_the_DarkWeb
 
[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformon
[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformon[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformon
[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformon
 
一比一原版(Design毕业证书)新加坡科技设计大学毕业证原件一模一样
一比一原版(Design毕业证书)新加坡科技设计大学毕业证原件一模一样一比一原版(Design毕业证书)新加坡科技设计大学毕业证原件一模一样
一比一原版(Design毕业证书)新加坡科技设计大学毕业证原件一模一样
 
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书
一比一定制(Waikato毕业证书)新西兰怀卡托大学毕业证学位证书
 
Down bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirts
 
Beyond Inbound: Unlocking the Secrets of API Egress Traffic Management
Beyond Inbound: Unlocking the Secrets of API Egress Traffic ManagementBeyond Inbound: Unlocking the Secrets of API Egress Traffic Management
Beyond Inbound: Unlocking the Secrets of API Egress Traffic Management
 
一比一原版美国北卡罗莱纳大学毕业证如何办理
一比一原版美国北卡罗莱纳大学毕业证如何办理一比一原版美国北卡罗莱纳大学毕业证如何办理
一比一原版美国北卡罗莱纳大学毕业证如何办理
 
原版定制(Glasgow毕业证书)英国格拉斯哥大学毕业证原件一模一样
原版定制(Glasgow毕业证书)英国格拉斯哥大学毕业证原件一模一样原版定制(Glasgow毕业证书)英国格拉斯哥大学毕业证原件一模一样
原版定制(Glasgow毕业证书)英国格拉斯哥大学毕业证原件一模一样
 
Free on Wednesdays T Shirts Free on Wednesdays Sweatshirts
Free on Wednesdays T Shirts Free on Wednesdays SweatshirtsFree on Wednesdays T Shirts Free on Wednesdays Sweatshirts
Free on Wednesdays T Shirts Free on Wednesdays Sweatshirts
 
Washington Football Commanders Redskins Feathers Shirt
Washington Football Commanders Redskins Feathers ShirtWashington Football Commanders Redskins Feathers Shirt
Washington Football Commanders Redskins Feathers Shirt
 
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
 
Thank You Luv I’ll Never Walk Alone Again T shirts
Thank You Luv I’ll Never Walk Alone Again T shirtsThank You Luv I’ll Never Walk Alone Again T shirts
Thank You Luv I’ll Never Walk Alone Again T shirts
 
一比一原版英国格林多大学毕业证如何办理
一比一原版英国格林多大学毕业证如何办理一比一原版英国格林多大学毕业证如何办理
一比一原版英国格林多大学毕业证如何办理
 
一比一定制波士顿学院毕业证学位证书
一比一定制波士顿学院毕业证学位证书一比一定制波士顿学院毕业证学位证书
一比一定制波士顿学院毕业证学位证书
 
Lowongan Kerja LC Yogyakarta Terbaru 085746015303
Lowongan Kerja LC Yogyakarta Terbaru 085746015303Lowongan Kerja LC Yogyakarta Terbaru 085746015303
Lowongan Kerja LC Yogyakarta Terbaru 085746015303
 
一比一原版布兰迪斯大学毕业证如何办理
一比一原版布兰迪斯大学毕业证如何办理一比一原版布兰迪斯大学毕业证如何办理
一比一原版布兰迪斯大学毕业证如何办理
 
HUMANIZE YOUR BRAND - FREE E-WORKBOOK Download Now
HUMANIZE YOUR BRAND - FREE E-WORKBOOK Download NowHUMANIZE YOUR BRAND - FREE E-WORKBOOK Download Now
HUMANIZE YOUR BRAND - FREE E-WORKBOOK Download Now
 
一比一原版(Polytechnic毕业证书)新加坡理工学院毕业证原件一模一样
一比一原版(Polytechnic毕业证书)新加坡理工学院毕业证原件一模一样一比一原版(Polytechnic毕业证书)新加坡理工学院毕业证原件一模一样
一比一原版(Polytechnic毕业证书)新加坡理工学院毕业证原件一模一样
 
I’ll See Y’All Motherfuckers In Game 7 Shirt
I’ll See Y’All Motherfuckers In Game 7 ShirtI’ll See Y’All Motherfuckers In Game 7 Shirt
I’ll See Y’All Motherfuckers In Game 7 Shirt
 
VIP ℂall Girls Bangalore 8250077686 WhatsApp: Me All Time Serviℂe Available D...
VIP ℂall Girls Bangalore 8250077686 WhatsApp: Me All Time Serviℂe Available D...VIP ℂall Girls Bangalore 8250077686 WhatsApp: Me All Time Serviℂe Available D...
VIP ℂall Girls Bangalore 8250077686 WhatsApp: Me All Time Serviℂe Available D...
 

I have a Great Idea for a Drupal Module! Now What? - DrupalDevDays 2023

  • 1. How to bring your idea to life and foster adoption by the community I Have a Great Idea For a Drupal Module! Now What? Martin Anderson-Clutz @mandclu
  • 3. This Talk ● Based on my own experience, YMMV ● Intended to help you better define what your module should do, and why ● A resource guide ● Amount of code === NULL
  • 4. The BIG IDEA ● What problem are you trying to solve? ● Jakob’s Law ○ What mental models exist in the space? ● Toolkit vs. Solutions ○ Sometimes both are needed!
  • 5. Proof of Concept (optional) ● Implement the simplest possible, core idea of what you want to achieve ○ Hard code values initially ● A great way to test the overall concept, and collect early feedback ● Motivating to see your idea take shape
  • 6.
  • 7. Research ● Does this already exist? What similar modules are available? ○ Could a library get me part way? ○ Search drupal.org (and google), use synonyms ● Could this be a new feature on an existing module? ● Are there analogous modules I can use for reference? ● Is there an abandoned project I could take over?
  • 8. Plan ● What functionality is needed? ○ User stories? ● What should be configurable? ● What existing functionality can I extend? ○ Identify classes or hooks ● What needs to be stored? ○ Config or content entities? ○ Or DB tables?
  • 10. Writing Your Code ● Free tools available ○ VS Code for Drupal ● Coding standards are important ○ Lint as you go ● Write automated tests ○ Test-Driven Development ● Drush generators ○ Generate entity ● Get feedback early and often
  • 11. Get Help ● Your local DUG ● Slack: #module-development ● Contrib Half Hour ● Forums or Stack exchange ● Collaborators?
  • 12. Your Drupal.org Project ● Start as a sandbox ● Promote to full project when it's ready to share ○ Lint! ● Use the README template
  • 13. Your Drupal.org Project Page ● Suggested content ● Describe the problem you’re trying to solve ● List key features ● Similar Modules ○ How is yours different? ● Fancy logo? ● Screen captures
  • 14. Releases ● Start by doing a smaller number of things really well ● Stable releases! ● Grow features over time ○ Listen to user feedback ● Creating a release ● Alpha, beta, etc. ● Semantic versioning ● Opt into security coverage
  • 15. Spread the Word ● The Weekly Drop ○ Maybe wait until stable, or at least beta ● Blog about it ● Get involved in relevant Slack channels ● Find other people with the problem you started out to solve ● Present! ○ DUGs and camps love new content ● Talking Drupal podcast - Module of the Week
  • 16. Maintainership ● Be the maintainer you wish all modules had ○ Be responsive ○ Make releases ○ Write documentation ○ Collaborate ● An opportunity to be “the boss” ● Follow your passion ● Learn!
  • 18. Origin Story ● Initial idea ~2009 ○ Bring calendar conventions to Drupal, esp duration concept ● Decided to create a module in early 2019 ● Researched existing solutions ○ Found some, reached out ○ Missed some, discussions later
  • 19. Need For A Field, Module Editor UX Performance Formatting
  • 20. Timeline ● Apr 3 2019 - sandbox: “Timestamp ranges” ● Apr 18 - project: “Smart Date” ● Apr 19 - alpha1 release ● May 6 - beta1 … other releases ... ● May 24 - blog, beta6 ● May 30 - The Weekly Drop
  • 21. Timeline ● Jun 10 - Decided output structure translation was a stable blocker ● Jun 19 - rc1 release added custom config entities ● Jul 4 - Fullcalendar View patch to support Smart Date ● Jul 11 - Stable 1.0 release! ● Jul 12 - blog: Smart Date - Time to Level Up! ● Oct 17 - “Using Smart Date” presentation at Waterloo DUG ● Feb 23 2020 - 2.0 - Recurring dates, timezones ● Feb 24 - blog: Smart Date 2.0: Let's Do This Again!
  • 22. Timeline ● Apr 28 - 2.4 - Fullcalendar View support ● Jul 13 - 3.0 - Stable support for core date fields, theme improvements ● Aug 14 - DrupalCamp Colorado presentation ● Sep 10 - Digital Camp Atlanta presentation ● Sep 17 - Virtual Flyover Camp presentation ● Sep 21 - blog: Smart Date 3.0 ● Oct 16 - BADCamp presentation ● Nov 16 - 3.1 - Recur by hour, minute - “consecutive” events, blog ● Nov 19 - Drupal Yorkshire presentation
  • 23. Timeline ● Apr 7 2021 - DrupalNYC (DUG) presentation ● Apr 15 - 3.2 - Hide end date unless different, HTML5 time element wrapper, drush script to migrate values from core fields ● Apr 16 - DrupalCon presentation ● May 23 - 3.3 - Inline widget for more compact display ● Aug 20 - 3.4 - Support for Date Augmenter API ○ Add to Calendar Augmenter ○ Link Augmenter ○ Date Content Augmenter
  • 24. Keys to Success ● Solved common problems ● Extended core code wherever possible ● Provided both tools and solutions ○ Starter Kit, Calendar Kit ● Community contributions ● Made maintainership a focus ○ Listening to what users need ● Promoted through blogs, The Weekly Drop, presentations
  • 25. Additional Resources ● Drupalize.me Drupal Module Development Guide ● Managing a drupal.org theme, module, or distribution project - Drupal.org ○ Maintainership ● Drupal MRN - tool for making release notes ● Please publish a stable release - sullice.com ● Drupal slack - #maintainers ● Post questions at the Maintainer Support project ● #ddd23 TALK: Why Module Builder should be in your developer toolkit - YouTube