ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Petr Ivanov <mr.wei...@gmail.com>
Subject Re: [DISCUSSION] IEP-69 The evolutionary release process
Date Wed, 17 Mar 2021 09:16:30 GMT
Maksim,


Great summary!
+1 for versioning scheme.


However, deprecation rules can be possibly misleading.
I think that we should use 'since' as a mandatory annotation, that will mark the release where
the API can (not should) be changed, regardless of our intention to modify it.
And add some kind of a tag or alike to that APIs only that we need to update/remove since
mentioned release.
Otherwise, I think, simple deprecation annotation will raise questions 'when it was deprecated'
or 'is it already time to update/remove deprecated API'.

Also, if agreed on 'since' annotation usage, we possibly should create the issue to tag all
current deprecated APIs with since where applicable.

> On 16 Mar 2021, at 21:05, Maxim Muzafarov <mmuzaf@apache.org> wrote:
> 
> Folks,
> 
> 
> Thanks to everyone for participating in the call. Here is the list of
> points we've agreed on and the list of actions which should be
> discussed in more details.
> 
> 
> = AGREED =
> 
> == Versioning ==
> 
> grand.major.bugfix[-rc_number]
> 
> The 'grand' version is fixed while both Ignite architectures (current
> version 2.x and 3.x) are in a state of active development/maintained
> or until otherwise is discussed further. This means:
> - the master branch of the ignite repository [2] always release under
> the '2.x.x' version
> - the main branch of the ignite-3 repository [1] always release under
> the '3.x.x' version
> 
> The 'major' versions for each architecture may contain breaking
> backwards compatibility changes compared to the previous one if the
> following criteria are met:
> - users should be warned about breaking release changes (the ways of
> notification should be additionally discussed and agreed upon)
> - the deprecation rules may be applied for the current 'major' release
> (the ways of deprecation must be additionally discussed and agreed
> upon)
> - current @deprecated already have enough time live and some of them
> can be removed using common sense
> 
> The 'bugfix' version is used for emergency releases and can't contain
> any breaking backwards compatibility changes.
> 
> == Commitments ==
> 
> Any commitment to support previous releases (e.g. 1 year, 1 quarter)
> have no sense to the open-source Ignite community in the case of
> observed backward compatibility violations, however, in any of such
> cases, an emergency release can be performed according to the accepted
> release procedure.
> 
> 
> = DISCUSSION & SUGGESTIONS =
> 
> 
> == Deprecation rules ==
> 
> The API deprecation rules must be discussed and agreed upon in more
> details. The list of options we have:
> - deprecate and remove API allowed in the next release
> - deprecate and remove API allowed through the one release
> - deprecation may contain comments - the release version then the API
> will be changed
> - deprecation may contain comments - the date from which the API changes allowed
> 
> I've checked the `JEP 277 Enhanced Deprecation` [3] proposal which
> adds the `forRemoval` and `since` optional elements to the deprecated
> annotation and I think we can use a similar approach here with some
> additions. For instance, if the last released version is 2.10 my
> suggestions would be the following:
> - [case: change API as quickly as possible] mark some API as
> deprecated, set 'since' version 2.12, change it in the 2.12 release
> major version.
> - [case: deprecate API without intention to change] mark API as
> deprecated without 'since' options, change it without notifications
> since 2.13 releases and so on.
> 
> 
> == User notification rules ==
> 
> Uses must be well-notified about the planned backward compatibility
> violations. The options we have:
> - the notification thought the source code with well-described JavaDocs
> - add labels to the JIRA issue if some deprecations occur in the related patch
> - add deprecation and backward compatibility paragraph to the RELEASE_NOTES
> - add a page to the Apache Ignite website with a backwards
> compatibility description between the closest versions
> 
> All of the above must be done.
> 
> 
> == Experimental and unstable APIs ==
> 
> The options we have:
> - only the new API can be marked as unstable and/or experimental
> - such APIs can be changed without any notifications
> 
> 
> Please, share your thoughts.
> 
> 
> [1] https://github.com/apache/ignite-3
> [2] https://github.com/apache/ignite
> [3] https://openjdk.java.net/jeps/277
> 
> On Mon, 15 Mar 2021 at 19:41, Dmitriy Pavlov <dpavlov@apache.org> wrote:
>> 
>> Folks,
>> 
>> let me add my 50 cents. I don't see major issues with this IEP, for now.
>> And I really looking forward to talking about it. I can't get what causes
>> misunderstanding.
>> 
>> The only thing that concerns me here is that IEP requires the community to
>> support solutions for 1 year, 1 quarter, etc.
>> 
>> Apache community is not a commercial company that provides support of any
>> kind, and I would be reluctant to add these or similar statements to any
>> public documents. At any point in time, the community and PMC can vote and
>> introduce any major feature breaking compatibility. We tend to avoid such
>> actions to keep users best interest. But it is not a commitment.
>> 
>> Sincerely
>> 
>> 
>> чт, 11 мар. 2021 г. в 23:11, Maxim Muzafarov <mmuzaf@apache.org>:
>> 
>>> Val,
>>> 
>>> 
>>> I'm sorry if anything from what I've said sounded disrespectful. All
>>> of you are examples for me to follow :-)
>>> 
>>> Have you checked the `motivation` [1] topic on the IEP-69 page? Should
>>> I add more details to it prior to the call? I want to make Ignite
>>> better and also think that the current 2.x version with all the
>>> advantages and disadvantages is far from exhausted its capabilities.
>>> I'm pretty sure the same motivation page exists for 3.0 version
>>> describing the advantages and disadvantages of developing mentioned
>>> IEPs. It will be good to share it prior to the cal also.
>>> 
>>> 
>>> [1]
>>> https://cwiki.apache.org/confluence/display/IGNITE/IEP-69%3A+The+evolutionary+release+process#IEP69:Theevolutionaryreleaseprocess-Motivation
>>> 
>>> On Thu, 11 Mar 2021 at 01:21, Valentin Kulichenko
>>> <valentin.kulichenko@gmail.com> wrote:
>>>> 
>>>> Ksenya, thanks for scheduling this so quickly!
>>>> 
>>>> Guys, I hope we can make this discussion constructive. Please keep in
>>> mind
>>>> that Ignite 3 is an ongoing project supported by multiple contributors,
>>>> committers, and PMC members. Neglecting 6+ months of effort and
>>> suggesting
>>>> that it's just "prototyping some cool features and nothing more" is
>>> really
>>>> bizarre, and, quite frankly, sounds disrespectful to fellow developers
>>>> (although I'm 100% sure it was not intended this way).
>>>> 
>>>> Maxim, one of the biggest issues I have with your IEP is that I don't
>>>> understand the motivation behind it. If you don't mind, I would like to
>>>> suggest that you kick off the meeting with a detailed explanation
>>>> of exactly that. The first step is to achieve a mutual understanding of
>>>> each other's goals. Once we do that, I'm sure we will easily find a
>>>> solution.
>>>> 
>>>> -Val
>>>> 
>>>> On Wed, Mar 10, 2021 at 8:55 AM Kseniya Romanova <
>>> romanova.ks.spb@gmail.com>
>>>> wrote:
>>>> 
>>>>> Let's make a quick call next week and try to find a compromise which
>>> can
>>>>> get the process moving:
>>>>> https://www.meetup.com/Moscow-Apache-Ignite-Meetup/events/276851588/
>>>>> 
>>>>> ср, 10 мар. 2021 г. в 16:27, Maxim Muzafarov <mmuzaf@apache.org>:
>>>>> 
>>>>>> Folks,
>>>>>> 
>>>>>> 
>>>>>> Agree, the discussion may be endless without compromises on all
>>> sides.
>>>>>> I always think that if there is no consensus (and I see from the
>>>>>> thread [1] that it's was no found) for such important decisions like
>>>>>> product future development and releases AFS provides the voting
>>>>>> procedure. Without fixing the results of the discussion [1] it sounds
>>>>>> like prototyping some cool features and nothing more.
>>>>>> 
>>>>>> So, back to Denis suggestion can you share - what would be the best
>>>>>> time for all of us (considering different time zones) to have a call?
>>>>>> 
>>>>>> I also think that we should start a vote about the future releases
on
>>>>>> our Apache Ignite web-site and user-list, thus all who are using
the
>>>>>> Apache Ignite may choose the best option they like.
>>>>>> 
>>>>>> 
>>>>>> [1]
>>>>>> 
>>>>> 
>>> http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-Ignite-3-0-development-approach-td49922.html
>>>>>> 
>>>>>> On Wed, 10 Mar 2021 at 03:57, Valentin Kulichenko
>>>>>> <valentin.kulichenko@gmail.com> wrote:
>>>>>>> 
>>>>>>> Hi Maxim,
>>>>>>> 
>>>>>>> I disagree with the suggestions. Several community members have
>>> already
>>>>>>> pointed out the discussion about Ignite 3.0 [1]. During that
>>>>> discussion,
>>>>>> we
>>>>>>> did agree on the scope of the changes for 3.0, as well as the
>>> general
>>>>>>> direction for the product. The new repo was created not to "develop
>>>>> from
>>>>>>> scratch", but to provide an opportunity for the community members
>>> to
>>>>>>> actively work on Ignite 3 without killing the Ignite 2.x. No
>>>>> alternative
>>>>>>> solution for this was presented, so we went ahead with the process
>>> -- I
>>>>>>> consider that to be an example of the silent consensus.
>>>>>>> 
>>>>>>> I also want to emphasize that Ignite 3 is active and is moving
>>> forward.
>>>>>> If
>>>>>>> you look at the ignite-3 repo, commits and PRs are coming in
on
>>> regular
>>>>>>> basis. We also had the first alpha release early in the year.
I do
>>>>> agree
>>>>>>> with you, however, that there is not too much activity on the
dev
>>> list.
>>>>>> As
>>>>>>> far as I can tell, the main reason for this is that communication
>>> moved
>>>>>> to
>>>>>>> IEPs and GitHub PRs, for better or worse. This is something we
all
>>> can
>>>>>> talk
>>>>>>> about -- I personally would like to see more discussions on the
dev
>>>>> list.
>>>>>>> 
>>>>>>> And finally, I agree with Denis. This whole situation is
>>>>>>> counter-productive. I'm happy to jump on a Discord or any other
>>> voice
>>>>>> chat
>>>>>>> to discuss in more detail.
>>>>>>> 
>>>>>>> [1]
>>>>>>> 
>>>>>> 
>>>>> 
>>> http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-Ignite-3-0-development-approach-td49922.html
>>>>>>> 
>>>>>>> -Val
>>>>>>> 
>>>>>>> On Fri, Mar 5, 2021 at 11:09 AM Maxim Muzafarov <mmuzaf@apache.org
>>>> 
>>>>>> wrote:
>>>>>>> 
>>>>>>>> Ignites,
>>>>>>>> 
>>>>>>>> 
>>>>>>>> I've created the IEP-69 [1] which describes the evolutionary
>>> release
>>>>>>>> process for the Apache Ignite 2.x version. You can find all
the
>>>>>>>> details of my suggestion there, but here you can find the
crucial
>>>>>>>> points:
>>>>>>>> 
>>>>>>>> 0. Versioning - grand.major.bug-fix[-rc_number]
>>>>>>>> 
>>>>>>>> 1. Prepare the next 3.0 release based on 2.x with some breaking
>>>>>>>> compatibility changes. The same things happen from time to
time
>>> with
>>>>>>>> other Apache projects like Hadoop, Spark.
>>>>>>>> 
>>>>>>>> 2. Discuss with the whole Community and assign the right
release
>>>>>>>> version to the activities related to the development of the
new
>>>>> Ignite
>>>>>>>> architecture (currently all the changes you can find in the
>>> ignite-3
>>>>>>>> branch).
>>>>>>>> I see no 3.0 discussions on the dev-list and I see no-activity
>>> with
>>>>>>>> the 3.0 version currently. So,  it's better to remove the
`lock`
>>> from
>>>>>>>> the 3.0 version and allow the removal of obsolete features.
>>>>>>>> 
>>>>>>>> 3. Guarantee the PDS compatibility between the `grand` versions
>>> of
>>>>> the
>>>>>>>> Apache Ignite for the next year.
>>>>>>>> 
>>>>>>>> 4. Guarantee the bug-fix release for the last 2.x Apache
Ignite
>>>>>>>> version for the next year.
>>>>>>>> 
>>>>>>>> 5. Perform some improvements which break the backward
>>> compatibility,
>>>>>>>> for instance: removing @deprecated API (except metrics),
removing
>>>>>>>> obsolete modules, changing the cluster defaults. You can
find
>>>>>>>> additional details on the IEP-69 page [1].
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Please, share your thoughts.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> [1]
>>>>>>>> 
>>>>>> 
>>>>> 
>>> https://cwiki.apache.org/confluence/display/IGNITE/IEP-69%3A+The+evolutionary+release+process
>>>>>>>> 
>>>>>> 
>>>>> 
>>> 


Mime
View raw message