API Deprecation and Removal Policy Revision 1 #474
Replies: 5 comments 19 replies
-
👍 Two comments:
|
Beta Was this translation helpful? Give feedback.
-
Personally, I think this is to much of "legal" wording. To me the whole behaviour I would want can be summarised by: "Two SUBSEQUENT releases SHOULD not introduce any warnings or errors in dependent codebases (e.g. O2) unless an alternative, equivalent solution working in both is provided." For the definition of SUBSEQUENT. For me is anything which happens between one validation at point 2 and the other, but if you prefer to put two months, that's also fine. Of course exceptions are possible when doing things incrementally creates more work than it saves, it does not need to be strict. |
Beta Was this translation helpful? Give feedback.
-
I fully agree with @dennisklein 's proposal @mattkretz 's comment.
|
Beta Was this translation helpful? Give feedback.
-
One other point is the (potential) amount of code downstream ("customer") has to touch. If it's a few lines of code (< 10 warnings), then things are different from having to touch 100 files. For the first case, downstream can likely create their own For the second case it might be nicer, if there would be a "migration plan". For example with one version introducing new, parallel APIs without (or disabled by default) deprecation warnings, etc. Having this in properly planned means that "the customer" can decide on their own, which version steps they want to take. (If they jump on latest, they may not complain!) |
Beta Was this translation helpful? Give feedback.
-
About wall time between deprecation and removal: I don't think, the wall time is really important in this area. As upstream you can't usually influence when downstream switches to which version. If the ReleaseNotes are well written, then downstream can decide on their own on which version to jump and thus decide on their adoption rate of one particular change. What might actually be a point: Required changes per wall time. So if upstream would deprecate 100 APIs per week (and removes them six months later), then this means a lot of work for downstream. |
Beta Was this translation helpful? Give feedback.
-
edit: Now outdated, once the discussion threads conclude, I will propose a second revision. Read the following policy text as revision 1 or proposed text:
Ideally, one would want to get every public API correct from the start and never have to change anything forever. However, in reality, programmers make mistakes, requirements change over time, or the project simply evolves. To minimize avoidable friction, we would like to communicate the following API Deprecation and Removal Policy to both users and developers:
[[deprecated]]
attribute if applicable#pragma GCC warning ...
(or any other compiler warning mechanism that cannot be filtered by the user) must be announced in one additional release before the deprecating releaseThe above policy would allow for deprecation and removal of a public API in two consecutive releases. However, in such a case, the user may always opt-in to a 3-phase-deprecation-removal still by using
-Wno-deprecated-declarations
, or-DFAIRMQ_NO_DEPRECATED_DECLARATIONS
passed to the compiler and/or CMakeBeta Was this translation helpful? Give feedback.
All reactions