Все приложение на модулях

Хочу создать функциональное приложение полностью состоящее из модулей. Модульная структура вот такая: default(модуль по умолчанию(Главная страница)), admin, user, article, news, comment. Думаю для начал хватит.

Оправдываю это тем, что при дальнейшей эксплуатации приложения в различных проектах, нужно будет просто модифицировать имеющиеся модули, и что то отключить, что то включить.

На сколько, такая структура приложения оправдана, по вашему мнению?

Конструктивная критика приветствуется.

IMHO модуль должен быть неизменным и обособленным. Иметь свой отдельный репозиторий. И что бы не было ситуаций, когда он "меняется от проекта к проекту". Если начиналось все из одного модуля, но потом в каждом проекте он по своему был изменен, то чем он тогда отличается от обычных контроллеров? Изменение в одном проекте должно приводить к возможность обновить его и в других.

К примеру я использую модуль в который поместил механизм логина, регистрации и просмотра списка пользователей. Это позволяет быстро добавить в проект данный функционал, но затруднения возникают когда в разных проектах различный набор полей у юзеров…

К тому же когда модуль в разработке, лично для меня оказывается затруднительным листать в IDE папки из /models в /modules/<name>/models и обратно.

Так что размещать все по модулям, мне не кажется хорошей идеей.

А почему он дожен быть неизменным?

Что если у меня есть модуль user, и в одном проекте у меня было четыре поля а в другом добавилось два? Что в этом плохого?

Если количество полей можно регулировать через настройки, и следовательно модуль из одного проекта можно вытянуть в другой без изменений, потому что благодаря настройкам в каждом из проектов он будет работать как нужно проекту, это хорошо и так надо.

А если ты хардкодом пропишешь в модуле одного проекта одни поля, в другом другие, то модуль вростает в проект его оттуда больше не выковыряешь. Вместо "повторного использования кода" мы получаем "дублирование кода", которое плохо уже тем, что и ошибки, найденные в модуле и исправленные в одном проекте, необходимо исправлять и в другом. Это только с виду будет отдельный модуль, на самом деле просто монолитная часть своего проекта. Зачем тогда выносить её в модуль? Она прекрасно и в основном приложении будет жить.

Да уж, есть над чем подумать. Спасибо за веские аргументы!