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

Complet Documnetation for Smart Assistant Application for Disabled Person
Complet Documnetation   for Smart Assistant Application for Disabled PersonComplet Documnetation   for Smart Assistant Application for Disabled Person
Complet Documnetation for Smart Assistant Application for Disabled Personfurqan222004
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebJames Anderson
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...aditipandeya
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Roomdivyansh0kumar0
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024APNIC
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012rehmti665
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一Fs
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Dana Luther
 
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on DeliveryCall Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Deliverybabeytanya
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of indiaimessage0108
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...APNIC
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...SofiyaSharma5
 
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Russian Call Girls Thane Swara 8617697112 Independent Escort Service Thane
Russian Call Girls Thane Swara 8617697112 Independent Escort Service ThaneRussian Call Girls Thane Swara 8617697112 Independent Escort Service Thane
Russian Call Girls Thane Swara 8617697112 Independent Escort Service ThaneCall girls in Ahmedabad High profile
 

Recently uploaded (20)

Complet Documnetation for Smart Assistant Application for Disabled Person
Complet Documnetation   for Smart Assistant Application for Disabled PersonComplet Documnetation   for Smart Assistant Application for Disabled Person
Complet Documnetation for Smart Assistant Application for Disabled Person
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
VIP 7001035870 Find & Meet Hyderabad Call Girls Dilsukhnagar high-profile Cal...
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
 
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on DeliveryCall Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
 
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of india
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
 
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
Russian Call Girls Thane Swara 8617697112 Independent Escort Service Thane
Russian Call Girls Thane Swara 8617697112 Independent Escort Service ThaneRussian Call Girls Thane Swara 8617697112 Independent Escort Service Thane
Russian Call Girls Thane Swara 8617697112 Independent Escort Service Thane
 

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