Hello NvDA users,
First, I hope you are staying safe and healthy in the midst of events around the world, namely the ongoing pandemic.
Second, I and several folks here are in contact with NvDA add-ons community regarding add-ons you know and love. I’m delighted to announce that, as of this moment, 70 percent of add-ons hosted on community add-ons website are showing as compatible with NVDA 2021.1. I know there are more add-ons out there, and more of these are becoming compatible as time passes. As was stated many times, the actual people to contact regarding add-ons is the author of these add-ons, not NV Access, and authors were encouraged to update incompatible add-ons as soon as possible.
Onto the matter at hand:
Heads up if you are using any of my add-ons (Add-on Updater, Control Usage Assistant, Enhanced Touch Gestures, GoldWave, Resource Monitor, StationPlaylist, Windows App Essentials): version 21.08 updates are being prepared (scheduled for next week). Most add-ons include feature updates, while others include localization updates from translators around the world. But most importantly, a major change in NVDA is coming which will affect most of my add-ons, and the time has come to start letting go of most add-ons to focus on school.
What’s new in version 21.08? For starters, Windows 11 support. Enhanced Touch Gestures, Resource Monitor, and Windows App Essentials will include support for Windows 11. The biggest changes were made in Windows App Essentials, followed by Resource Monitor, the former to work around current Windows 11 preview issues, the latter to recognize Windows 11 builds properly. A bonus for Enhanced Touch Gestures users: current and upcoming add-on releases will work beautifully on Windows 11. Note that for at least Windows App Essentials, Windows 11 support is experimental/in preview and things can change without notice (I’m planning a follow-up release in late August that will update the add-on to support the state of Windows 11 preview then).
Second, localization updates. These include all add-ons. Several add-ons didn’t have localization updates for almost half a year, while others include recent changes. Note that Add-on Updater is not amongst these at this time.
Third (and most importantly and will get lengthy)), preparing to respond to changes being introduced to NVDA. One of the biggest features in Python 3 series is support for enumerations (or enums for short). An enumeration is a collection of values and flags that are easily grouped and identifiable. For example, suppose you are defining colors and decide to use integers to represent colors such as “blue” (0), “red” (1), “green” (2) and so on, housed inside a “colors” collection. In the past, you had to remember which color corresponds to which integer, but with enumerations, when you say “colors.Red”, Python will know what you are talking about (integer 1). This makes the program source code easier to read.
In the NVDA world, there are places in NVDA screen reader source code that resemble a collection of flags and constants. The best known example is a module called “control types” that include definitions of control roles and states. The roles and states collection is so important that NVDA itself and many add-ons use this module as a backbone for their proper operation, including recognizing specific controls in apps, reacting to state changes such as radio buttons being checked, and even providing user-level help (Control Usage Assistant). The current code (NVDA 2021.1) is compatible with both Python 2 and 3, but NV Access and contributors felt modernization should be attempted, specifically using facilities from Python 3 in more places.
Last year, NVDA moved from Python 2 to Python 3, the former without enumerations, the latter including it as part of an “enum” module. To study the impact of using enumerations to represent values and constants, NV Access introduced enums in a limited scale in NVDA 2020.1 (May 2020), specifically to represent speech output reasons (converted from a collection of integers to an enumeration in 2020.1). It turned out several add-ons (including StationPlaylist) used the old speech style, and since NVDA 2021.1 removed old style speech output reason collection in favor of enumeration, add-ons were modified recently to take advantage of the new style (that’s one of the reasons why, for some add-ons, you can’t modify manifests alone).
In the next version of NVDA (2021.2), enumeration usage is expanded to cover control roles and states (these are now enumerations, not constants anymore), and this work is termed “control types refactor”. Because the new enumerations are here to stay, NV Access promised old style (constants) will remain until NVDA 2022.1 (the next backwards incompatible release) is released to the public; until then, add-ons are welcome to use old and new styles to detect control roles and states.
So what does this “control types refactor” got to do with Joseph Lee’s add-ons? Control types refactor affects add-ons using control types module contents, including Control Usage Assistant, Enhanced Touch Gestures, GoldWave, StationPlaylist, and Windows App Essentials. At least until NVDA 2022.1 is released, the old control roles and states style will be kept, so it won’t affect my add-ons. However, after looking at the scale of control types refactor, coupled with impact of graduate school on add-on maintenance work, I decided to let my add-ons work with new (enumeration) style sooner than later. Therefore:
I hereby announce that version 21.08 of my add-ons will be the last releases to support NVDA 2021.1 or earlier, with the next releases exclusively supporting NVDA 2021.2 or later. This is so that I can spend more time studying and eventually easing add-on maintenance.
Not all add-ons are impacted by this announcement at the moment:
Add-on Updater is not affected at this time.
As a volunteer add-on author and maintainer with NVDA code contribution experience, I take add-on maintenance seriously. I feel it is important to tell you what’s going on so you can prepare accordingly, especially since what I just announced is based on changes to NVDA that will affect many add-ons. As long as I maintain these add-ons, I will do my best to make add-ons work with newer NVDA releases and make them compatible the day new NVDA versions show up when you check for updates.
Thanks. Hope this helps.