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:
- 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.
- Change the name of the package in those
.proto files from azdext to something more like azd.extensions.v1.
- Copy
v1 to a sibling v2beta and change the package names to azd.extensions.v2.
- Remove
telemetry.proto from v1 since it was added last night and should only exist in v2beta for now.
- 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.
- 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.
Now that we've GA'ed extensions, I think we should lock down the contract and start versioning our
.protofiles by doing something like:.protofiles to somewhere like/extensions/proto/v1so they're easy to discover. We could also maybe consider/schemas/extensions/proto/v1instead of we wanted all of our contracts to live in one spot..protofiles fromazdextto something more likeazd.extensions.v1.v1to a siblingv2betaand change the package names toazd.extensions.v2.telemetry.protofromv1since it was added last night and should only exist inv2betafor now.buf breakingto make surev2betaonly adds tov1. Maybe consider aCODEOWNERSline that requires explicit approval from a handful of people if you touch anything in thev1folder since that's now GA.azdextto generate offv2beta.If people really hate moving the
.protofiles, then I think we can just do thev1/v2betaversioning in the current/cli/azd/grpc/protofolder. We should also double check that's the right way to version GRPC because I've never gone deep on the sharp edges there.