Version the extension contract and lock down GA.
- Dominant language
- Go
- Stars
- 569
- Forks
- 364
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 136
Description
Now that we've GA'ed extensions, I think we should lock down the contract and start versioning our `.proto` files by doing something like:
1. Move the current `.proto` files to somewhere like `/extensions/proto/v1` so they're easy to discover. We could also maybe consider `/schemas/extensions/proto/v1` instead of we wanted all of our contracts to live in one spot.
2. Change the name of the package in those `.proto` files from `azdext` to something more like `azd.extensions.v1`.
3. Copy `v1` to a sibling `v2beta` and change the package names to `azd.extensions.v2`.
4. Remove `telemetry.proto` from `v1` since it was added last night and should only exist in `v2beta` for now.
5. Add a linting rule that runs `buf breaking` to make sure `v2beta` only adds to `v1`. Maybe consider a `CODEOWNERS` line that requires explicit approval from a handful of people if you touch anything in the `v1` folder since that's now GA.
6. Change `azdext` to generate off `v2beta`.
If people really hate moving the `.proto` files, then I think we can just do the `v1` / `v2beta` versioning in the current `/cli/azd/grpc/proto` folder. We should also double check that's the right way to version GRPC because I've never gone deep on the sharp edges there.
Contributor guide
Assessment
This issue has not been assessed yet.