From 74c3ca1c406d4f406aa7c2458a4338ceae69bead Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Tue, 1 Aug 2023 23:06:19 +0100 Subject: [PATCH] daily-email: add 2023-08-01 Maintaining a module used on 35,000 Drupal websites --- src/content/daily-email/2023-08-01.md | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/content/daily-email/2023-08-01.md diff --git a/src/content/daily-email/2023-08-01.md b/src/content/daily-email/2023-08-01.md new file mode 100644 index 00000000..80953d2d --- /dev/null +++ b/src/content/daily-email/2023-08-01.md @@ -0,0 +1,40 @@ +--- +title: > + Maintaining a module used on 35,000 Drupal websites +pubDate: 2023-08-01 +permalink: > + archive/2023/08/01/maintaining-a-module-used-on-35000-drupal-websites +tags: + - drupal + - open-source +--- + +Note: The numbers within this post are taken from my [Test-Driven Drupal talk](https://www.oliverdavies.uk/talks/tdd-test-driven-drupal), in which I also talk about this. + +My first commit to the 7.x-1.x branch of the Override Node Options module was in March 2012. According to Drupal.org, the module was used on 9,212 websites then. + +As well as the 7.x-1.x branch, there's the 8.x-2.x branch which supports Drupal 9 and 10, and previously Drupal 8. + +The most recent statistics show the module is currently used on 34,981 websites and is consistently around 35,000. + +## What does that mean? + +The module is considered feature complete, but I'm not ruling out any new additions. + +The main thing is ensuring that any changes don't break 35,000 websites! + +I do this by relying on the module's automated test suite and ensuring that tests are added for any features or bugs and that the tests are passing before any new release. + +## This has worked well + +A few years ago, I committed a feature request to both versions. While it didn't include additional tests, I verified the existing functionality worked after resolving a large merge conflict by ensuring the original tests passed. + +More recently, a colleague and I refactored the module and split each override into its own class, making adding and maintaining overrides easier. + +Because the tests were still passing, we knew our refactor was successful and not causing regressions. + +## Here's the thing + +Having automated tests and ensuring they're always passing has allowed me to add features and refactor code that I wouldn't have done or had the confidence to do otherwise. + +It's great to have a popular module, but on the other hand, I don't want to break 35,000 websites which makes the tests invaluable.