Closed alikins closed 3 years ago
-1. Adding registration is something that static language practitioners naturally reach for but isn't natural for dynamic languages. It gets in the way of both reading and writing code by forcing you to break out of the flow of the problem you are working on and into defining the type for an unrelated system. Reading through the reasons for this proposal, most of them can be solved without centralized registration. The only thing that is helped by registration is being able to list all of the deprecations in the code base. And that's justified for the purposes of building release notes, not an end user need (the end user needs to know what deprecations affect them, not all the potential deprecations exist). Listing all deprecations also doesn't work as it only registers code that has been reached at the time it has been called. Code that hasn't been reached at that point will not be included.
-1 also, mostly I agree with @abadger there are much simpler solutions to deal with listing the deprecations for the changelog (i.e. grep) which, unlike the code, will deal with ALL of them, not just the ones in the branches of code hit.
Closing as most of the problems stated have been addressed in alternative ways, we now have facilities to list deprecations and a process to handle removal on every new release cycle.
Proposal: Add more flexible 'deprecation' support.
Author: Adrian Likins alikins@redhat.com Date: 2016-10-10
Motivation
During the preparation of major releases, the process of updating deprecations is a significant amount of work and can be trouble prone. Deprecations need to be found and documented, and code needs to be updated to remove deprecated code and warn/error on it's use.
Problems
What problems exist that this proposal will solve?
Solution proposal
In the future, could also support:
Example deprecation definitions:
API deprecation:
Feature deprecation:
Dependencies (optional)
Depends on final implementation, but there is no external deps required currently.
Testing (optional)
Documentation (optional)
Anything else?
Some similar tools (mostly focused on API deprecation)