Skip to content

A Release Schedule and Version Numbering Scheme for SunPy#40

Merged
ehsteve merged 17 commits into
sunpy:masterfrom
Cadair:releasing-2
Jun 26, 2019
Merged

A Release Schedule and Version Numbering Scheme for SunPy#40
ehsteve merged 17 commits into
sunpy:masterfrom
Cadair:releasing-2

Conversation

@Cadair

@Cadair Cadair commented Jan 30, 2019

Copy link
Copy Markdown
Member

Rendered

fixes #39

@mbobra

mbobra commented Jan 30, 2019

Copy link
Copy Markdown
Member

Nice!! Do people think it is a good idea to mention papers? E.g.:

All effort will be made to publish a paper coincident with every / every other LTS release.

@dpshelio

Copy link
Copy Markdown
Member

If I understand correctly we are not preventing API changes in minor versions (like with semantic versioning), will 1.2.0 be backwards compatible with 1.0.0?
I also don't see much of a point of changing versioning number every year, mostly if not big changes are in place. It can, unless forcing updates as the browsers do with pop-ups, the opposite effect on our users, to keep them all not updating for fears to things to break. If we are going to do this we really need to educate our users beyond just this SEP and releases notes. That won't be an easy task.

Though I agree with @mbobra, that papers would be nice, I don't think one per LTS, with the proposed calendar, is doable. Also if there are no "new" things worth to tell about as it's possible that there are no even API changes. I would aim for all the odd/even versions instead.

Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md
Comment thread SEP-0009.md
@ehsteve

ehsteve commented Mar 12, 2019

Copy link
Copy Markdown
Member

FYI @mbobra @dpshelio I've made some suggested edits and made a PR to @Cadair (see Cadair#6).

@Cadair

Cadair commented Mar 18, 2019

Copy link
Copy Markdown
Member Author

If I understand correctly we are not preventing API changes in minor versions (like with semantic versioning), will 1.2.0 be backwards compatible with 1.0.0?

Correct, this SEP does not specify any policy with regards to API breakages. I plan to write a short document on API breakage policy in the sunpy docs.

I also don't see much of a point of changing versioning number every year, mostly if not big changes are in place.

The information I (after lots of discussion with @rhewett ) want to convey in the version number is the length of support of each release. I am open to any numbering system which does this.

It can, unless forcing updates as the browsers do with pop-ups, the opposite effect on our users, to keep them all not updating for fears to things to break.

From feedback I have seen users already hate how we break stuff where our version number is 0. so I really don't think most people are going to use the version number as a metric for API stability. Also I think that telling a user that if they use a x.0 version it will be supported for a year is a robust statement which is much easier to make than "the 1.y series of releases will be mostly stable, unless we find a major bug, and until we get bored and want to break something at some point in the future". For more on this I would point you at Russ's comments on the previous version of this document: #30 (comment) as he is the one that changed my mind from roughly your perspective.

If we are going to do this we really need to educate our users beyond just this SEP and releases notes. That won't be an easy task.

We need to do this anyway, I don't think there is a universal language of version numbers we can tap into to shortcut this process, Astropy do one thing, pip do another etc etc they all are different and have no real bearing on their (sometimes very strict API policies).

@ehsteve ehsteve left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My changes have been incorporated.

@rhewett rhewett left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Up to the decision rationale, this is good enough to proceed

Comment thread SEP-0009.md Outdated
is the responsibility of the lead developer to create a release schedule that
is consistent with these requirement and to present it to the Board at the
beginning of every year. Releases are recommended to be timed to pertinent
release cycles of upstream packages.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And that would be published on the wiki? on the docs? as a new project/PR?
I would prefer we say here where to expect that information, and how long the beginning of the year would take... is that the first week of January? is that before end of February?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well I would imagine it in reality wont change very often, so I don't think timing is that important. To be honest I think the best canonical reference for the release schedule is this SEP?

Comment thread SEP-0009.md Outdated
Co-Authored-By: Cadair <stuart@cadair.com>
Comment thread SEP-0009.md
## Release Schedule

This SEP prescribes that there will be at least two releases of the sunpy core
package per year with at least 4 months (preferably 6 months) between these

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could mean that we could have up to an infinite number of releases in a year so long as there are at least four months between the first and last releases. Is this what is meant? If not, is this a loophole that we don't want to exploit in the future? Does this need to be clarified?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I have clarified this in the newest commit, can you take a look?

Comment thread SEP-0009.md
emitted** when an alternative option exists for the functionality, or the
functionality is to be completely removed.

All effort will be made to provide at least one LTS release where functionality

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change came out of a conversation with @dpshelio

@nabobalis what's your thoughts on this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd ask someone smarter.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't totally get what you mean in the paragraph, basically you pledge to get at least a 2 year deprecation cycle?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shall we have a time commitment here instead of "one LTS release"? In case the frequency of LTS releases changes...

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The purpose of this is to ensure that if any users go from LTS to LTS release they still get a deprecation warning about pending changes. So with the planned release cadence it would be a one year deprecation cycle.

@tiagopereira What do you see as the value in a time based deprecation policy? I think that if the cadence of the LTS releases change then the deprecation time would also want to change along with it, so that as I mentioned people going from LTS to LTS will always get a warning.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if a time-based policy is the way to go. I just wanted to ensure that API changes do not happen very often, in case LTS releases become very frequent. Probably fine to keep the current wording.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The idea of this SEP isn't to overly restrict the ability for us to make API changes, but the idea of an LTS is that you get at least a year of support on that release, so you can opt into slow API changes by sticking on that LTS and then moving onto whatever the current LTS is after a year.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LTS releases become very frequent

By definition they cannot be that frequent, from the practical point of view sunpy is manure enough that no one wants to support multiple releases for years.

@Cadair - I missed the point that LTSes are proposed to be a yearly thing, a minimum ~1-year deprecation seems totally reasonable then.

Comment thread SEP-0009.md

@tiagopereira tiagopereira left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good to me!

Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md Outdated
Comment thread SEP-0009.md
emitted** when an alternative option exists for the functionality, or the
functionality is to be completely removed.

All effort will be made to provide at least one LTS release where functionality

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shall we have a time commitment here instead of "one LTS release"? In case the frequency of LTS releases changes...

Co-Authored-By: Cadair <stuart@cadair.com>
@Cadair

Cadair commented Apr 15, 2019

Copy link
Copy Markdown
Member Author

I think I have addressed most of the comments on this so far. I had a chat with @dpshelio about it the other week, so maybe he could review it 😉

@dpshelio dpshelio left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for my late response. 👍

@wafels

wafels commented May 14, 2019

Copy link
Copy Markdown
Member

What is the rationale for following Astropy? Should this be explicit?

@Cadair

Cadair commented May 14, 2019

Copy link
Copy Markdown
Member Author

We depend most heavily on astropy, so we generally can make use of new features. We tend to depend on n-1 versions of astropy at the point of release, i.e 3.2 is going to come out around the same time as 1.0 and 1.0 will be >=3.1.

The point of the wording in this is that we should follow upstream releases where it makes sense, which I feel it currently does for astropy.

@kreardon

Copy link
Copy Markdown

Under "Deprecations and Documentation" it says that "code will emit deprecation warnings." The term "emit" seems vague (to me). Would it be unwise to more specifically say that such warnings will be passed to the logging system (and at what level - WARNING, INFO)? Just so it's clear how to such warnings should be registered and accessed?

@Cadair

Cadair commented May 23, 2019

Copy link
Copy Markdown
Member Author

I was using "emit" here to cover issuing a warning using the standard python warnings mechanism (https://docs.python.org/3/library/warnings.html#warnings.warn) this is very configurable, the sunpy logger will log them but you can also convert them to errors at run time (as our tests do) etc. So I don't really want to specify the behaviour here beyond that of "it should be a python warning".

@kreardon

Copy link
Copy Markdown

I was using "emit" here to cover issuing a warning using the standard python warnings mechanism (https://docs.python.org/3/library/warnings.html#warnings.warn) this is very configurable, the sunpy logger will log them but you can also convert them to errors at run time (as our tests do) etc. So I don't really want to specify the behaviour here beyond that of "it should be a python warning".

Okay, makes sense. Thanks. Now I know what "emit" means. :)

@Cadair

Cadair commented Jun 14, 2019

Copy link
Copy Markdown
Member Author

I have made one change here, the LTS release will be the first yearly release (i.e to match when we actually did 1.0). Also this means we can merge changes from GSOC etc into the short-cycle release and have them out in the wild before the next LTS.

@ehsteve
ehsteve merged commit 2ebe0d5 into sunpy:master Jun 26, 2019
@Cadair
Cadair deleted the releasing-2 branch June 26, 2019 17:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Write a SEP describing release schedule and versioning system