Hi,
The following is meant to serve as a public discussion about dropping support for NT 5.x (XP/Server 2003) and posted for record keeping purposes:
NVDA is opening the doors of opportunities for thousands around the world, with NVDA running on various versions of Windows from XP onwards. Although it is a good idea to allow NVDA to leverage features from old Windows releases, we cannot forget that technology is changing rapidly these days, and sometimes it is necessary to say goodbye to old tricks as we move on.
Due to the fact that Microsoft stopped supporting Windows XP and Server 2003 in 2014 and 2015, respectively, and to leverage newer API's offered by newer Windows releases and remove legacy code, I propose upgrading the code base to support Windows Vista and Server 2008 Service Pack 2 and later.
The justifications are:
- Windows XP/Server 2003 does not have a user-visible concept of elevated processes and User Account Control (UAC). With support for Vista and Server 2008, NVDA can assume that, for the most part, it'll run as a standard user, thereby improving security (exceptions include when UI Access token is granted and if UAC is turned off).
- A dedicated service for Windows XP/Server 2003 is no longer necessary. The service is needed to allow NVDA to run at logon alongside other services in Windows XP/Server 2003 because there's no proper concept of sessions prior to Windows Vista. With Vista/Server 2008 and later, all that's needed is a session 0 copy of NVDA that'll let Ease of Access know that it should receive certain privileges and run in session 0 (EOA facility is used properly in Windows 8 and later).
- Calling certain Windows API functions becomes simplified. For instance, in app module handler, one needs to keep an eye on differences between Windows XP and later Windows releases when querying executable image name and other information. Support for Vista/Server 2008 would mean simplifying this check by assuming that the new routine will be there (unless changed by Microsoft in a future build of Windows 10).
- UIA checks are simplified. As noted by several NVDA developers, UIA cannot be used properly in XP. Although Windows 7 introduces a more "proper" UI Automation implementations, it is sometimes error-prone, thus workarounds were devised. Apart from this, support for Vista would mean one less check for UIA availability.
- Potentially improved compatibility and standings with Windows kernel. When NVDA is compiled and linked, subsystem value is set to 5.0x in order to guarantee compatibility with Windows XP and Server 2003 (5.01 for XP 32-bit, 5.02 for Server 2003 and XP Pro X64). Supporting Vista and Server 2008 means just one subsystem can be set (6.00), potentially improving compatibility and standings with Windows kernel in that the C runtime can allow NVDA to leverage features in Vista and later.
- Simplified build environment. A person who wants to compile NVDA from source will need to install Windows SDK 7.1A in order to provide compatibility with XP and Server 2003. This is no longer required when supporting Vista and Server 2008 - one must check Windows SDK 7.1A in Visual studio 2015 installer, and by default, this option isn't checked.
Drawbacks:
- Loss of market and portions of user base. NVDA is currently one of the last screen readers to support XP and Server 2003. Pulling the plug means we would lose some users who insist on using XP for various reasons.
- Massive code changes and testing required. Removing support for a Windows version isn't trivial, as careful testing must be done in order to avoid introducing regressions.
- Resources are inadequate. There are higher priorities, including braille support, Windows 10 issues and workarounds, supporting different office suites and more.
Other things to consider:
- Why do we need to support Vista and Server 2008? First, even though Vista will exit extended support in April 2017, Server 2008 (same code base as Vista SP1) will be supported until 2020, and there might be server administrators who are using Server 2008 GUI mode with NVDA.
- Why not Windows 7/Server 2008 R2 and later? Although Windows 7 is used by many and allows NVDA to assume that UIA is always available, cutting off Vista support means losing support for Server 2008 (see above) and not many can afford to upgrade to Windows 7 and later yet.
- Isn't XP supported on specialized devices? Yes, but these devices (ATM's, point of sale and other embedded and specialized devices) are not general-purpose computers, and it would not be advisable to support NVDA running on these devices.
Things to do if this proposal is adopted:
- A special interest group )SIG) should be formed to coordinate this effort.
- People working on this should go through the current NVDA source code and identify code paths that could benefit from moving to support Vista/Server 2008 SP2 and later.
- For each code path, people should assess potential regressions and workarounds.
- A snapshot series should be created to allow users to test builds from this project.
- An exit plan must be formulated to allow XP users to flow into the new version by announcing the last version of NVDA that'll support XP/Server 2003. This should be done at least two NVDA releases prior to removing support for XP and Server 2003 so people can prepare.
- The last version of NVDA that'll support XP/Server 2003 should be archived publicly so people can download old releases. This version should not support updating to newer builds.
- Translators and add-on writers should be informed about this in order to allow translators to alert local user communities and add-on writers to plan transition steps for their add-ons.
If this proposal is adopted, I expect this project to take at least nine months to implement: at least six months from start of design/implementation/testing to announcement of the last NVDA version to support XP, with at least three months after that for people to plan ahead for this transition.
Thanks.
Hi,
The following is meant to serve as a public discussion about dropping support for NT 5.x (XP/Server 2003) and posted for record keeping purposes:
NVDA is opening the doors of opportunities for thousands around the world, with NVDA running on various versions of Windows from XP onwards. Although it is a good idea to allow NVDA to leverage features from old Windows releases, we cannot forget that technology is changing rapidly these days, and sometimes it is necessary to say goodbye to old tricks as we move on.
Due to the fact that Microsoft stopped supporting Windows XP and Server 2003 in 2014 and 2015, respectively, and to leverage newer API's offered by newer Windows releases and remove legacy code, I propose upgrading the code base to support Windows Vista and Server 2008 Service Pack 2 and later.
The justifications are:
Drawbacks:
Other things to consider:
Things to do if this proposal is adopted:
If this proposal is adopted, I expect this project to take at least nine months to implement: at least six months from start of design/implementation/testing to announcement of the last NVDA version to support XP, with at least three months after that for people to plan ahead for this transition.
Thanks.