Notes on Joseph Lee's add-ons: Add-on Updater mechanics, possible end of support for Windows 7 from my add-ons in 2022


 

Hi all,

With the end of fall finals, I decided to look at the forum archives in hopes of answering some add-on questions raised in the last few days. Specifically, I’m posting this message in response to a thread about Application Dictionary compatibility and the maintenance window for most of my add-ons is coming to a close soon.

Regarding Add-on Updater: some of you might be wondering about which add-ons Add-on Updater can check for updates. Add-on Updater can check for updates for add-ons registered on NVDA Community Add-ons website (addons.nvda-project.org). This means Add-on Updater cannot check for add-ons not registered there.

In the past, in order to get an add-on registered on community add-ons website, it must go through a review by an add-ons community member. This process was simplified recently – all that the add-on author must do is provide the following when registering add-ons:

  • Add-on name
  • Author information
  • Brief add-on description
  • Download link to an add-on release
  • Add-on source code repository (if one exists)

This information forms the basis of a pull request to be sent to NV Access to officially register new add-ons and/or update existing add-ons. Once registered, Add-on Updater will start checking for add-on updates without user intervention.

But that’s only part of the picture: one of the things people look for when testing add-ons is compatibility, specifically the minimum and last tested NVDA releases the add-on is compatible with. Even if an add-on is registered on community add-ons website, if NVDA determines the add-on is incompatible with the version of NVDA you are using, then NVDA itself will not install the add-on. Add-on Updater will go further and will not offer updates to add-ons deemed incompatible for the version of NVDA the Add-on Updater is running on (this check is also done without user intervention); this is the reason why I announced the other day that Add-on Updater will not offer add-on updates for NVDA versions earlier than 2021.2 for some add-ons (notably mine), so to get updates for these, you must install newer NVDA releases.

In relation to Application Dictionary, Add-on Updater cannot check for updates not only because the add-on is not registered on community add-ons website, the add-on itself isn’t compatible with NVDA 2021.1 API. I’m writing this explanation for three reasons:

  1. The best people to contact regarding add-on compatibility isn’t just users – add-on authors are the best people to contact about add-ons, and if contact is lost, the add-ons community.
  2. Unless unable to do so, add-on authors must be proactive in keeping their add-ons updated and ready for recent changes, including compatibility changes. I guarantee that by the time NVDA 2022.1 beta 1 is released, there will be attempts to circumvent API changes by “modifying” add-on manifests, and that strategy will FAIL for several add-ons.
  3. Please help the community add-ons website by requesting add-on registrations (it would be great if add-on authors themselves shows willingness to register their add-ons). Not only it helps the add-ons community, it would also improve the reputation of NVDA by making add-ons more discoverable.

 

Speaking of add-ons, I hereby announce that the following add-ons will end support for Windows 7 and 8.0 (not 8.1) as early as 2022:

  • Control Usage Assistant
  • Enhanced Touch Gestures
  • GoldWave
  • Resource Monitor
  • StationPlaylist

Specifically, I expect the next (planned )stable versions of these add-ons will be one of the last releases to end support for Windows 7. This is so that whoever is going to maintain these add-ons in the future can work with simplified code. As for NVDA itself ending support for Windows 7, that’s not up to me to decide – that decision lies with NV Access (although you can taste what that would look like; coming soon).

I’m making the above statement to prepare you for the day when NVDA will require Windows 8.1 or later (or for that matter, Windows 10 and later). Unless your computer is part of an organization that has elected to stay on Windows 7 and/or need to use it for development and testing purposes, I advise you all to move to a supported Windows release – Windows 8.1, 10, or 11 (and any future release). Windows 7 will be supported by Microsoft until January 2023 but if and only if the organization the computer is part of pays Microsoft for extended security updates (ESU’s); for everyone else, Windows 7 is no longer supported by Microsoft. Again let me make it clear that the decision to end support for Windows 7 from NVDA itself does not rest with me – it is up to NV Access to decide, and for now NVDA supports Windows 7.

Cheers,

Joseph


 

You know I've said this before but I will say it yet again.
I really think its about time for the addon updater to become part of nvda core.
That and the windows app essentials if not part of nvda at least one
of the addons installed by default.
Saying that the last time I mentioned this I was told the store was
coming along.
Now I admit I don't really duck about with looking at each repo unless
its not compatible or working or anything as much as I should, I am
just a normal user for the most part.
So what is the status, idealy there should be a way to add addon
sourdces as well as addons like in linux.
Obviously if you sideload and it falls over its your own funeral but
linux allows adding extra addon points as well as the official addons.
There should also be an easy way to register one either vote one to
the main site as a user or something though obviously authors would
need to put them there.
As well as this where possible things like interactive fiction stuff
should be if not part of the core at least have basic support.
I realise that some engines do change from time to time though.

On 19/12/2021, Joseph Lee <joseph.lee22590@...> wrote:
Hi all,

With the end of fall finals, I decided to look at the forum archives in
hopes of answering some add-on questions raised in the last few days.
Specifically, I'm posting this message in response to a thread about
Application Dictionary compatibility and the maintenance window for most of
my add-ons is coming to a close soon.

Regarding Add-on Updater: some of you might be wondering about which
add-ons
Add-on Updater can check for updates. Add-on Updater can check for updates
for add-ons registered on NVDA Community Add-ons website
(addons.nvda-project.org). This means Add-on Updater cannot check for
add-ons not registered there.

In the past, in order to get an add-on registered on community add-ons
website, it must go through a review by an add-ons community member. This
process was simplified recently - all that the add-on author must do is
provide the following when registering add-ons:

* Add-on name
* Author information
* Brief add-on description
* Download link to an add-on release
* Add-on source code repository (if one exists)

This information forms the basis of a pull request to be sent to NV Access
to officially register new add-ons and/or update existing add-ons. Once
registered, Add-on Updater will start checking for add-on updates without
user intervention.

But that's only part of the picture: one of the things people look for when
testing add-ons is compatibility, specifically the minimum and last tested
NVDA releases the add-on is compatible with. Even if an add-on is
registered
on community add-ons website, if NVDA determines the add-on is incompatible
with the version of NVDA you are using, then NVDA itself will not install
the add-on. Add-on Updater will go further and will not offer updates to
add-ons deemed incompatible for the version of NVDA the Add-on Updater is
running on (this check is also done without user intervention); this is the
reason why I announced the other day that Add-on Updater will not offer
add-on updates for NVDA versions earlier than 2021.2 for some add-ons
(notably mine), so to get updates for these, you must install newer NVDA
releases.

In relation to Application Dictionary, Add-on Updater cannot check for
updates not only because the add-on is not registered on community add-ons
website, the add-on itself isn't compatible with NVDA 2021.1 API. I'm
writing this explanation for three reasons:

1. The best people to contact regarding add-on compatibility isn't just
users - add-on authors are the best people to contact about add-ons, and if
contact is lost, the add-ons community.
2. Unless unable to do so, add-on authors must be proactive in keeping
their add-ons updated and ready for recent changes, including compatibility
changes. I guarantee that by the time NVDA 2022.1 beta 1 is released, there
will be attempts to circumvent API changes by "modifying" add-on manifests,
and that strategy will FAIL for several add-ons.
3. Please help the community add-ons website by requesting add-on
registrations (it would be great if add-on authors themselves shows
willingness to register their add-ons). Not only it helps the add-ons
community, it would also improve the reputation of NVDA by making add-ons
more discoverable.



Speaking of add-ons, I hereby announce that the following add-ons will end
support for Windows 7 and 8.0 (not 8.1) as early as 2022:

* Control Usage Assistant
* Enhanced Touch Gestures
* GoldWave
* Resource Monitor
* StationPlaylist

Specifically, I expect the next (planned )stable versions of these add-ons
will be one of the last releases to end support for Windows 7. This is so
that whoever is going to maintain these add-ons in the future can work with
simplified code. As for NVDA itself ending support for Windows 7, that's
not
up to me to decide - that decision lies with NV Access (although you can
taste what that would look like; coming soon).

I'm making the above statement to prepare you for the day when NVDA will
require Windows 8.1 or later (or for that matter, Windows 10 and later).
Unless your computer is part of an organization that has elected to stay on
Windows 7 and/or need to use it for development and testing purposes, I
advise you all to move to a supported Windows release - Windows 8.1, 10, or
11 (and any future release). Windows 7 will be supported by Microsoft until
January 2023 but if and only if the organization the computer is part of
pays Microsoft for extended security updates (ESU's); for everyone else,
Windows 7 is no longer supported by Microsoft. Again let me make it clear
that the decision to end support for Windows 7 from NVDA itself does not
rest with me - it is up to NV Access to decide, and for now NVDA supports
Windows 7.

Cheers,

Joseph







 

Hi,

There is a philosophy in computer programming that is introduced to students when talking about object-oriented programming: separation of concerns; that is, treat each code as a domain expert, thereby allowing programs to be modularized. I personally take that approach a step further: let each add-on be an expert on one thing or a related set of concepts under a theme that can be maintained easily. This, together with the upcoming Add-on Store, are reasons why I have no plans to transform Add-on Updater into a fully-fledged add-on store system.

I also tend to apply the concept of separation of concerns to the relationship between NVDA and add-ons:

  • NVDA: let the screen reader be what it is good at - accessibility data gathering, processing, interpreting, and output. Essentially, screen readers are sophisticated data processors, and as such, screen readers come with basic rules for handling common scenarios.
  • Add-ons: use the basics provided by the screen reader to open up possibilities for users. Only if a feature or two from an add-on is deemed common or have potential for wider usage should it be included in screen readers.

As for Windows App Essentials, as long as Microsoft does not let go of Windows and accessibility adventures continue, it will remain an add-on unless all major features from the add-on become part of NVDA. And as long as Windows as a Service (WaaS) remains in place, Windows App Essentials will not be declared end of life as the add-on embodies WaaS strategy. This is because:

  1. Feature updates come and go. Although not applicable to Windows 11 yet, around this time next year, there will be a buzz about Windows 11 Version 22H2. I intentionally end support for the oldest supported Windows 10/11 feature update several weeks prior to end of consumer support (the next such occurrence will be in February 2022 when Windows App Essentials will not support Windows 10 Version 20H2 (October 2020 Update) as consumer support for that feature update will end in May 2022) to highlight the need to stay current.
  2. Apps and features can change with or without notice. Although not applicable to users on stable versions for now, a change was introduced to Notepad on Insider Preview dev channel builds that breaks status bar announcements. Because this is a major change, a workaround is included in Windows App Essentials add-on as of the upcoming stable version (22.01). It is sometimes advantageous to include changes like this in NVDA, but things can change without notice to a point where the app is changed again by the time the change comes to stable users, making just announced change useless. The next best alternative is an add-on release that can react to changes like this faster. This is especially important when supporting features introduced in Insider Preview builds (things can change without notice).

As for including interactive fiction modules in NVDA, think about the following questions carefully:

  1. Is interactive fiction module support gaining traction within the community, and if so, why? Notice I didn't say "how" because I want you to give folks justifiable justifications.
  2. What community-wide benefit can be gained and lost if interactive fiction support is included AND not included?
  3. What is the current priority of NVDA right now?
  4. Is interactive fiction support a core component of screen reading or can it be done outside of it?
  5. Why should I justify the feature request?
  6. How can I respond to feedback and counterarguments about this suggestion?
  7. Why should I justify the justifications for the above points?

In other words, I say this with care: please think things through. To say it more bluntly: persuade the community with justifiable reasons. If folks feel a suggestion needs greater community attention, think about the suggestion, take a walk, organize your thoughts, think again, take a walk again, organize your thoughts again, and THEN write something (what I just wrote is my heartfelt advice to the entire NVDA community, something that has been in my mind for the last few years; I will come back to this thought in a later post).

Cheers,

Joseph


 

To be honest though store excluded, i thought it would make sence for
nvda's own updater to update addons.
I know there is an addon store allready in the works but all I know is
that its being worked on for release.
On the subject of addons, what happened to nvspeech player.
I mean why is that even an addon.
Point, we only have 1 synth, espeak and while thats multiplatform and
yeah it works do we want to remain using something like this or have a
secondary synth nvaccess natively makes or whatever.
I understand space and such but in a ideal world and a lot of the
world has some form of high speed net, I do wander if it would make
sence for nvda to have more synths either included or as an extra
addon package for those that have the power.
I know we are moving away from this stuff but well.

On 19/12/2021, Joseph Lee <joseph.lee22590@...> wrote:
Hi,

There is a philosophy in computer programming that is introduced to students
when talking about object-oriented programming: separation of concerns; that
is, treat each code as a domain expert, thereby allowing programs to be
modularized. I personally take that approach a step further: let each add-on
be an expert on one thing or a related set of concepts under a theme that
can be maintained easily. This, together with the upcoming Add-on Store, are
reasons why I have no plans to transform Add-on Updater into a fully-fledged
add-on store system.

I also tend to apply the concept of separation of concerns to the
relationship between NVDA and add-ons:

* NVDA: let the screen reader be what it is good at - accessibility data
gathering, processing, interpreting, and output. Essentially, screen readers
are sophisticated data processors, and as such, screen readers come with
basic rules for handling common scenarios.
* Add-ons: use the basics provided by the screen reader to open up
possibilities for users. Only if a feature or two from an add-on is deemed
common or have potential for wider usage should it be included in screen
readers.

As for Windows App Essentials, as long as Microsoft does not let go of
Windows and accessibility adventures continue, it will remain an add-on
unless all major features from the add-on become part of NVDA. And as long
as Windows as a Service (WaaS) remains in place, Windows App Essentials will
not be declared end of life as the add-on embodies WaaS strategy. This is
because:

1. Feature updates come and go. Although not applicable to Windows 11 yet,
around this time next year, there will be a buzz about Windows 11 Version
22H2. I intentionally end support for the oldest supported Windows 10/11
feature update several weeks prior to end of consumer support (the next such
occurrence will be in February 2022 when Windows App Essentials will not
support Windows 10 Version 20H2 (October 2020 Update) as consumer support
for that feature update will end in May 2022) to highlight the need to stay
current.
2. Apps and features can change with or without notice. Although not
applicable to users on stable versions for now, a change was introduced to
Notepad on Insider Preview dev channel builds that breaks status bar
announcements. Because this is a major change, a workaround is included in
Windows App Essentials add-on as of the upcoming stable version (22.01). It
is sometimes advantageous to include changes like this in NVDA, but things
can change without notice to a point where the app is changed again by the
time the change comes to stable users, making just announced change useless.
The next best alternative is an add-on release that can react to changes
like this faster. This is especially important when supporting features
introduced in Insider Preview builds (things can change without notice).

As for including interactive fiction modules in NVDA, think about the
following questions carefully:

1. Is interactive fiction module support gaining traction within the
community, and if so, why? Notice I didn't say "how" because I want you to
give folks justifiable justifications.
2. What community-wide benefit can be gained and lost if interactive fiction
support is included AND not included?
3. What is the current priority of NVDA right now?
4. Is interactive fiction support a core component of screen reading or can
it be done outside of it?
5. Why should I justify the feature request?
6. How can I respond to feedback and counterarguments about this
suggestion?
7. Why should I justify the justifications for the above points?

In other words, I say this with care: please think things through. To say it
more bluntly: persuade the community with justifiable reasons. If folks feel
a suggestion needs greater community attention, think about the suggestion,
take a walk, organize your thoughts, think again, take a walk again,
organize your thoughts again, and THEN write something (what I just wrote is
my heartfelt advice to the entire NVDA community, something that has been in
my mind for the last few years; I will come back to this thought in a later
post).

Cheers,

Joseph






 

Hi,

Regarding add-on updates: in short, what you are suggesting is exactly the mechanism Add-on Updater uses to download add-on updates, although with tweaks added. The story about it goes back many years- Add-on Updater's true ancestor is the update facility from StationPlaylist add-on, and Windows App Essentials also contributed tweaks to Add-on Updater.

As for NV Speech Player: it came out of a project to add Klat functionality to eSpeak, which was added to the synthesizer itself recently. Thus, for all practical purposes NV Speech Player is end of life although it is kept for those who are using older NVDA releases.

As for including additional speech synthesizers inside NVDA or as an add-on: bandwidth is not the biggest puzzle piece - money and resources, combined with copyright regulations and human will, are biggest puzzle pieces. Think about the following: NVDA is not really free from financial standpoint. In some respects, free add-ons hosted on community add-ons website are not really free either from the same standpoint. NVDA is free and many add-ons are free because the copyright license we (developers and add-on authors) use directs us to make our code available and modifiable.

Let us suppose someone approaches NV Access and says, "look, I have this awesome speech synthesizer I want to see included in NVDA," or perhaps an add-on author says, "I want to write a speech synthesizer driver for this cool synthesizer." How would NV Access and/or the add-ons community respond? If what you expect is an email five minutes later from NV Access saying, "cool, we will add support for this speech synthesizer", then either you are the copyright owner of the synthesizer in question, you have somehow convinced NV Access and/or the add-ons community that you have the necessary resources to make it happen, or asked NV Access to accept your suggestion without doing their own critical research. Especially for speech synthesizer add-ons, asking NV Access should be the last step - you must first talk to the vendor and arrange something (like what Tiflotecnia did with Nuance Vocalizer), calculate resources including costs, obtain permission from copyright holders unless the copyright holder said yes to free and open-source licensing, build trust between yourself and the vendor, and then let NV Access and the community know about what's going on. It can be argued that all this comes down to a single number or a point, but as the above example demonstrates, many things are involved just to add support for a speech synthesizer.

Hope this helps.

Cheers,

Joseph


 

Wow yeah I guess it makes sence.

Opensource is a complex beast so many moving parts the user like myself does not notice but yeah I can see the issue.



On 19/12/2021 6:49 pm, Joseph Lee wrote:

Hi,

Regarding add-on updates: in short, what you are suggesting is exactly the mechanism Add-on Updater uses to download add-on updates, although with tweaks added. The story about it goes back many years- Add-on Updater's true ancestor is the update facility from StationPlaylist add-on, and Windows App Essentials also contributed tweaks to Add-on Updater.

As for NV Speech Player: it came out of a project to add Klat functionality to eSpeak, which was added to the synthesizer itself recently. Thus, for all practical purposes NV Speech Player is end of life although it is kept for those who are using older NVDA releases.

As for including additional speech synthesizers inside NVDA or as an add-on: bandwidth is not the biggest puzzle piece - money and resources, combined with copyright regulations and human will, are biggest puzzle pieces. Think about the following: NVDA is not really free from financial standpoint. In some respects, free add-ons hosted on community add-ons website are not really free either from the same standpoint. NVDA is free and many add-ons are free because the copyright license we (developers and add-on authors) use directs us to make our code available and modifiable.

Let us suppose someone approaches NV Access and says, "look, I have this awesome speech synthesizer I want to see included in NVDA," or perhaps an add-on author says, "I want to write a speech synthesizer driver for this cool synthesizer." How would NV Access and/or the add-ons community respond? If what you expect is an email five minutes later from NV Access saying, "cool, we will add support for this speech synthesizer", then either you are the copyright owner of the synthesizer in question, you have somehow convinced NV Access and/or the add-ons community that you have the necessary resources to make it happen, or asked NV Access to accept your suggestion without doing their own critical research. Especially for speech synthesizer add-ons, asking NV Access should be the last step - you must first talk to the vendor and arrange something (like what Tiflotecnia did with Nuance Vocalizer), calculate resources including costs, obtain permission from copyright holders unless the copyright holder said yes to free and open-source licensing, build trust between yourself and the vendor, and then let NV Access and the community know about what's going on. It can be argued that all this comes down to a single number or a point, but as the above example demonstrates, many things are involved just to add support for a speech synthesizer.

Hope this helps.

Cheers,

Joseph