Replies: 8 comments 11 replies
-
As usual with GitHub Discussions, please use thread replies via the GitHub interface rather than email based replies to keep discussion well structured. Please use replies to this comment to group and identify places where conversion needs to occur (e.g. build system components, API calls, etc) |
Beta Was this translation helpful? Give feedback.
-
Please use replies to this comment to discuss the smoke testing plan |
Beta Was this translation helpful? Give feedback.
-
Please use replies to this comment to discuss NVDA dependencies which do / do not have 64bit alternatives |
Beta Was this translation helpful? Give feedback.
-
Hi, I would assume that a 32-bit remote loader will be used to let the core code and add-ons talk to 32-bit processes? The remote loader is needed by soe add-ons to communicate with 32-bit processes using Windows API calls. Thanks. |
Beta Was this translation helpful? Give feedback.
-
Would it be possible to consider an arm 64 build as well? Currently NVDA runs on emulation on arm which may have a performance and battery life impact on arm devices. |
Beta Was this translation helpful? Give feedback.
-
Please don't forget corporate users on LTSB / LTSC versions of Windows 10 - these are supported until the beginning of 2029. While I don't thing they should hold us back, it would be nice to know how many windows 10 users on 32-bit are running these extended support editions. Sadly our statistics gathering does not cover OS information in that detail.
Is there anything other than Braille display driver you have in mint here?
To be clear I assume that there is no intention to remove 32-bit controller client for external applications?
I'd say this risk is quite small - most (probably all) displays are supported via BRLTTY, which means that users can use it indirectly, but more importantly that source code of the driver which does not rely on the manufacturer dll is available, so we can use it to create native Python driver.
Is this only about stuff relying on NVDA's API? This sentence may also mean that 32-bit programs will no longer be supported which, I hope, is not an intent here.
I'd say this is really a must for synthesizer drivers. For just one example of a user who disagreed with an idea of dropping support for, very popular, 32-bit synthesizers see #12064 (comment) |
Beta Was this translation helpful? Give feedback.
-
There are some things which IMO should be clarified in the initial comment, so that we all share the same expectations:
|
Beta Was this translation helpful? Give feedback.
-
Just to note a practical example, #3339. There is also a PR referenced. |
Beta Was this translation helpful? Give feedback.
-
Note: As usual with GitHub Discussions, please use thread replies via the GitHub interface rather than email based replies to keep discussion well structured.
Project Description
This project aims to migrate NVDA to becoming a 64 bit only application.
This means that NVDA would no longer run on 32 bit machines.
Once initial discussion has settled, we encourage the community to start and contribute to the conversion.
Reasoning
Less than 5% of NVDA users are on 32-bit machines, many of which are already left behind due to Win 7 deprecation.
Only 1.4% of Windows 8.1+ NVDA users are on 32-bit machines.
Many dependencies are dropping 32 bit support:
Windows 11 only offers a 64 bit version. This means once Windows 10 goes EOL (end of 2025), the entire software ecosystem (including python) will likely move to 64 bit only.
Migration is likely to be a slow process, and we are increasingly risking being left behind as the software ecosystem migrates.
Project Goals
Objective
A stable final x64 build of NVDA
Backlog
Total
65-200d
Engineering risks
Risk Description
Dependencies that are incompatible with x64 software.
We may have legacy dependencies that are 32bit only.
Management strategy
We should check all our dependencies and see if this will be an issue before embarking on the conversion process.
If essential dependencies are identified we may need to find alternative solutions or deprecate support for certain things.
Resulting severity
Final severity: high
Risk Description
NVDA add-ons, synthesizers, and other external software may rely on NVDA's 32bit API.
Particular braille display drivers may rely on dlls from the manufacturer to communicate with the display. It may be possible that the company who made the braille display no longer exists (e.g. Baum) and therefore there is no chance that a 64 bit dll could be created without major reverse engineering. The vast majority of the braille display drivers in NVDA core do not rely on dlls, but there may be some add-ons. Generally we could say bad luck, times move on. However for a $10,000 investment on an older braille display, we would want to provide a solution if at all possible.
Management strategy
We should advertise these changes as early as possible, and provide testing builds once 64bit NVDA enters beta.
Some legacy software will unfortunately be left behind, and users relying on it may be stuck on older versions of NVDA.
A user story exists for creating a 32 bit legacy API for legacy drivers.
As we start to think about the secure add-on API, specifically for synth drivers and braille display drivers, these could run in their own isolated sub-processes, with our own custom IPC for communication with NVDA core. In this case, it would be possible to continue to provide 32-bit support by providing a 32-bit braille driver host process.
Resulting severity
Final severity: medium
Risk Description
Uncommon code paths.
Many functions relying on 32bit infrastructure may be uncommon code paths and hard to pick up from testing or as a developer.
Management strategy
Use AI to analyse NVDA codebase for remaining code that needs conversion. AI may get better at this once we have performed some conversion and have examples.
Thorough alpha testing and beta testing will help here.
Resulting severity
Final severity: low
Beta Was this translation helpful? Give feedback.
All reactions