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
>> 

Reply via email to