Deprecation plan for serial preview/push
- Release v4.14 (<1 week)
- Add
oldpreview/oldpushcommands that are aliases for the serial preview/push with warning that these are temporary, will go away in a future release without warning, and are not subject to SemVer.- Draft: "WARNING: oldpreview/oldpush are temporary commands and may go away in a future release without warning. They are not subject to SemVer. Please use ppreview/ppush instead."
- Add message to
preview/pushcommands:- Draft: 'WARNING: In the next release (v4.15), this command will receive a major upgrade. A preview is available by using ppreview/ppush. Please test them and report any bugs ASAP. The older code will be available as oldpreview/oldpush for a limited number of releases.'
- Add a (similar) message to the
v4.14release notes. - Send a mailing to the mailinglist with the release notes (deprecation message included).
- Release v4.15 (1 month)
- preview/push will activate the ppreview/ppush code. Remove any warnings from these commands.
- oldpreview/oldpush will be available as a temporary work-around if bugs are found in ppreview/ppush. They will output a warning message. Draft:
- Draft: "WARNING: oldpreview/oldpush are temporary commands and may go away in a future release without warning. They are not subject to SemVer."
-
Future release (at least 2 months, target date Jan 1, 2025 or later)
- oldpreview/oldpush will be removed from the code base
Crosslinking my original comment https://github.com/StackExchange/dnscontrol/pull/3135#discussion_r1779442448
- target date Jan 1, 2024 or later
You mean 2025 right?
- target date Jan 1, 2024 or later
You mean 2025 right?
Wooops! You are correct! Thank you for catching that!
After my review of https://github.com/StackExchange/dnscontrol/pull/3145 I took another look at the bigger picture. Here is a summary of all the current DNSControl commands:
- There are four commands:
previewpushppreviewppush
- Within
ppreviewandppushthere is an additional argument:cmode:default(Which providers to run concurrently:all,default,none)- The argument
cmodeuses the constantCanConcurwhich is defined per provider.- https://github.com/StackExchange/dnscontrol/blob/f0d131986d05b23b462ba49bd26143c02168b230/providers/capabilities.go#L26
- https://github.com/StackExchange/dnscontrol/blob/06ba3cce775477779bb7b0fe021168f9c89ba07c/providers/cloudflare/cloudflareProvider.go#L48
- https://github.com/StackExchange/dnscontrol/blob/06ba3cce775477779bb7b0fe021168f9c89ba07c/providers/transip/transipProvider.go#L36
- https://github.com/StackExchange/dnscontrol/blob/8fa1a8d7d61c49e43c537ae04a58189d6014fa00/providers/powerdns/powerdnsProvider.go#L19
What do we want to achieve?
That the codebase is moving forward where DNSControl users will use the new concurrently mode without experiencing too many problems. When introducing this new concurrently feature, a second command was chosen instead of an argument. (I don't know why.) Now we're about to bring ppreview and ppush back as standard.
The impact
We discussed keeping the old functionality available on another/second (alias) so that there remains a fallback method. I think most of the functionality can be guaranteed with cmode. So maybe the following is a better idea:
-
Release v4.14 (1 week from now)
- Add a deprecation message within the
previewandpushcommands.- Context: 'in de next release
v4.15the commandspreviewenpushwill be replaced byppreviewandppushfunctionality. We encourage you to test the newppreviewandppushcommands for your own DNSControl set-up/configured providers.'
- Context: 'in de next release
- Add a deprecation/warning message within the
ppreviewandppushcommands.- Context: 'in de upcoming release
v4.16these "preview of a future feature" commands will be dropped.' After all, this is always how it has been communicated. See commands/preview-push#ppreview-ppush:
The commands will go away when they replace the existing
preview/pushcommands. - Context: 'in de upcoming release
- Add a (similar) deprecation messages to the
v4.14release notes. - Send a mailing to the mailinglist with the release notes (deprecation message included).
- Add a deprecation message within the
-
Release v4.15 (+2 weeks from releasing v4.14)
- The commands
previewenpushare replaced byppreviewandppushfunctionality. - The default value of
cmodeisdefault(remains unchanged). - Add (again) a deprecation/warning message to the
v4.15release notes.- Context: 'in de next release
v4.16these "preview of a future feature" commands will be dropped.'
- Context: 'in de next release
- Send a mailing to the mailinglist with the release notes (deprecation message included).
- The fallback for providers without parallel support is still
cmodewith valuenone.
- The commands
-
Release v4.16 (+3/4 weeks from releasing v4.15)
- Remove of the (old)
ppreviewenppushcommands. - Add a (breaking change) message to the
v4.16release notes.- The
ppreviewandppushcommands have been removed.
- The
- Send a mailing to the mailinglist with the release notes (breaking change message included).
- Remove of the (old)
v4.14
dnscontrol preview
dnscontrol push
[WARNING: The preview/push commands will receive a major upgrade in the next release (v4.15). Try the new behavior by using ppreview/ppush. Please test and report any bugs ASAP. See https://docs.dnscontrol.org/commands/preview-push]
dnscontrol ppreview
dnscontrol ppush
[WARNING: The ppreview/ppush commands will be removed in the upcoming release (v4.16). See https://docs.dnscontrol.org/commands/preview-push]
v4.15
dnscontrol preview
dnscontrol push
These commands have already been replaced for the ppreview and ppush functionality so a warning is no longer needed.
dnscontrol ppreview
dnscontrol ppush
[WARNING: The ppreview/ppush commands will be removed in the upcoming release (v4.16). See https://docs.dnscontrol.org/commands/preview-push]
v4.16
dnscontrol preview
dnscontrol push
These commands have already been replaced for the ppreview and ppush functionality so a warning is no longer needed.
dnscontrol ppreview
dnscontrol ppush
No help topic for 'ppreview'
This is the standard (error) message for a DNSControl command that does (no longer) not exist.
So I think we can move forward much more easily than I initially thought. What do you think about this?
Crosslinking of the GitHub pull requests/issues:
- https://github.com/StackExchange/dnscontrol/pull/3132
- https://github.com/StackExchange/dnscontrol/pull/3144
- https://github.com/StackExchange/dnscontrol/issues/3133
- https://github.com/StackExchange/dnscontrol/pull/3135#discussion_r1779442448
- https://github.com/StackExchange/dnscontrol/issues/3142
When introducing this new concurrently feature, a second command was chosen instead of an argument. (I don't know why.)
@cafferata , you are brilliant! This is the root of the problem! That is... I introduced a new command rather than a flag. Flags are a better way to do this than subcommands. (Why didn't I use a flag? Well, at the time I didn't think it would be possible.)
I'd like to note, however, that --cmode none is not the same as running the old serial code. However, I could add a value that would activate the old code.
Then we add to your plan:
Release v4.14: Add --cmode flag to preview/push. Default "legacy". Permitted values:
- legacy (old code) (warning: Please try normal, file bugs, etc)
- concurrent (abide by Can/Cannot)
- none (forced no concurrence)
- all (forced concurrence),
Release v4.15: --cmode defaults to "normal"
- legacy generates a warning "This will go away in v4.16 or later, target 1-Jan-2025)
Release v4.16 (or later): Remove the "legacy" option (and the legacy code)
The benefit of this is that the old code is available for longer, but it doesn't require people to change scripts / CICD configs, etc.
What do you think?
I'd like to note, however, that
--cmode noneis not the same as running the old serial code. However, I could add a value that would activate the old code.
What do you think?
If you see technical possibilities for that I would say, Yes! Let's try/get this ready because that would make the step forward (even) easier. 👍🏻
Release v4.14 should ship today or tomorrow.
Release v4.15.0 shipped today. It's quite late, which is good because it gives people extra time to test the new cmode.
As a result of the delay, we should delay v4.16.0 until February or later.
v4.16.0 is shipping soon. Here is the PR that removes --cmode=legacy, ppreview and ppush. https://github.com/StackExchange/dnscontrol/pull/3412