You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. Document PackageManager and EnvironmentManager capabilities
We expose PackageManager and EnvironmentManager as a way for ourselves and other people to contribute abstraction wrappers around managers (e.g., uv, conda, pip). However, we increasingly run into the issue of trying to figure out if a certain feature is available per manager, or in a specific version of the tool.
Managers should have a clear way of advertising their capabilities for each of the operations exposed by the API.
1.1. Create Inventory of available capabilities
As a first step for this, we should have a canonical inventory of all the capabilities supported by the managers in the API. This should live in a centralized file and allow us to easily adopt new functionality.
1.2. Identify opt-in and opt-out functionality
Afterwards, we should check whether each functionality is supported by the majority of the managers, and determine if its default behavior should be opt-in or opt-out. This allows us to minimize breaking changes on managers that are not updated to advertise their functionality.
1.3. Detection mechanism
On every API surface level we should query the detection mechanism to:
Decide whether to proceed, cancel or error
Send (optional) telemetry data to better inform product decisions for us and tool maintainers
Implement a method that resolves capabilities not advertised by looking at pre-existing method names. This will give us time to coordinate with 3rd party managers to advertise those features with them.
Activity
edvilme commentedon Sep 30, 2026
1. Document
PackageManagerandEnvironmentManagercapabilitiesWe expose
PackageManagerandEnvironmentManageras a way for ourselves and other people to contribute abstraction wrappers around managers (e.g., uv, conda, pip). However, we increasingly run into the issue of trying to figure out if a certain feature is available per manager, or in a specific version of the tool.Managers should have a clear way of advertising their capabilities for each of the operations exposed by the API.
1.1. Create Inventory of available capabilities
As a first step for this, we should have a canonical inventory of all the capabilities supported by the managers in the API. This should live in a centralized file and allow us to easily adopt new functionality.
1.2. Identify opt-in and opt-out functionality
Afterwards, we should check whether each functionality is supported by the majority of the managers, and determine if its default behavior should be opt-in or opt-out. This allows us to minimize breaking changes on managers that are not updated to advertise their functionality.
1.3. Detection mechanism
On every API surface level we should query the detection mechanism to:
API: Add `getVersion` method to `EnvironmentManager` (#1923)
API: Advertise EnvironmentManager and PackageManager capabilities (#1874
edvilme commentedon Oct 14, 2026
1.4. Backwards compatibility
Implement a method that resolves capabilities not advertised by looking at pre-existing method names. This will give us time to coordinate with 3rd party managers to advertise those features with them.
API: Query capabilities (#1936)