The rule for this seems extremely simple to me. The changelog uses <simpleType name="changeType”> <restriction base="string”> <enumeration value="added”/> <enumeration value="changed”/> <enumeration value="deprecated”/> <enumeration value="removed”/> <enumeration value="fixed”/> </restriction> </simpleType>
If every entry is deprecated or fixed it is a patch release. Everything else is a minor release. Yes, I realize that you can add, change or remove things without impacting compatibility but whether it is a patch or minor release isn’t about compatibility. Ralph > On Dec 11, 2023, at 1:43 PM, Gary Gregory <garydgreg...@gmail.com> wrote: > > IMO: > > A new protected or public anything needs a minor version bump. I think that > follows sem ver. > > Gary > > On Mon, Dec 11, 2023, 1:56 PM Piotr P. Karwasz <piotr.karw...@gmail.com> > wrote: > >> Hi Volkan, >> >> On Mon, 11 Dec 2023 at 10:26, Volkan Yazıcı <vol...@yazi.ci> wrote: >>> *Given a version number `MAJOR.MINOR.PATCH`, increment the:* >>> >>> >>> - *MAJOR version when you make incompatible API changes* >>> - *MINOR version when you add functionality in a backward >> compatible >>> manner* >>> - *PATCH version when you make backward compatible bug fixes* >>> >>> I think we all agree on what warrants a major version bump. The >> definition >>> of what constitutes an API, etc. are all open to interpretation, but we >>> have a common sense of it in the PMC. >> >> I think we can split this into a: >> >> * minimal version dump, dictated by technical reasons (changes in the >> methods exposed to the public), >> * and a component that can not be automatically detected, which is >> due to change of behavior. E.g. I can modify the behavior of the `%i` >> converter without touching the public API. >> >>> We mostly have a problem whether the next release needs a minor or patch >>> version bump. I propose to refine the official semantics as follows: >>> >>> Are we making a release to *only* address a set of particular issues? >> That >>> is, does the following hold? >>> >>> [next release] = [last release] + [fix1] + [fix2] + ... + [fixN] >>> >>> If so, this needs a patch version bump. Otherwise, this is a minor >> version >>> bump. >> >> What I am having a problem with is the default type of change: >> >> * for me every release should be a **patch** release, unless there >> are reasons to publish a minor release. For example the next Log4j >> release should be 2.22.1. This is the old strategy used by Log4j; >> * recently this strategy shifted to: every release is a **minor** >> release, unless someone justifies that it can be a patch release. All >> our repos are currently using a snapshot version that is a minor >> version bump from the previous release. >> >> In the end the result (release version number) might be the same, but >> the burden of proof falls on those advocating for a patch release. >> >> The concrete example of `logging-parent` is hard to discuss, since it >> is not written in Java, but a mix of Maven plugins, bash scripts and >> Github action workflows. Your fix of the problem we were having with >> `META-INF/services/` is pretty nice, but for me it constitutes a bug >> fix, not a new feature children project can rely upon. The value of >> the contribution does not depend on the version bump it generates, >> patch contributions require usually more effort. >> >> On the other hand if we consider that the `bnd:jar` execution >> disappeared from `logging-parent`, this might be considered a major >> version change. >> >> Piotr >>