-
-
Notifications
You must be signed in to change notification settings - Fork 768
Windows version constants (API notice): deprecate Windows 7 SP1 and Windows 8 constants #15647
Description
NOTE: edited based on comments to say "deprecate" rather than "remove".
Hi,
Introduction and rationale
As of NVDA 2024.1 alpha, NVDA is powered by Python 3.11. According to Python documentation, 3.11 supports Windows 8.1 and later.
While some in the NVDA community may advocate for preserving source code for historical reasons, code for enabling support for unsupported operating systems were removed in the past. In 2017, as part of 2017.4 development, NVDA stopped supporting Windows XP, Vista, and 7 without service pack 1 (SP1). Consequently, throughout 2017 and 2018 (and beyond), code supporting these unsupported Windows releases were removed. Now that NVDA 2024.1 (alpha) requires Windows 8.1, it would be best to declare in the source code that NVDA must march with the times by deprecating and removing support code for Windows 7 and 8.0.
Is your feature request related to a problem? Please describe.
NVDA source code contains support code for unsupported Windows releases. This includes Windows 7 SP1, unsupported by Microsoft in official capacity since 2020 and extended security updates ended in January 2023. Windows 8 is no longer supported by Microsoft for client systems since January 2016, with Windows Server 2012 and 2012 R2 (server version of Windows 8.1) supported until October 2023.
Describe the solution you'd like
Remove Windows 7/8.0 support code and deprecate usage of WIN7/WIN8 constants.
Describe alternatives you've considered
Leave code as is.
Additional context
As noted above, there would be community members who may object to this proposal. However, past code can be viewed by checking out Git tags representing specific releases. Comparing Git log and code diffs between tags (and branches) may offer one way to research NVDA's history. For now, 2024.1 development cycle offers a path forward in modernizing NVDA code by removing assumptions from Windows 7 era.
Specific steps:
I propose the following:
- Remove code that mentions winVersion.WIN7_SP1 or winVersion.WIN8 throughout the source code. For example, remove status bar handling for File Explorer in Windows 7.
- Possibly a separate issue: remove code that assumes Windows 7 or older is in use (say, Windows XP password field in LogonUI app module).
- Mark WIN7/WIN7_SP!/WIN8 constants as deprecated.
- Bonus: when structured pattern matching comes to NVDA Core, edit Windows version checks in winVersion.WinVersion class to use match/case statements.
Thanks.