Consider the necessary steps:

1. realize that an internal API is broken;

2. come up with a new non-broken API;

3. port all the internal code using the non-broken API;

4. add a compatibility layer between the broken API and the non-broken API;

5. check all the existing add-ons to find out which ones use the broken API;

6. hope you didn't forget any add-on;

7. attempt to get in touch with all the add-on developers;

8. repeat 7. many, many times, until you are sure that the add-on developers that do not respond have simply abandoned their add-on;

9. negotiate a transition plan with the add-on developer with whom you have managed to get in touch;

10. land the patch that you have written now 3-4 months ago;

11. maintain both the broken API and the non-broken API (and their tests) for ~1 year, until you are reasonably sure that all add-on developers who intend to migrate have done so;

12. maintain (and test) a downgrade path for people who switch between versions of Firefox;

13. finally land your code;

14. realize that you still have accidentally broken some add-ons and people are (rightfully) unhappy because "Firefox broke my add-on";

15. it's 18 months since you wrote your 2-lines patch, you can finally get rid of the dead code and tests and move to something else.


Read the whole thing!

Leave a comment on github