Currently the buildpack semver does not seems to follow industry expectations around when to increment major/minor/patch. This is a problem for customers because buildpacks are typically managed by infrastructure folks who are oblivious to language specific nuances the given buildpack supports. As most often the case they blindly install the latest version. This causes issues when buildpack removes a major version of .NET while there are active apps running on the platform that relied on this version. An example is release 2.3.35 of the buildpack which removed .NET 2.1, but did so as part of a "patch" semver release increment. A patch release should not have major breaking changes like this, so when platform team upgrades none of the deployed apps are able to be restaged.
The proposal is to increment a major version number of the buildpack when any major versions of .NET are removed, and increment a minor version when a major version is added (being that .NET SDKs are backward compatible in most scenarios and should generally not produce breaking changes). This would allow platform team to maintain an older version of the buildpack on the platform under a different name, allowing outdated apps to "peg" against older buildpack.
Currently the buildpack semver does not seems to follow industry expectations around when to increment major/minor/patch. This is a problem for customers because buildpacks are typically managed by infrastructure folks who are oblivious to language specific nuances the given buildpack supports. As most often the case they blindly install the latest version. This causes issues when buildpack removes a major version of .NET while there are active apps running on the platform that relied on this version. An example is release 2.3.35 of the buildpack which removed .NET 2.1, but did so as part of a "patch" semver release increment. A patch release should not have major breaking changes like this, so when platform team upgrades none of the deployed apps are able to be restaged.
The proposal is to increment a major version number of the buildpack when any major versions of .NET are removed, and increment a minor version when a major version is added (being that .NET SDKs are backward compatible in most scenarios and should generally not produce breaking changes). This would allow platform team to maintain an older version of the buildpack on the platform under a different name, allowing outdated apps to "peg" against older buildpack.