Professional Documents
Culture Documents
=========================
One of the key decisions you will need to make is whether to create your commands
in a CLI module or an extension.
#### Extensions
| PROS | CONS
|
|:----------------------------------------------:|:--------------------------------
--------------------:|
| Release separate from the CLI release schedule | Requires dedicated installation
(az extension add …) |
| Higher velocity fixes possible | Can be broken by changes to the
azure-cli-core |
| Experimental UX is permissible |
|
| Leverage CLI code generator to generate code |
|
| PROS |
CONS |
|:-----------------------------------------------------------------------:|:-------
-----------------------------------------------------------------------------------
------------------------------------------------------------------:|
| Comes automatically with the CLI. No dedicated installation required. |
Strictly tied to CLI release schedule
|
| Unlikely to be broken by changes to azure-cli-core (with test coverage) |
STRICTLY tied to CLI authoring guidelines. Experimental patterns that may be
allowed in extensions could be rejected entirely for inclusion as a CLI module. |
- **During command authoring:** Run checks frequently to ensure you are staying on
top of issues that will stall your build when you submit a PR. Use commands like
`azdev test <YOURMOD>`, `azdev style <YOURMOD>` and `azdev linter <YOURMOD>`.
- **Just before opening PR:** Run `azdev style` and `azdev linter --ci-exclusions`
and `azdev test <YOURMOD>` to address issues before the CI finds them.
- **2 weeks before desired release date:** Open PR in CLI repo (public or private
depending on your service). Request your CLI contact as the reviewer for the PR.
- **1 week prior to desired release date:** Hopefully, PR is merged! Download the
edge build and try it out. Submit follow-up PRs to address any small issues.
Anything caught before release is not a breaking change!
Reviewing a new command module is very difficult, so the PR shouldn't be the first
time we see your module! Some important considerations for your initial PR:
1. Have recorded ScenarioTests for **all** new commands. This lets us know that
your commands *work*. [Test Authoring](https://github.com/Azure/azure-
cli/blob/dev/doc/authoring_tests.md)
2. If you are creating brand new commands, they should be marked as being in
Preview. See: [Preview Commands and Arguments](https://github.com/Azure/azure-
cli/blob/dev/doc/authoring_command_modules/authoring_commands.md#preview-commands-
and-arguments)
3. (OPTIONAL) The help output of:
- all groups and subgroups (i.e. `az vm -h`)
- all non-trivial commands (commands except `list`, `show`, `delete`)
If you and your CLI contact have been doing regular command reviews, the PR should
merely be a formality. If you haven't been conducting regular reviews, the help
output allows us to quickly identify holes and anti-patterns to get you on the
right track.
The help output is generally not needed if a command walkthrough has been
conducted, but is often a helpful alternative for teams who are in a very different
time zone such that scheduling a live review would be highly inconvenient.
## Transition Paths
Nearly all new command modules or extensions begin life in Preview, but will
eventually want to transition to being GA. The section describes the review
requirements required for various transitions.