-
Notifications
You must be signed in to change notification settings - Fork 393
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
add Client.write_data
method
#1028
Conversation
Codecov Report
@@ Coverage Diff @@
## main #1028 +/- ##
==========================================
+ Coverage 84.78% 84.99% +0.21%
==========================================
Files 65 65
Lines 3083 3133 +50
==========================================
+ Hits 2614 2663 +49
- Misses 469 470 +1
|
Hi @M0NsTeRRR welcome! Thanks very much for submitting this. I like the idea of adding a new function to avoid the issue described in #133 (comment) where we would lose access to a second named kwarg without a transition period. I think I would like to modify the idea and schedule as follows:
So, here's my reasoning for the more complex replacement:
So the idea is that in In If the arguments were passed by keyword,
In In I will try to write a "guide" for callers on what change(s) to make, in what version(s), depending on their needs. Sorry that was quite long! What do you think? |
Hello, No worries :) I find the plan a bit complicated and it adds a lot of maintenance on several versions. If we follow the semantic version, a major version update can break changes. We also have to think that we will have to explain this change in the changelog and that it must remain quite readable. I would suggest :
Regards, |
While it's true that we can make a breaking change more quickly than I laid out and still conform to semver, strict adherence isn't the only concern.
In this case, due to the unique situation of us being unable to add the new parameter the original function first due to exacerbating the effect, we have a new function that will eventually replace the original, and this means some users will have to change the function they use twice. I want to minimize the number of users who have to make that change and make the path as smooth as possible for everyone.
I agree; but our changelog at the moment only consists of PR titles and links, so any explanation for these changes need to go into some PR or issue. I will write a more coherent guide for what changes to make and when they need to be made (from the POV of a user and/or a dependent project maintainer) to help with that. Writing from this POV should be simple than the explanations above which are all about implementation.
I can definitely understand that it seems like v4 is incredibly far in the future. It look a very long time before v1 was released, and since then, we're quite behind schedule on v2. This is something I'm actively looking to change. I want us releasing more quickly, with fewer changes per release (mostly these will be minor releases).
This means we should be releasing a major version a minimum of once a year, and that assumes no other breaking changes outside that schedule. Realistically, I expect we'll do ~2 major releases a year, as long as there is something breaking to release. I also expect to release I can say with some confidence, that even looking 2 years out, the chance of a complete rewrite is effectively zero. If that were to happen, it's unlikely it would be with the current set of maintainers, and it would likely be a new project altogether.
They are minimal! Especially if your scope is that you have a script or small project, or an application where you can strictly control your versions. If you maintain a project that also needs to support a range of library versions (such as one of the projects I maintain), then more overlap is appreciated :)
I think the maintenance needed per version is quite minimal, and can be planned out in advance (which I will write up specific issues for). I also want to stress that the responsibility for that maintenance is on us maintainers. While this PR and any future contributions are very much appreciated, I do not expect that this PR means you must also implement all the other steps. The warning stuff in particular is probably not very fun to do, but I'm prepared to implement it for We can continue this discussion (and probably we should move it back to #133), but I think we both at least agree that this PR can be added to Thanks again for your time and this contribution. |
Ok I understand your point of view, it's understable. One of my concern was of course the release of v1 who tooks 5 years but as you are the author of the projet you have the clearest view of it. Your welcome :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great, thank you! I'm going to merge soon, I want to write up the other issues for future changes, and to provide guidance for users before merging. Very excited to get this released!
Sure your welcome, I will fix ansible issue once you release a tag. Will you tag a new release after this PR or I have to wait a bit ? |
As it happens, this is the last remaining PR that we're planning for Let's chat on the |
If you are here to understand the changes as a user, please see:
Client.write
method #1034Hello,
This PR fix #133.
I suggest this implementation (name can be changed but i've avoided
write_v2
to not lead confusion with kv v1 and v2) to handle backward compatibility.V2 : We add this function
V3 : We replace the old one and delete this function
or
V2 : We add this function
V3 : We replace the old one and redirect this function (to keep both for a certain time, for example until v4)
VX: We remove this function
Regards,