We are creating a big project that will live and be improved for approximately 10 years.
Already in our code base, there is a lot of code for specific browser incompatibilities, workarounds for different bugs in browsers, 3rd party tools and libraries and so on. The code itself usually works fine, but in time, it will become harder to debug, read and refactor.
Is there some standard way to manage the issues and remove the code once it is not needed?
Ideas that come to my mind:
- Manually maintain a table of workarounds with links to issues -> instructions how to remove them. Possibly with some metadata.
- Set up a task that will create low priority entry in the company issue tracking system if:
- Status changes on the Github issue page.
- Browser usage drops below a threshold (to identify workarounds that are no longer necessary).
- Code coverage detects that the "if branch" is no longer visited.
- The issue was not revisited in a long time.
Generally speaking, opening a defect for every (significant) piece of technical debt is a good idea. A product owner can prioritize them based on the other priorities in the backlog.
There are two important aspects to add: