У меня задачи достаточно узкие. Все рюшечки общего кода старых версий доступны для новых версий. Старый функционал полностью сохраняется. Это временами огорчает (приходится поддерживать некоторые старые косячные опции параллельно новым прямым), но серверный софт развивается другими людьми независимо от меня, поэтому я не могу создавать несовместимых изменений. Недавно один старый клиент решил слегка расшириться после 8 лет эксплуатации. Докупил новых железок (совершенно другое железо), они нормально подружились с его серверным софтом.
Не надо делать мне как лучше, оставьте мне как хорошо