A Release Schedule and Version Numbering Scheme for SunPy#40
Conversation
Update SEP-0009.md Update SEP-0009.md
Update SEP-0009.md
|
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. |
|
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? 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. |
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.
From feedback I have seen users already hate how we break stuff where our version number is
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
left a comment
There was a problem hiding this comment.
My changes have been incorporated.
rhewett
left a comment
There was a problem hiding this comment.
Up to the decision rationale, this is good enough to proceed
| 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. |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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?
Co-Authored-By: Cadair <stuart@cadair.com>
| ## 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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
I think I have clarified this in the newest commit, can you take a look?
| 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 |
There was a problem hiding this comment.
This change came out of a conversation with @dpshelio
@nabobalis what's your thoughts on this?
There was a problem hiding this comment.
I don't totally get what you mean in the paragraph, basically you pledge to get at least a 2 year deprecation cycle?
There was a problem hiding this comment.
Shall we have a time commitment here instead of "one LTS release"? In case the frequency of LTS releases changes...
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
| 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 |
There was a problem hiding this comment.
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>
|
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
left a comment
There was a problem hiding this comment.
Sorry for my late response. 👍
|
What is the rationale for following Astropy? Should this be explicit? |
|
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. |
|
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? |
|
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. :) |
|
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. |
Rendered
fixes #39