В обсуждениях о версионировании часто возникают споры, касающиеся обратной совместимости. Существует мнение, что для ее обеспечения необходимо сохранять старый код навсегда. Однако обратная совместимость не предполагает вечного хранения кода; это скорее процесс, позволяющий старым и новым версиям сосуществовать какое-то время. Ключевым является наличие четкой политики версионирования.
Другой миф гласит, что поддержка старых версий делает код нечитаемым. На самом деле, плохой код делает его сложным для восприятия, а обратная совместимость лишь добавляет немного многословия. Хорошо спроектированный интерфейс может поддерживать расширяемость без значительных осложнений.
Также многие считают, что исправить старые ошибки невозможно без нарушения совместимости. На самом деле, это вполне осуществимо, если разработчики грамотно внедряют новые функции и помечают устаревшие.
Обратная совместимость не препятствует инновациям; она просто требует аккуратного подхода. История знает множество примеров успешных систем, сохранивших обратную совместимость на протяжении многих лет. Наконец, пользователи не всегда виноваты в использовании недокументированного поведения кода. Если поведение системы очевидно, оно будет использовано, независимо от документации. Важно четко определять контракты и границы, чтобы избежать недопонимания.