We have some external APIs in our codebase that have been deprecated over the years, with no clear path on who/when to remove them. How would you recommend we would go about removing them? Can we consider APIs that have been deprecated for example >2 years or 3 releases back old enough just to remove them? Or should we first clearly communicate a removal strategy for each individual API and start removing them a couple of releases forward?
Any insights? How have you handled this?
Clarification: We have always had deprecated annotations on our deprecated interfaces, the problem is that we have never clearly communicated when those might no longer exist.
When we deprecate an API, we announce the deprecation to our users and keep the deprecated API for two further releases. But to ensure, that everyone knows that the API is deprecated (language is C), we put an
#error This module is deprecated since ...in the header that makes the API public.Keep that state until you finally decide to delete the API.