-
Notifications
You must be signed in to change notification settings - Fork 615
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
Prefer 64-bit CPython for Windows downloads #1299
Comments
See also related Python-dev thread: https://mail.python.org/pipermail/python-dev/2018-July/154541.html |
My opinions: if we can reliably detect that the user is on 64-bit Windows, offer the 64-bit installer. If we can't do that reliably, offer links to both. If we can make a good guess, perhaps emphasize the one matching the platform we detected. I definitely do not want to suddenly switch from unconditionally offering 32 to unconditionally offering 64. |
I agree with @zware. The least-complex solution would be to just have two links, which I think is sufficient (and still a major improvement over just having the 32-bit installer). Being able to emphasise the "correct" one would be a bonus. |
This is basically a duplicate of #171. See #1044 (comment) for my comment about using user agents to detect that the user is on 32-bit or 64-bit Windows. |
I agree that just having both links is probably easiest and is sufficient. I'd slightly prefer the 64-bit link to be less obvious (e.g. link text rather than a button), as the 32-bit version is going to work 100% of the time rather than 95% of the time, but I'm not hugely concerned. |
Well, time has passed, and the discussion has continued in many places and here we still are. So let me take this place to list some points coming out of dealing with a not-empty stream of grumps sent to the webmaster email, several quite recently. These comments aren't anything new I imagine.
Collectively we can improve this somehow, right? |
We also ran into 32-Bit being the implicit (big download button) default on the Windows download page. People are complaining that the mavsdk module cannot be installed on the "default" 32-Bit python version mavlink/MAVSDK-Python#88. We don't currently support 32-Bit with new projects in 2019, we consider it deprecated. Could the Website offer two big buttons one clearly labeled 32-Bit and one 64-Bit? That would not make anything the first click default if there are ongoing discussions about which one should be. |
I think the problem here is "32 bit is the default without saying so" |
@zooba this topic rattles on and on, sorry... anything to add to this particular issue? |
It seems we have some consensus on just offering both links (perhaps with 64-bit slightly de-emphasized, but both clearly labeled); we just need someone to submit a PR. I have no idea how complex it's likely to be. Agreed with @berkerpeksag that this is really a duplicate of #171. |
It's worth pointing out that Python 2 is finally being EOL'ed in January and yet Python 3 came out 2 years after Vista which was the start of Microsoft's default to x64 OS (though technically even earlier releases of windows had x64 support). Given that, I'd argue that this is not a duplicate of #171 as I'd very much support the decision to move to 64-bit by default with the optional 32-bit install as an available option for the minority of users who need it. For what it's worth, I checked out a number of apps that might be installed adjacent on someone's windows computer that installs Python. I considered: VSCode, Notepad++, Sublime Text, the go installer, java, vlc, chrome, and firefox. Several default to x64, but show both links. Some include 64bit by default and make 32-bit harder to find or not at all. Among those that default to 32-bit, only VLC doesn't explicitly state it was 32-bit and include an immediately visible 64-bit link (though it is available via a drop-down, so still an improvement over python.org). I'll take a look at a potential PR based on @zware's comment above. |
The installer linked to in the supernav for a given OS is determined by a "download_button" boolean field on the ReleaseFile model. There is no "secondary download" boolean field (and imo it doesn't make sense to have one), so there's only one download option that can be displayed. I'm not familiar with the method used for pushing new releases, but it seems like it'll just be ticking a different box on the latest release. The other option is to add "32-bit" and "64-bit" boolean fields to ReleaseFile, and set download_button on the applicable 32-bit and 64-bit instances. I might make a PR for the latter, unless someone has a better idea. |
I think the most common option is to look at the user-agent (can be done in client-side or server-side) and then show the 64-bit versus 32-bit link based on what the browser reports. However my bigger problem with the downloads is that finding an alternate download is really difficult. It is very common that when setting up a new developer, they need Python 3.6 instead of 3.8 for example, or the 64-bit version, or something else to that effect. So let's follow the journey that one might take to find the non-default option presented in the menu: For any other version that is not the default in the menu, the visitor is taken to the downloads page. The first thing on this page is a list of versions, with links to the PEP page about their releases. So thinking that I want Python 3.6, I end up clicking PEP 494 expecting a download. Realizing that this PEP is way over my head, and not at all related to a download in any shape or fashion, I go back to the downloads page and scroll further. The "Looking for a specific release?" section is more helpful. However, the ordering is very confusing. They are sorted by date, not by release! Eventually I find Python 3.6.12 and click the download link. But I am deceived! It is in fact not a download, but a link to another page. At the very bottom of the page is a list of files. OK - maybe this is finally going to be it?! Alas, the files only contain the source code. There is no installer for any platforms! I carefully re-read the page above...
* [ Internal screaming ] * (Side note: is there any reason, through the magic of continuous integration that we have these days, to not provide binaries for security releases?) Now to find some installable version of Python 3.6, I must repeat this whole process over and over again, until eventually landing on a page that provides an installer. An hour later, I might be lucky to have installed Python. This assumes I am experienced, and haven't naively downloaded the source tarball and tried to figure out what the heck to do with it. Anyhow, I realize this thread is probably not the place for this discussion... but I would like to propose a simple reorganization of the downloads page:
For all of it's warts, I think dotnet actually does this very well now: https://dotnet.microsoft.com/download. They provide a simple platform selector via a tab mechanism, a button to download the latest release, and a second button which links to a list of downloads for older releases. Most other platforms, such as NodeJS or Go lang, provide a similar download experience. |
Chiming in with more user feedback: I've been helping a few newbies work with Python on Windows lately, and the fact that the python.org offers the 32-bit version as the default is confusing to them. They often catch it too late, after they've installed it with a bunch of packages and connected their complicated Windows setups to it. It would help so much if they'd get the 64-bit version by default. |
Just an update -- VLC being the only app I found before that didn't detect 64-bit. Well, it turns out that VLC DOES detect your user-agent and has for years. I was just on the windows download page from a MacOS computer so of course it didn't detect the architecture correctly. If you try from a windows machine, you'll find you do get served 64-bit by default if your user-agent advertises it. So literally not a single other app in that random selection has the same behavior as Python.org in terms of blindly serving 32bit installers. |
This github issue remains open though as noted it may not be where a decision is reached. Have to agree with @vsalvino that for the benefit of Windows users, in particular, "Looking for a specific release" should in some way indicate a version with a downloadable installer. A simple fix might be to add a column, and arrange the heading so it is something like:
And under Installers say either "Yes" or "No (see 3.7.8)". In fact, it seems the download column (currently without heading, which I was going call Release Page) is the same link as the one under Release Version and perhaps isn't needed at all? |
This has been changed to serve 64-bit all the time and this issue can be closed. With Windows 7 support being dropped, vastly more people are going to be broken by just selecting the latest than will be affected by the different architecture (based on Windows install telemetry I got access to). |
Yes, it's been updated. I can confirm someone just emailed webmaster a few days ago having failed an install - because they were on a 32-bit WIndows! (score one for the "just can't win" category!) |
Please let me know when you get those kinds of messages - I'm unlikely to find out any other way just how much this change is hurting. |
So far just the one, and the user was happy after I explained how to get the 32-bit version - "it's working now". |
Is your feature request related to a problem? Please describe.
The download links for CPython for Windows (When browsing from Windows) link to the 32-bit version of Python. Considering that the Python launcher for Windows already prefers the 64-bit version (3.4.4.2. Customizing default Python versions), I would assume that the 64-bit version is preferred (I think 32-bit Windows is a rarity nowadays). Wouldn't it make sense to change it to the 64-bit version if the user is browsing from a 64-bit Windows?
The core developers for CPython on Windows should probably voice their opinion on this.
Describe the solution you'd like
The download links point to the 64-bit Python version.
Describe alternatives you've considered
It's also possible to link to both versions and let the user decide, with a link explaining the differences.
Additional context
For example, this link:
And there is another one on the download button hover in the top bar.
The text was updated successfully, but these errors were encountered: