-
Notifications
You must be signed in to change notification settings - Fork 2.3k
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
Breaking change introduced in the legacy Poetry installer #6314
Comments
Hi @adzeeman, sorry about the headache. To give you a little background, Thus, when 1.2.0 was released, the old installer would break as it would select the latest stable version for install, and then realize that 1.2.0 wasn't installable. As a compromise it was suggested that the installer fall back to 1.1.x with loud warnings in that situation -- we did so, but the with addition of a random failure percentage to try and force investigation and migration, since clearly warning messages, blog posts, and release notes had not made those downloading the script from our repo sufficiently aware. I am open to the idea of considering an explicit This was not meant to happen at the same time as 1.2.0 -- honestly the plan was to get rid of Since the cat is already out of the bag, do you think allowing for Finally, sorry again about the pain here -- deprecating the |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
I think the suggestion was that incompatibility with Our team only got around to making a general switch from Presumably when |
I still believe that my original solution was the proper fix for the "planet": I have also spent some hours yesterday morning pinning some missing It would be better if the script would install the last compatible version (1.1.15) and issue a warning that to obtain 1.2+ you need to use the new installer, and even crash if you pass in Train of thoughts:
|
Hello @jonapich,
may I asked you, why you didn't take the chance to replace the old installer by the new one? You can use the new installer to install 1.1.15 as well.
As @neersighted wrote we are open for this idea:
This may save you some time now, but if we drop the older installer script from the repo in some month, there will be other people, telling us we should have informed them earlier.
We don't want to blow up our code base for legacy reasons over the time. So it's necessary to make a clean up from time to time. You can always use a permalink to the file in a specific commit, e.g. https://github.com/python-poetry/poetry/blob/a613347bf0a9fd7b7ec782cd45222b3a0f0e7401/get-poetry.py , or even put this file in a local repo if you heavily rely on it.
As said above, you can use the new installer to install 1.1.15.
The version number based on SemVer doesn't tell you anything about the amount of code changes, it is telling you something about the changes in the API. At Poetry we consider CLI as the API and nothing more. The installer script is a stand alone project.
Please let me repeat it once more: You are not forced to a new version of Poetry. You are forced to a new version of the installer only. fin swimmer |
This is a bit useless after the fact, but I would like to point out that the way you advertised the deprecation of the old installer was not ideal. This is the warning that would be shown up the the day you made it fail on purpose:
What I read there is that "this installer is deprecated, what that means is it can't install Poetry 1.2.0". What you meant is that "this installer is deprecated and going away any minute, also incidentally it cannot install Poetry 1.2.0". Probably a lot of people, like me, were planning to upgrade to the new installer at the same time they upgraded to 1.2.0. All those people now have their pipelines broken because there was not a single day between the release of 1.2.0 and the day the "deprecated" installer was disabled (even if using it to install an older version with the Your "brownout" strategy is not tripping up stragglers who haven't updated the installer despite many warnings. I am a very excited Poetry user who was going to update as fast as possible following 1.2.0's release and was still trip up by this. Please consider revising your deprecation strategy (or having a public strategy...) for future breaking changes, it would be greatly appreciated. |
I can't speak for others in this thread, but the looming problem on my team is that the install script is used in a docker container build pipeline. We maintain branches for old release versions so that we can build them if we need a patch. All of those branches contain a Docker build which will be invalidated by the removal of the installer. So this move doesn't just force updating our current pipeline, it requires us to update the installer for every single release branch we maintain. |
I offer no view on whether the poetry project could have handled this better, but I want to encourage those of you who are blaming poetry for your CI problems to take at least a glance in the mirror. Many of us have learned this the hard way so I have some sympathy, but the fact is: if you write your pipelines in such a way that strangers on the internet can break them - then sooner or later that will happen. If you were relying on (But you shouldn't use a local copy of the script either: because you're getting all your dependencies from a repository that you own and not from public PyPI, right? So the script is useless to you anyway.) Here endeth the lesson, please resume the complaining... |
There is a world between "you can't expect to be up forever" and "you can't criticize the people taking it down". This doesn't even make sense. I am not saying that my company or my system is dying because of this. But I don't think that nothing deserves criticism until something or someone actually dies either. Let's find a way to lighten the impact and make sure future changes are handled better, please. |
You use quote marks very freely. I did not express any of the views that you are disagreeing with. |
The reason why I did not switch to the new installer is to reduce the scope of changes. When I will be ready to use the new installer, I will take the time to make sure all the ends of our CI/CD pipeline can work with it, then I will be able to roll it out globally. When I tried the new installer, I was immediately faced with a SSL issue because of an old public image. When I fixed that, I realized GitHub fails at You are right, I was foolish to curl @ master. I would have never done that if it wasn't how the documentation was written in the first place (let's be fair; the documentation recommends the What I would like to see here is the Poetry team acknowledging that this was poorly handled + mistakes were made, then offer a clean resolution that doesn't require anyone to change or rewrite anything. In a corporate environment, this kind of situation would warrant an internal post-mortem and I really hope you will go through this exercise, as a team. And while we're at it; you should use SemVer too, and ensure that patches are low risk and security fixes, minors are new ADDED features and deprecation warnings, and majors come with deprecations. |
Is it a problem if a hundred developers are using their own local poetry install while sharing repos? Anyone can lock and commit. Should everyone and all repos uses the same major/minor/patch or if I can expect some consistency? So far, it's working well, but it's all
To be totally honest with you, that's not something users want to have to deal with. I don't feel like this kind of awareness is necessary in other CLI tools such as docker, kubectl, aws cli, etc. Either there are no rules, or they are very clearly typed out. Also, their old stuff pretty much always work forever when you follow their docs, it doesn't suddenly break a 6-months old branch. They don't assume that the reader knows about all of the best practices, so they take the time to type everything out if needed, and that's why they are so successful. The docs really should type out exactly what to do, such as:
So that there is no ambiguity. (edit: the link in my example is obviously wrong, it's only to illustrate the concept). This way you know that everyone actually pinned a static version, and can blame other people for not following the docs. That's much better than having to do support only to spell out that not using In light of the current events, I suggest that the documentation explains that the best thing to do in CI servers is to download the |
@adzeeman Discussion has been largely freewheeling but devoid of anything actionable. Thus I'd like input from you on my original question -- do you think that making an explicit It seems like we've already ripped off the bandaid, however painful and ill-advised that may have been. I am incline to let things stand as they are, unless there's a more graceful path (where graceful includes the future removal of this code) from where we are now that I am missing. |
I think this should definitely be done and the sooner the better, and I don't see any detraction from anyone but project members. Please let us know what we can do to make this happen as soon as possible. The idea that the deprecation warning that is already printed was ignored, and therefore you had to take this measure, doesn't seem substantiated. We noticed your warning and are taking steps. I don't understand why you imagined you had to take such drastic measures to avoid breaking things when the old installer is removed... especially if it causes just as much breakage sooner. |
@remram44 It's still unclear what you mean/want. I'd still like input from @adzeeman, but in the meantime I'm going to suggest the following solution:
A brief reminder of how we got here: no arbitrary removal or cut-off for 1.2 was picked, instead (over a year ago) The current changes are an attempt to drive awareness of the need to migrate independent from 1.2. I see the above as the best way to move forward from where we are now (given that there is wide-scale awareness of this now, it seems hopeful that January 1 won't be another CI bloodbath). |
This is reasonable, but we are not taking in account:
|
I don't think you fully groked my suggestion -- maybe this will make more sense?
You will get the latest 1.1.x version (frozen in time as 1.1.15) when you install with
1.2.0 cannot be installed with the old installer. When I say "get 1.2.0" I really mean "the installer will select version 1.2.0 as it is the latest, realize it cannot install that version, and fail with a useful error message." |
Regarding the eventual move of master to main, that is something we intend to do... However to do so cleanly will require doing forge support (aka using Github to set up the redirect), and leaving a 'fake' master around is going to cause issues. I could maybe see a new branch without shared history (which would prevent using the wrong branch for those currently tracking master) -- but the error messages given by the Git client when trying to pull that branch will be confusing. Regardless, this is not the thread/time to discuss renaming the branch. |
Hi @neersighted, I did "groke" that correctly, however I am under the impression that you did not fully evaluate the branch situation stated by a comment above: #6314 (comment) These are old release branches which are sometimes used to provide hotfixes, and thus must contain minimal changes when the need arise. Having to systematically go and adjust an environment variable or pin a version or change the script to make it work is not something that is desired / is not something that plays in your favor for that kind of workflow. The problem is specifically this part:
In fact, to be courteous to people who copy/pasted your docs back then, it would be better if they receive the latest
We agree on this! :) |
I am very much opposed to installing the latest 1.1.x when no |
This seems reasonable to me, if you want the latest and the latest can't be installed, it breaks. The current deprecation message stated that it wouldn't be able to install 1.2.0. You will never be able to make it work for old branches of any age anyway. |
Hi @neersighted. Apologies for only responding now. I did not follow the conversation over the weekend.
Seems reasonable. Changing this now to install a different version will be confusing.
The important bit is that it should succeed if a valid version is selected. This means that the
This makes sense. I.e., this flag won't serve any purpose.
This is a good idea. @neersighted, thank you for taking a look at this issue and addressing it. |
It seems like this is a compromise that works out for everyone, which is encouraging to see -- the road here was bumpy, but I think this is the best we can do for existing users, and the project as a whole. I am going to lock this issue as any discussion of this deprecation should happen in #6377 -- that is also where progress towards removal will be tracked. |
-vvv
option).Issue
Hi Poetry team. With Poetry 1.2.0, the legacy installer no longer works the same way it had.
We use Poetry in production as part of our CI/CD process, and the breaking change resulted in multiple pipelines failing.
On 31 August, the legacy installer stopped working. The fix was to append the
--version 1.1.15
to the installer. In our own time, we will migrate over to 1.2.0 but will need to evaluate that release before doing so.On 1 September, the installer stopped working again, even with the fix that worked the day before.
GET_POETRY_IGNORE_DEPRECATION=1
is now required. We had to update all our pipelines again.The bug is created as a request that breaking changes are not introduced in the future when attempting to phase out legacy procedures. Instead, please use alternative measures, such as deprecation warnings.
I created this bug since we plan to continue using Poetry but wanted to raise this concern with the development team.
The text was updated successfully, but these errors were encountered: