Globally unique identifier for Bicep extensions / providers
- Dominant language
- Bicep
- Stars
- 3.6k
- Forks
- 830
- Avg merge
- 1d 21m
- Merged PRs (30d)
- 79
Description
Using the `name` attribute as the identifier for Bicep extensions (or Bicep extensibility providers) introduces challenges in scenarios involving third-party Bicep extension support and local mode deployment. Consider a situation where an organization develops a Kubernetes extension with the name `Kubernetes` with a specialized backend and publishes its types to a private registry. In the bicepconfig.json file, it's possible for a user to specify the installation of both the custom Kubernetes extension from the private registry and the official Kubernetes extension provided by the Bicep team from the MCR. However, since both extensions are named `Kubernetes`, the Bicep compiler cannot differentiate between them, leading to conflicts and preventing the simultaneous import of both extensions in a single Bicep file.
This topic is related to [Bicep REP 0002](https://github.com/Azure/bicep-reps/blob/main/active/0002-centalized-mgmt-resource-types-provider-versions.md). However, addressing this complexity requires future consideration and falls outside the scope of the current design. We should revisit the problem when it comes to implement 3rd party extension support.
Contributor guide
Research direction
Start by reading Bicep REP 0002 and the extension installation settings described in bicepconfig.json. Trace how the Bicep compiler identifies extensions from private registries and MCR when they share a name. Done requires an agreed design for globally distinguishing third-party and official providers; this issue names no implementation files or tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100