Ownership is an organizational question, not a problem to be solved with modular implementation.

A lack of clear ownership shouldn’t be a motivator to seek out the mythical modular monolith, but in my experience it seems to be a primary driver for modularization in growing enterprises. Well-defined modules can help make codifying ownership easier, but you don’t need them to decide who is responsible for something.

Modularizing a monolith is difficult. Working with stakeholders to choose appropriate context boundaries for an application’s domains can take years for monoliths that have exploded in complexity over a decade. Unfortunately, a 3:00 AM alert for an exception thrown by a shared bit of code doesn’t wait until refactoring can be prioritized. Someone still has to own it and respond, so these problems are usually offloaded onto a tired staff engineer or left to languish until your bug backlog has hundreds of unhandled exceptions that need to be addressed.

Make an ownership decision even when the path towards true context separation is unclear or in progress. You’ll probably pick the wrong owner more than once, but documenting who owns a file or directory doesn’t change any code so the decision is inexpensive. Define who owns code before modularizing it and you’ll find that you have teams with the agency and responsibility to improve it.