Preview: what's included in Joseph Lee's add-on updates in January 2023
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 |
||||||||||||||||||||
|
||||||||||||||||||||
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. |
||||||||||||||||||||
|
||||||||||||||||||||
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.
toggle quoted message
Show quoted text
On 12/18/2022 4:45 PM, Joseph Lee
wrote:
|
||||||||||||||||||||
|
||||||||||||||||||||
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 |
||||||||||||||||||||
|
||||||||||||||||||||
Hi, Ideally, that's the plan Microsoft is gearing towards (from what I can gather from a recent GitHub discussion). Cheers, Joseph |
||||||||||||||||||||
|
||||||||||||||||||||
Cyrille
Hi Joseph
toggle quoted message
Show quoted text
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:
|
||||||||||||||||||||
|
||||||||||||||||||||
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 |
||||||||||||||||||||
|
||||||||||||||||||||
enes sarıbaş
Brian I do think there should bve a software support lifecycle
that is publically available, and which is always enforced.
Moreover, support for an operating system should only include the
mainstream support, not extended support or ESU support. NVDA is
falling behind compared to the other screen readers, even narrator
in some aspects because of changes in Windows 11, and office as
well as other apps. On 12/18/2022 2:26 PM, Brian Vogel
wrote:
On Sun, Dec 18, 2022 at 03:03 PM, enes sarıbaş wrote: |
||||||||||||||||||||
|
||||||||||||||||||||
On Sun, Dec 18, 2022 at 03:03 PM, enes sarıbaş wrote:
Brian I also believe t maintaining support intentionally is also a waste if dropping support would have enabled enhancements to the experience for users on supported operating systems and such fixes aren't being implemented to preserve the support.- But given the ethos of NVDA, there will be these trade-offs, at least during transition periods. But the transition periods should be no more than 3-years, max, preferably two, and any backward compatibility after that that is not the result of nothing breaking (yet) as development progresses is all that should be expected. This has, literally, always been the way virtually everywhere. The screen reader world should be no exception and, I'd say, that it's way more imperative for screen readers to do their best to keep up with "what's happening now, and coming down the line, soon," than it is to maintain backward compatibility for long periods. To this day you can download unsupported earlier versions of NVDA if you need them for "exception environments" where unsupported Windows and/or other software is involved. And if your choice is to maintain an exeption environment, part of that is collecting and keeping the software that is compatible with it. That's not the job of the software houses, though some, like NVAccess, do keep archival downloads available (which is great, and other than a tiny bit of server space really requires virtually no effort after being placed). -- Brian - Virginia, USA - Windows 10 Pro, 64-Bit, Version 22H2, Build 19045; Office 2016, Version 16.0.15726.20188, 32-bit "Be Yourself" is the worst advice you can give to some people. ~ Tom Masson |
||||||||||||||||||||
|
||||||||||||||||||||
enes sarıbaş
Agree with all this. This should also hold true for office 2013,
2010, 2007, XP and 2003. Same for IE, Outlook Express, Windows
Live Mail. Brian I also believe t maintaining support
intentionally is also a waste if dropping support would have
enabled enhancements to the experience for users on supported
operating systems and such fixes aren't being implemented to
preserve the support. On 12/18/2022 1:42 PM, Brian Vogel
wrote:
On Sun, Dec 18, 2022 at 06:30 AM, Brian's Mail list account wrote: |
||||||||||||||||||||
|
||||||||||||||||||||
On Sun, Dec 18, 2022 at 06:30 AM, Brian's Mail list account wrote:
I do not agree, At least here in the UK there are certain environments still using Windows 7, I'll not go into the whys and wherefores her, but basically, older software and hardware would not be cost effective to update until they are unusable. This tends to apply to healthcare and charity environments mostly.- The thing is, they can stick with "the last compatible version" of NVDA just as they're doing for all the other software they're using. I have no objection to backward compatibility that "is simply there" because changes have not broken it. But when it comes to intentional, ongoing support for out-of-support operating systems, that's a waste of resources past a certain transition point. Seven years after the introduction of Windows 10 is way more than enough time to keep supporting Windows 7; it is, in my opinion, way too much time. NVDA is still compatible with Windows 7, and expecting people, at some point, to accept the consequences of their actions - which means having obsolete versions of all kinds of things - if they elect to stay with out-of-support OSes is a direct, logical, and reasonable consequence of that choice. And what you (or I, or anyone else) likes or prefers has never been, and will never be, something that Microsoft, the folks at the various Linux distros, or Apple take into account. Operating systems are not bespoke software, made to fit you (any you) like a glove. They are Swiss Army knife style software intended to allow multiple, diverse demographics to get done what they need to do. Everyone is subject to compromises. 'Twas ever thus, and ever shall be, unless you develop your own personal OS. -- Brian - Virginia, USA - Windows 10 Pro, 64-Bit, Version 22H2, Build 19045; Office 2016, Version 16.0.15726.20188, 32-bit "Be Yourself" is the worst advice you can give to some people. ~ Tom Masson |
||||||||||||||||||||
|
||||||||||||||||||||
enes sarıbaş
Joseph, I do remember this option came around in 2019. I have always
used development NVDA versions to be able to test and get new
features and fixes sooner. Is there a reason it is optional
rather than on by default? On 12/18/2022 4:25 AM, Joseph Lee
wrote:
|
||||||||||||||||||||
|
||||||||||||||||||||
enes sarıbaş
Hi Brian,
toggle quoted message
Show quoted text
I too work in an environment where a lot of legacy software is used. However, such environments an older version of Jaws/NVDA can be used to maintain support in those situations. Those organizations really do need to upgrade, but they're reasons for remaining on legacy OS are different than those of a consumer. Most likely, if it is a government organization, they do not have funding enough to upgrade software/web apps etc or hardware for new OS, or have legacy apps that only work on said OS. On 12/18/2022 5:30 AM, Brian's Mail list account via groups.io wrote:
I do not agree, At least here in the UK there are certain environments still using Windows 7, I'll not go into the whys and wherefores her, but basically, older software and hardware would not be cost effective to update until they are unusable. This tends to apply to healthcare and charity environments mostly. If the Ethos of NVDA was to support those who cannot afford the likes of Jaws, then it is a valuable fall back giving more time to those in countries and employment where the older environments still have to persist. |
||||||||||||||||||||
|
||||||||||||||||||||
Brian's Mail list account
I do not agree, At least here in the UK there are certain environments still using Windows 7, I'll not go into the whys and wherefores her, but basically, older software and hardware would not be cost effective to update until they are unusable. This tends to apply to healthcare and charity environments mostly. If the Ethos of NVDA was to support those who cannot afford the likes of Jaws, then it is a valuable fall back giving more time to those in countries and employment where the older environments still have to persist.
toggle quoted message
Show quoted text
Myself, I don't really like the interfaces of 10 or 11 very much, I have to say, but you can get used to them. I really do think Microsoft missed a trick by not allowing skinning of newer windows to allow the learning curve to be much lower if somebody wants windows to work a certain way, forcing a change seems to me to be just not very smart marketing. Brian -- bglists@... Sent via blueyonder.(Virgin media) Please address personal E-mail to:- briang1@..., putting 'Brian Gaff' in the display name field. ----- Original Message -----
From: "enes sarıbaş" <enes.saribas@...> To: <nvda@nvda.groups.io> Sent: Saturday, December 17, 2022 10:27 PM Subject: Re: [nvda] Preview: what's included in Joseph Lee's add-on updates in January 2023 Hi Joseph, |
||||||||||||||||||||
|
||||||||||||||||||||
Hi, These are good questions, and based on discussions on GitHub and elsewhere, NVDA developers do know about the need to use something other than code injection to obtain browse mode information. In fact, that's one of the reasons for the existence of an option in NVDA settings screen under Advanced settings panel to let folks try UIA support in Edge and other Chromium based browsers. Cheers, Joseph |
||||||||||||||||||||
|
||||||||||||||||||||
enes sarıbaş
Hi Joseph, This indeed sounds like a lot of work. One final question
though. You mention in your post that NVDA's 64 bit bridge does
code injection into processes for browse mode. Doesn't injecting
into another process open a security hole in the browser process
itself? I have also read that Edge/Chromium prohibits, or is
planning to prohibit any app from injecting into the process.
Would it be possible for NVDA/other screen readers to interact
with a browser if injecting was no longer possible? Would UIA in
Edge deliver all information NVDA needs to interact with the app? On 12/17/2022 10:10 PM, Joseph Lee
wrote:
|
||||||||||||||||||||
|
||||||||||||||||||||
Hi, I think NVDA may as well end support for Windows 10 around say, 2027 or 2028, but things can change without notice and the decisoin is ultimately that of NV Access - Windows Server 2022, the last substantial "Windows 10" release from Microsoft, will go out of support in 2031, with Windows 10 Enterprise LTSC 2021 for IoT going out of support a few months later (early 2032). As for performance improvement on x64 if NVDA is running as a 64-bit Python interpreted app, I expect some improvements but not much, as the bottleneck here is CPython. But in theory, because NVDA does not have to ask a bridge to talk to 64-bit apps, I expect some improved performance as long as Python keeps up with it. As for steps for add-on authors: any add-on that fall under one or more categories are affected:
This mostly affects speech synthesizer add-ons as some load 32-bit DLL's, so they need a 32-bit to 64-bit bridge to run under 64-bit NVDA/Python. This gets complicated if we're talking about ARM64 Python/NVDA as it will then need to go through Wow64 emulator (called xtacache, or x86 to ARM instruction cache) if the add-on components are not recompiled for ARM64. This would be feasible if the DLL in question is open-source, otherwise a bridge is one of the ways to get them to talk to 64-bit NVDA. And since commercial synthesizers (at least many of them) come with closed-source DLL's, the best route is asking synthesizer vendors for 64-bit DLL's and bundle them alongside 32-bit DLL's, in effect creating a hybrid architecture (32-bit/64-bit) NVDA add-on. For others: a good analogy that summarizes the latter part of this thread is multilingual translation and interpretation. Suppose you are having a conversation with somenoe who may not speak the same language as you. You can go about it in a number of ways:
P.S. I'm sure some of you can feel my enthusiasm whenever I talk about computer hardware and operating systems. After all, these are important subfields of computer science and engineering, and that's the area I was interested in studying back when I was an undergraduate student. I didn't get a chance to study computer architecture in college, but writing NVDA code helped me understand bits of it here and there. Even though I have moved on from engineering in graduate school, I still return to computer science from time to time to keep up with things and to exercise storytelling skills (one more semester to go before I can append an M.A. to my name). Cheers, Joseph |
||||||||||||||||||||
|
||||||||||||||||||||
enes sarıbaş
Hi Joseph, I do recall Jaws did have a majority of features working in arm, and braille, and vocalizer, as well as working with 32 bit arm were only limitations currently. Thank you for the very detailed post. All of this makes sense now, when I read this, and I understand based on what you describe that a 64 bit build of NVDA will require a very substantial amount of work. For addressing arm though, can't NVAccess drop support for Win10 ARM when microsoft sunsets Windows 10? That would only require the x86 bit bridge the way you described it. And would there exist performance improvements when interacting natively with x64 apps? As for addons, how much work would addon developers have to do to
port 32 bit addons to 64 bit?
On 12/17/2022 8:57 PM, Joseph Lee
wrote:
|
||||||||||||||||||||
|
||||||||||||||||||||
Hi, What I say is strictly my own opinion (for others, the below message will get quite geeky, so please hold on): There is really no justification for using Windows 7 in 2022 unless the corporate environment requires it for running specific tasks and apps (Visual Studio 2022 does allow compiling an executable to run on Windows 7). As for ARM64 support by JAWS: jfw.exe (JAWS executable) is an x64 application, meaning that it does require Windows 11 on ARM64 in order to run on ARM64 processors. Because Windows 11 on ARM64 can run 32-bit and 64-bit x86/x64 applications, JAWS must be given an opportunity to hook into x86/x64 apps, similar to how NVDA can support ARM64 apps on Windows 10 and 11 on ARM64. Vispero did say that some features are unavailable in ARM64 JAWS, and I think because not all modules used by JAWS are 64-bit compatible yet. As for two 64-bit NVDA releases (again speaking from the viewpoint of a third-party contributor, not NV Access): I'm sorry to say that this cannot be done easily for now. This requires a native ARM64 version of Python, and this came about with Python 3.10 or 3.11 (not sure at the moment). At least this may allow folks to think about that possibility from 2024 onwards. But not all Python dependencies are ARM64 ready, most importantly wxPython - there is no known ARM64 build, so you can't just squeeze in AMD64 CPython extension (.pyd file) inside an ARM64 Python interpreter. Also, because there is no known ARM64 port of wxPython, it must be built from scratch under ARM64 Python, which may introduce compilation issues. The lengthy compilation step has been worrisome for NV Access and contributors because Appveyor, the continuous integration provider NVDA developers use, impose a 60 minute time limit to compile a software build (recent NVDA alpha builds took about 30 minutes or more to compile and run tests). Also, as I noted in an earlier reply, some parts of NVDA source code are not really architecture neutral - take NVDA Helper, for instance which starts a remote helper loader executable if running on 64-bit systems, one per instruction set architecture or processor architecture (ISA; an ISA is a collection of commands and machine language that describes a central processing unit (CPU), and Intel/AMD ISA is different than ARM's). For example, on a Windows 11 on ARM64 machine such as Microsoft Surface Pro X, NVDA is seen as a 32-bit x86 application, so Windows runs a part of WoW64 (32-bit Windows on 64-bit Windows) that is really an x86 emulator - the emulator starts BEFORE NVDA itself starts. NVDA, running inside the x86 emulator, detects that you've got an ARM64 computer, so the NVDA Helper portion starts the Remote Helper loader executable compiled for ARM64. There is an obvious flaw on Windows 11: what happens if someone runs an AMD64 application? This is the problem described by the following GitHub issue and a fix is in the works: https://github.com/nvaccess/nvda/issues/14397 So what if a native ARM64 port of NVDA runs inside Windows 11? No WoW64 to worry about, but then a bigger problem arises (well, two problems really): how can NVDA work with x86/x64/32-bit ARM code (and for NVDA, x86/x64 add-on code)? This means two or more NVDA Helper loader executables must run, one per processor architecture: x86, and x64 (32-bit ARM if NV Access decides to compile the helper loader executable for it). The advantages and disadvantages of what I'm talking about are summarized below:
I will talk about how NVDA gets compiled in a future post (upon request). Again my apologies for going too geeky in this post. Cheers, Joseph |
||||||||||||||||||||
|