Deprecation policy and procedure #2
Replies: 2 comments 1 reply
-
An initial plan I came up with to get the conversation started: 1. Pre-Deprecation PlanningWe need to ensure there's a solid reason and viable alternatives before any deprecation action is taken. We should evaluate the need for the deprecation (e.g., security risk, maintenance cost, better alternatives, tech debt) and get a good understanding of its impact. This should involve discussion with community members and apps/wallets and we should reach out to those teams to make sure they participate and provide feedback. All of the information regarding the deprecation should be put into a document that should live in this repo. We should come up with a template deprecation document that we can follow to make sure the deprecation contains all the information we want it to hold. As part of the deprecation information, a deprecation timeline should be discussed and documented. This includes:
Once these dates are discussed with sufficient feedback from community members and stakeholders, the deprecation is finalized. Upon reaching the Deprecation Notice Date, an announcement should be made of the deprecation. Step Actions
2. Implementation of DeprecationThe deprecations specified in the deprecation doc should be worked and any decided alternatives implemented when close to the Feature Deprecation Date. It would be up to the maintainers/contributors of each SDK to determine how much time they need to be able to get the deprecation and any associated work merged. The deprecation work should include, but is not limited to:
Upon reaching the Feature Deprecation Date, the deprecation should be included in a formal SDK release, and the deprecation doc updated to include the date of the release for each SDK that contains the deprecation. Sufficient documentation should be provided in the SDK releases on GitHub, as well as a migration guide section in the deprecation doc (or the deprecation doc can just contain links to the SDK release notes for each SDK so this information can be accessed that way as well). There should be a clear Deprecated header and a Migration header, to show what is deprecated, and how a user should migrate to use the non-deprecated feature, as well as code examples. A great example of what this could look like can be found in this (I also think release notes should be templated and the template stored in this repo as well so all SDK release notes look similar). Step Actions
3. CommunicationThe community should be notified of the deprecation in the release the same way we notified about the deprecation as we planned in step 1. Again, I propose an Step Actions
4. Deprecation RemovalWhile the formal removal of the deprecation will happen at a specified date, the notifications and announcements of its removal should start months ahead. I propose four different announcements of the removal of deprecated features (again, using the means we establish in step 1). I propose an announcement three months prior, one month prior, two weeks prior, and one day prior. This should provide users with plenty of notice and time to do their migrations and prepare for the removal. The deprecations should be removed when close to the Feature Removal Date. Again, it would be up to the maintainers/contributors of each SDK to determine how much time they need to be able to get the deprecation removed. Upon reaching the Feature Removal Date (whether that's an actually decided-upon date, or a major version upgrade), the SDKs should do releases that fully remove the deprecated feature from their code base. The releases for these SDKs should have a clear Removed header to specify exactly what features were removed. In my mind, this should be all that's needed, because plenty of announcements and documentation have been provided by this point to explain migrations and reasonings. Step Actions
There are still some details I think to be ironed-out and I'm sure some steps I missed, but again just looking to get the conversation started. |
Beta Was this translation helpful? Give feedback.
-
If we want to adhere to semver guidelines, we would remove the deprecated feature when we move to the next major version. We should review these guidelines here to contribute to this discussion. https://semver.org/
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This discussion is to formalize a process for deprecating features in the SDKs. This should include all the tasks that required when something has been identified to be deprecated.
Beta Was this translation helpful? Give feedback.
All reactions