Dear NVDA community,
This is Joseph Lee, one of the code contributors to NVDA screen reader project and a reviewer of community add-ons. I would like to take this time to update you on what’s been happening in regards to future compatibility of add-ons hosted on various websites, as well as rationale for compatibility notices you’re seeing from recent NVDA development releases (chiefly on alpha channel).
As of December 6, 2018, NVDA 2019.1 alpha snapshots (build 16382 onwards) will prompt you to check compatibility of various add-ons when you’re installing snapshots. This is because NVDA will now check if any of your add-ons are compatible with it by looking at two new manifest keys. These add-on manifest keys will tell NVDA if a given add-on is compatible with latest NVDA release, as well as providing a minimum compatible NVDA version if specified. After installing that alpha build and beyond, if NVDA detects one or more add-ons are not compatible, it will present a dialog at start up asking you to check which add-ons you still wish to use despite them being flagged as incompatible. This will be noticeable if you are using a third-party speech synthesizer or braille display by default and somehow these are not loading. Also, when trying to install new add-ons, if NVDA sees the add-on is incompatible, it’ll prompt a warning about it.
Prior to this change, you can install add-ons on any NVDA release (including upcoming 2018.4), and it was up to add-ons to use features provided by a given NVDA release. This meant really old add-ons could be installed, and if not optimized for recent NVDA releases, the add-on would not work as intended, and in some cases, fail to run outright. Some add-ons do have specific NVDA version requirements, but not all add-ons take advantage of this recommendation.
There are several reasons for the change as described above:
- Python 3 transition: as some of you (I think, at this point, more people) may know, NV Access and several developers (including I) are researching possible roadblocks to Python 3 transition, and I’m maintaining an actual Python 3 version of NVDA for testing purposes. Given massive differences between Python 2 and 3, it was felt to place add-on compatibility checks in place so you won’t install add-ons written in Python 2 on a Python 3 version of NVDA. This is one of the reasons for adding minimum NVDA version checks for add-ons if appropriate. As of today (December 8, 2018), at least three add-ons are Python 3 ready (thus will require newer NVDA versions in the future), and I expect that number to grow significantly in the next few months; the three compatible add-ons are Resource Monitor, SystrayList, and Windows 10 App Essentials, with StationPlaylist Studio to be added to this list in January 2019.
- Various internal work planned for the future: these include projects such as speech refactor (changing internals behind NVDA’s speech functionality) and such that will cause some add-ons to fail to work as advertised.
The new compatibility flags are:
- minimumNVDAVersion: specifies minimum version of NVDA the add-on is compatible with.
- lastTestedNVDAVersion: latest compatible NVDA version for the add-on.
These manifest keys are optional for now; in 2019, they will become mandatory for ALL add-ons. I would go so far as say that they are MANDATORY from now on, especially if you need to test your add-ons in alpha snapshots and intend to produce a Python 3 version of your add-ons.
As of December 8, 2018, only several add-ons hosted on community add-ons website (addons.nvda-project.org) are truly future-proof (compatibility flags are present). The good news is that add-on authors do understand the impact this change will have on their add-ons and some have begun updating their add-ons to add compatibility flags; others plan to add changes once 2019.1 enters beta testing phase (based on past conversations), while the community lost contact with authors of some add-ons (some of which are popular) and their add-ons will be flagged as incompatible unless updates are released.
The following add-ons are NVDA 2019.1 compatible and thus won’t cause NVDA to flag them as incompatible:
- Add-on Updater
- Easy Table Navigator
- Enhanced Touch Gestures
- Focus Highlight
- Golden Cursor
- Object Location Tones
- Resource Monitor
- StationPlaylist Studio
- Unicode Braille Input
- Virtual Review
- Windows 10 App Essentials
- And possibly more.
For add-ons not listed:
- For users: please contact authors of add-ons you’re using and ask for their thoughts and plans for add-on compatibility flags and other future work (see below for words about my add-ons).
- For developers: please think about the impact of this change and update your add-ons. I don’t expect all add-ons to be made compatible by the time 2019.1 stable version (or release candidate) is released, but at least for popular ones, please have your add-ons made compatible by the time 2019.1 beta 1 shows up. Also, I advise setting last tested version to 2019.2 so you can have plenty of time modernizing add-ons.
Notes for users of my add-ons or add-ons that’ll be reviewed by me:
- For users: I expect all my add-ons (at least ones currently under active support) to be made Python 3 ready no later than March 2019. As far as last tested version flag is concerned, I’ll try my best to target later NVDA releases (for example, if using an add-on in NVDA 2019.1, the compatibility flag will indicate support for at least NvDA 2019.3) so you won’t have to worry about compatibility flag problems for a long time; compatibility flags (at least last tested version flag) will be updated once or twice a year.
- For add-ons to be reviewed: I will look for compatibility flags (as part of user experience portion of basic review) starting from February 2019; other add-on reviewers may or may not look for these flags.
- For Add-on Updater users: I will start enforcing add-on compatibility flags from version 19.03; that is, Add-on Updater will refuse to install add-on updates if they do not specify at least last tested version flag to align with NVDA 2019.1 behavior.