Pattern recommended by Rafael Zamaris for evolving open-source frameworks: rather than silently breaking behavior between versions, explicitly warn (e.g. log deprecation messages) about interfaces that will be removed so users have time to migrate. Spree used this approach when replacing its old API — both versions ran in parallel for years, and the old one was eventually extracted into a separate gem (kept installable for dependents like Klaviyo) while new users are directed to the new API.