I think we could begin by working out some constraints for the feature...

First, I think it should be possible to deprecate (or undeprecate) an artifact 
without compiling a new version of it.

This is because:

- In some legacy code situations (e.g. when the code was not checked in to 
VCS), nobody can compile the artifact any more. We would not want this to 
prevent us deprecating the artifact.
- Deprecation and undeprecation should be quick operations. Compiling and 
releasing new versions can take significant time.

This constraint suggests that a deprecation indicator should be something 
applied *to* an artifact rather than part *of* an artifact. It would lead us 
towards putting the indicator in the repository metadata, not the POM.

A comparison with other systems:

- NPM puts deprecation indicators in repository metadata.
- Nuget puts deprecation indicators in repository metadata.
- Cocoapods puts its `deprecated` property in the Podspec (the equivalent of 
the POM). This means you have to compile a new version of a pod just to 
un/deprecate it. I believe it also means that Cocoapods clients must scan 
forward from a Podspec's current dependency versions to find the closest future 
versions that have a `deprecated` marker. I think is the wrong approach for the 
reasons explained above.

Chris

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to