Lesson from maintaining Spree: users commonly stay on 1–2-year-old versions because upgrades are hard to budget, so every breaking change compounds pressure. Avoid tempting refactors of ugly code and carefully evaluate 'technically correct' schema changes (e.g. moving product dimensions to variants) because they can break many existing installations. When change is unavoidable, use an explicit deprecation schedule with log warnings.