-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Spec 0: How to handle versions with major API changes #217
Comments
The spec avoids referring to versions, major or minor, and is specific on the drop schedule being time-based. And says nothing about upper limits. So not sure what we could/should suggest in regard of np 2.0 |
I'd be interested in thoughts/discussions of how we could include upcoming major changes either in SPEC-0 or in a separate SPEC. numpy/numpy#26191 is certainly a useful tool, but a clear message of the form "start testing alpha releases now" would be useful. Bonus points for having a central place (even an RSS feed 😄) for registering such broadcasts. (Not knowing what I'm talking about, something between |
The RSS (or else) feed is an interesting idea. One could subscribe to a list of projects and get all the relevant messages. |
@joshmoore - a lot of projects are testing with nightly wheels, imo that is super helpful for avoiding surprises at dependency release time (and you could have that as a cron job, or allowed to fail to avoid failing unrelated PRs/ allow a bit more time for opening fixes) |
@bsipocz: definitely! And I think they're great, but on the spectrum of possible upgrades to watch, that's even more churn than
Maybe this is almost more like distributions (e.g., eclipse, ubuntu) where projects opt in (for a particular build, etc.) to the "Next Big Thing" ™️ . |
I'm a little unclear why a third level would be needed. If you want the low-churn version, use For a major change like numpy 2.0, there'll be a beta version - |
That may well be the case, and I'm very happy to hold my brainstorming for elsewhere/elsewhen. 😺 I think the issue I'm mulling over is: why didn't more testing take place? My guess would be that as a general rule fewer projects can take on the additional burden of constantly testing with |
In practice, for the smaller libraries I maintain, there is hardly ever a lot to fix. So either OTOH, in my experience, if your project runs into a lot of problems then the only option is to pay attention to the nightlies and participate in the upstream dev cycle at least with feedback because you likely do something non-standard. (E.g astropy had a lot of issues with the new release, but it was not exactly unexpected, thus there was participation in the dev process, which imo was useful for upstream, too) |
What @bsipocz says above sounds about right to me. It doesn't get less burdensome than running a single job with
Your impression may not be fully correct here. The amount of testing done for numpy 2.0 was enormous. If you're wondering why other packages didn't actually do a release to fix known problems - that's a different question I think. Doing releases can be a ton of work when you have to produce dozens of wheels, fix all your other problems in your main branch, etc. The majority of issues you're seeing is because packages didn't release in time. |
Maybe we should have a |
The RSS sounds a possibly good idea, but is that really realistic that a project haven't heard about the upcoming breaking numpy 2.0 but will notice something on the RSS feed? It has been talked about for about a year now, and had an extremely long release cycle with betas expected to come out at the very end of last year/early this year which was then pushed forward due to the extended downstream testing. So, my point is, that we really should advocate for best testing practices and a better adoption / normalization of SPEC4 . |
Huge apologies if I sound like I'm not appreciative of all the work and testing that did go on. But there are definitely libraries that did not do due diligence (raises hand in multiple cases) and so I'm trying to provide feedback on what may have helped catch these outliers. The best I have at the moment is a less stringent version of SPEC-4 so that it would receive wider adoption (or perhaps libraries for which SPEC-4 is all the more critical). But if I'm distracting from more key issues, I'm also happy to sit back and see how the rest of this lovely community moves things forward.
:) Probably not. And it might well be that nothing would have helped the stragglers. But I can tell you that on all of my projects I have definitely started pointing everyone to SPEC-0 in terms of when things are going to be dropped, and I had just noticed before posting #217 (comment) that numpy 2 wasn't mentioned there. Since I haven't yet found the time to implement SPEC-4, I was left in between. Certainly completely my own fault, but a situation that may well be indicative of others. |
No worries at all, no need to apologize. It'd be good to update SPEC 0 indeed to mention NumPy 2.0. It won't shift the regular time-based window at all though, so it's just an administrative update there. Good point on SPEC 4: it could explain that if testing nightlies is too much work, then please still use |
👍
❤️ and I will try to get there, but if you rely on even one library that misbehaves I can tell you this becomes problematic. |
Maybe one thing we can do is write docs or develop some tooling to make it easier to run tests against nightlies with the following properties:
I know a few projects do this and it seems to help. |
If I understand Josh's need, it is to have a central location where urgent updates are fed back to community developers. This could be on the blog, although I suspect a category, such as "developer notifications", on https://discuss.scientific-python.org would be easiest, since it has good custom subscription preferences. Such a category would be low bandwidth, but can contain items like "be aware np 2 is breaking and is coming out soon", or "scipy sparse matrices now have an array-compatible interface" or "scikit-image is transitioning to a new package name, skimage2" (that hasn't happened, but you get the gist). We can work references into whatever central announcement mechanism we choose into SPECs, to ensure wide awareness in the ecosystem. |
👍 if I can expand on that, I'd add coordination on the when and who has committed to update, which @rgommers did wonderfully in numpy/numpy#26191 but I missed. (https://python3statement.github.io/ also comes to mind.) |
|
Thinking about NumPy 2.0 coming out soon, I think it would be nice if the spec had some discussion about how downstream projects should handle major releases with significant API changes in packages they depend on.
The text was updated successfully, but these errors were encountered: