Maintaining a module used on 35,000 Drupal websites

Note: The numbers within this post are taken from my Test-Driven Drupal talk, 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.