-
-
Notifications
You must be signed in to change notification settings - Fork 25k
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
Some ideas for breaking changes for 2.0 #28394
Comments
A few more:
|
Because "breaking changes" (backwards incompatible change without deprecation cycle) triggers a pet peeve in me: can we approach this from a "benefit for the user" point of view? With this I mean thinking about what the benefit to the user is and then why it can't be done via deprecation cycle. IMHO a new (major) version should be about all the great (new) things people can do, not about all the things that they can't do anymore. Maybe it is only a small mindset shift or people are already thinking this way and just not writing it down like that (because it is obvious to them). Besides making me happier, I think a positive message around changes makes it easier to "sell" those changes to users (has to be genuine though, not "shit sandwich" style ;) For example #27873 which I like and want could be: Use the easy to discover name for the estimator that is our "best option". This means more users will discover and use what is likely to be the right tool for the job. For me that is an example of approaching it from the point of view of "what does a user gain from this". I don't know yet it we can't do this with a normal deprecation cycle, or at least I haven't given up hope that we might discover a way to do it. |
@lorentzenchr I'd have to check on the I wanted to list things that are "only" changes without the need to design new APIs; there's a bunch more of those in the 1.0 milestone but they are ... not super easy to achieve. @betatim The things I cited were things were we evaluated long ago (and I'm happy to reevaluate that at any point) a deprecation cycle would not be feasible. But maybe we are considering different trade-offs now. All meta-estimators
Oh and |
I'm not against (or for) particular breaking changes. The thing I see happening too often for my taste is some kind of "free for all" when there is a major version change. Suddenly everything gets done via a breaking change without deprecation cycles "because its a new version, we are allowed to do it!". This is the thing I'm against. If we can agree that a particular change will improve the life of a user and we can't think of a way to do it with the normal deprecation cycle methods, that is a prime candidate for a change in a 2.0 release. You don't want to end up being Perl 6. |
We have went with deprecations over breaking changes for 1.0. I feel like it will be hard to change this philosophy for 2.0. If we must have breaking changes, I would only want <=2 of them and only if it is a major benefit to our users. As for the items in #28394 (comment), I see the following deprecation strategies:
We can add the new option now and deprecate the default.
Update the signature to
Introduce a new Most of the suggestions in #28394 (comment) is new API, so there should be no breaking changes. |
@thomasjpfan That was actually the original reason to have it be Btw, another one just came up, which is the |
An idea I had just now regarding making life easier for people transitioning from 1.x to 2.0 in the situation where there are breaking changes: we could investigate making a small tool like (I got the idea while thinking about |
Another idea:
|
Nice Idea to have a list like that :) Here are the two things that I would change:
|
There's some breaking changes that we wanted to do for a long time but didn't do for 1.0 but I figure it might be worth starting a list somewhere for 2.0, since they keep coming up and we might forget them.
OneHotEncoder
changehandle_unknown
towarn
by default (and maybe recommend target encoder or max_categories or something)train_test_split
assume the second entry isy
and stratify if the estimator is a classifier, like all othercv
methods do. Maybe call the attributesX
andy
and allow arbitrary additional entries.Pipeline
do aclone
in__init__
.The text was updated successfully, but these errors were encountered: