Fixing Design Mistakes

We shipped a design flaw. It’s been there since day 1 and no one’s noticed—until now.

How do we roll out a fix for this?

Technically, it isn’t a bug. It’s a feature we’ve decided to change. The current behavior isn’t ideal (it’s arguably an anti-pattern), but it’s been there since our first stable release, and now we want to change it for everyone.

Do we go ahead and ship a major release with this one breaking change? Or ease into it with a series of smaller steps?

For this feature, we’ve decided to prefer safety over speed:

  1. Minor release with configuration option to switch to new behavior (no breaking changes).
  2. Patch release with warning message that new behavior will become the default in next major release (again, no breaking changes).
  3. Major release that switches to new behavior.