Subject: | api_version |
Now that Module::Install is "stable" it should prepare for what happens
when it wants to change the interface in an incompatible way.
Fortunately, there's an easy way to prepare for this.
Have an "api_version" which is set in the Makefile.PL by the user of MI.
This indicates which API version of Module::Install they wrote their
Makefile.PL with. Internally it would instantiate a
Module::Install::v$api_version object which implements that API. Then
MI can change or remove functionality without breaking things.
If there's no api_version then v1 is assumed (the current API).
This allows MI to smoothly change and deprecate features in incompatible
ways without breaking the many, many existing deployments out there.
This is similar to the "backwards incompatibility plan" which perl5i
employs.
This also removes a reason for not deferring to an installed
Module::Install of a higher version: incompatible changes to MI will not
break existing releases.