Preview: what's included in Joseph Lee's add-on updates in January 2023


enes sarıbaş
 

So UIA won't use code injection at all, and just use UIA?

On 12/18/2022 3:51 PM, Joseph Lee wrote:

Hi,

It is optional because of issues with UIA implementation in Chromium web browsers (hope the situation has improved by now).

Cheers,

Joseph


Cyrille
 

Hi Joseph

If you need a stronger justification, I can tell you that the organization I am working for is still using Windows 20H2. So yes, there is at least one person (myself) in corporate environment using your add-ons and running this old supported version of Windows 10. Last time we upgraded Windows version, it has been done the same month the previously installed version was reaching end of support. I do not know what they will do this time; I may ask them. But I doubt they will change their plan just for a blind employee not able to use anymore an add-on for his screen reader.

Why not wait for summer 2022 to enable the requirement regarding Windows 10 versions for your add-ons, i.e. wait that these Windows versions be actually not supported anymore?

Moreover, I do not understand the following point.
Windows Essential targets Home users and you have defined requirements related to Windows compatibility for this add-on. But why do you align these requirement for all other add-ons which clearly do not target only Home users ? (e.g. Sound splitter, Office Desk)

Cheers,

Cyrille




On Sun, Dec 18, 2022 at 01:56 AM, Joseph Lee wrote:

Hi,

To answer both messages:

  • Windows 10 20H2/21H2: I understand the need to support 21H2 at least. Not 20H2 as it will be no more by the time NVDA 2023.1 becomes widely available or close to it (if NV Access follows the schedule from earlier this year). I chose 22H2 as it is available to everyone at the moment, with Microsoft asking enterprises to upgrade to it sooner than later. Besides, I plan to end support for Windows 10 21H2 from Windows App Essentials add-on by June 2023 to align with support policy for this add-on (the add-on supports Windows 10/11 releases that are supported for consumers i.e. Home, Pro, Pro for Workstations), so I decided to align other add-ons to follow suit for consistency. I will at least reconsider adding 21H2 back to supported Windows list if I do hear justifications from corporate users, but my intention is: we are still living in the era of Windows as a Service where timely upgrading is essential.
  • NVDA and older Windows releases (I'm answering this from the perspective of a third-party contributor, not NV Access): we do have developers using Windows 7, providing development and test data. Part of the reason for delaying Python upgrade to early 2024 is because the bug fix for stack corruption on certain 64-bit Windows didn't make in time for NV Access and contributors to test the newer Python release (specifically, Python 3.11.0 did not include the stack corruption bug fix but was included in 3.11.1 which came out last week). There is another issue that was found that is preventing NV Access from moving to newer Python, and that has to do with communicating with COM (component object model) functions (Mick Curran brought this up last week). Moving to say, Python 3.11 will mean we will be saying goodbye to Windows 7 and 8.x.
  • 64-bit NVDA (again speaking from the viewpoint of a contributor, not NV Access): we cannot simply move to 64-bit Python because: A. Windows 10 on ARM64 cannot run x64 code (some would say this is nothing to worry about but this then would not explain why I and some folks became excited in 2017 when NVDA provided early support for ARM64), B. this requires checking the source code to make sure screen reader (and add-on) code is architecture-neutral as much as possible (a pull request I'm coordinating with NVDA add-ons community for NVDA screen reader, designed to help NVDA detect ARM64 Windows releases better, is planned to cover both 32-bit and 64-bit Python possibilities in one move), and more importantly, C. there is no known 32-bit/64-bit hybrid NVDA add-on, and using 64-bit Python means we need to build a bridge to let you all continue to use 32-bit speech synthesizers without serious problems (you cannot load 32-bit dll's inside 64-bit executables and vice versa unless a bridge like what we have with NVDA today (NVDA loader helper executable designed to communicate more effectively with certain 64-bit apps) is implemented). 64-bit is the norm these days, but also think about Windows 10 which will be the last 32-bit Windows release, so we will see 32-bit systems until at least 2031 (if you count Windows 10 Enterprise LTSC as something people should use, which I disagree as LTSC (long-term servicing channel) is meant for mission-critical devices).

There is another reason for ending support for unsupported Windows releases, including releases that have gone beyond consumer-level support (by the way, Windows 10 21H1 has just exited support): I am about to reduce the scope of some add-ons (some involving features, some involving supported Windows releases) as part of a plan to slowly reduce my presence in NVDA community. This has been ongoing somewhat, and I expect to accelerate this plan in 2023 to make way for the next group of users and developers who are more passionate about NVDA like I was ten years ago.

Cheers,

Joseph


 

Hi,

Ideally, that's the plan Microsoft is gearing towards (from what I can gather from a recent GitHub discussion).

Cheers,

Joseph


 

Hi,

From 2016, Windows App Essentials checked for Windows version requirement to align with Windows as a Service (WaaS) policy and schedule. The idea is that people will upgrade to supported Windows 10/11 releases before the prior version going out of support. This works with consumers, but I do know that it may not be so for enterprises with machines managed through mechanisms such as Group Policy.

Until earlier this year, I ended suport for a Windows 10 feature update months prior to end of consumer suppot. This was because of semi-annual channel (SAC) releases, and by the time I ended support for a feature update, people were asked to upgrade to next+next release. For example, the add-on ended support or Windows 10 Version 20H2 (October 2020 Update) in January 2022 since Microsoft asked people to upgrade to next (21H1) + next (21H2) releases. Now that semi-annual channel was replaced by general availability channel (GAC) in 2021 with annual feature updates, I decided to extend feature update support to last until end of consumer support or shortly before. For Version 21H2 (November 2021 Update), prior to this change, I would have ended support for it in February 2023, but with the described change, support for this feature update will end by end of May 2023.

The reason for basing support duration on consumer support is due to differences between H1 and H2 support duration. When SAC was the mainstream, YYH1 releases were supported for 18 months for both consumers and enterprises, whereas YYH2 received 18 months of support for consumers with an additional year for enterprises. Therefore, I decided to stick with 18 months of support for consistency across feature updates. Even with no more SAC releases, I continue to abide by consumer support duration, as the additional year provided by Microsoft is meant to be a transitional period for IT departments to upgrade machines to newer releases.

At one point I thought about offering an extended support version of Windows App Essentials add-on for enterprises. This version will be based on the last supported version for a given feature update and will receive updates timed with stable NVDA releases or at least once per quarter. For example, for Windows 10 21H2 users, the last version planned to be compatible with it is 23.05 or May 2023 release. Version 23.05.1, the first extended support release, might be released in July or when NVDA 2023.x release occurs by then. The last extended support version for a feature update will be released just prior to end of enterprise support (May 2024 for 21H2). This plan may or may not be adopted. Regardless of release of extended support versions, Windows App Essentials add-on will support Windows 10 series as a whole until at least October 14, 2025.

As for Windows version requirement for add-ons: I am doing this to provide consistency for someone wishing to maintain add-ons such as Resource Monitor. Originally I didn't plan to release updates for unmaintained add-ons, but with the impending end of support for Windows 7 and 8.1 from Microsoft, I decided to provide compatibility checks for these add-ons for consistency. I went with the latest Windows 10 release (22H2) as that feature update is being offered to everyone at this point.

Hope this helps.

Cheers,

Joseph


enes sarıbaş
 

I just tested it out on latest Edge with the yes option.  Edge laggs discernably, so there is still work to be done.
On 12/18/2022 4:45 PM, Joseph Lee wrote:

Hi,

Ideally, that's the plan Microsoft is gearing towards (from what I can gather from a recent GitHub discussion).

Cheers,

Joseph


David Lenton
 

Further to Joseph’s announcement about his update. My son wanted to know whether the update could include the ability to assign an action to an unassigned gesture. E.g  could the user enable a quadruple tap on screen to close a window just like Alt F4 does. We weren’t  sure whether this was within the scope that you (Joseph) have control over within your add on. Thanks.


 

Hi,

Yes and no (note that feature set for 23.01 is frozen). Yes in that any input gesture (touch, keyboard, braille, etc.) can emulate keyboard keys or a combination of them. This is why on a braille display, you can perform say, Windows+D command using braille display hardware (reminder to self: document the internals of a braille display driver at some point; trivia: I helped bring support for HumanWare BrailleNote Apex to NVDA almost a decade ago). This works great if you are focused on an app and the control of interest (sometimes termed "navigator object") is indeed focused on an app and emulating key combinations do cause the desired thing to happen such as closing an app.

At the same time, touchscreen support is not really tied to system focus; touch (or for that matter, mouse) support requires moving around the screen and visiting controls that may never receive focus. In some cases, you will be able to "use" two locations at once, each on different apps - system focus might be on one app while navigator object is on the other app. Touch support utilizes navigator object to tell you where you are, which may not necessarily be where the system focus is (two related settings (or rather, three) exist to tether navigator object and review cursor to system focus and caret, respectively).

Another big reason for me saying "yes and no" is because not all apps can be closed through Alt+F4 combination. At least one app assigns a different keyboard shortcut for closing its main window because Alt+F4 is used for a different purpose. This is why it is a bit difficult to generalize Alt+F4 as "close app" command, and if we factor in the fact that NVDA can review two different controls at once, it becomes harder to simply create an action that will do things via touch alone, more so if emulating another input mechanism is sought.

Whether or not the proposal here (touch actions and expanded keyboard shortcuts) coming to life remains to be seen, but what I wrote above is what we have at this time.

Note that Enhanced Touch Gestures add-on is not really maintained - think of this add-on as in "deep maintenance mode" where the add-on is updated as necessary. I ended active maintenance for this add-on as of April 2022 but came back to prepare the add-on to end support for Windows 8.1 as no-one has volunteered to maintain this add-on in the meantime (this applies to vast majority of add-on updates I'm releasing these days as I ended active maintenance for them last year). My decision to end maintenance for these add-ons mostly came because I want to devote more time to writing, mostly in the context of academics (I am a graduate student, one semester away from adding an M.A. to my name); another reason: health - I'm not as energetic as I used to be (say, three to five years ago), more so after the inevitable happened and a guest in the form of a virus came to my house last week (I was last boosted in September but I did experience sore throat and fever; feeling way better now thanks to a combination of medications and food). Thankfully I did everything related to upcoming add-on releases before Christmas, so no loss of work (upcoming releases were planned prior to me being confined to my room).

Cheers,

Joseph