Topics

Community notice: upcoming NVDA 2019.3 and community add-ons

 

Hi NVDA community,

I’m Joseph Lee, a volunteer code contributor for NVDA screen reader project and the chief investigator for Python 3 work. First, I would like to thank my colleagues at NV Access and beyond for achieving a milestone in Python 3 work: alpha snapshots (master branch in source code) being powered by Python 3.

To the matter at hand: NVDA 2019.3 (Threshold, scheduled for later this year) will feature backwards incompatible changes, including speech refactor and Python 3. Because of this, many community add-ons (including add-ons hosted on addons.nvda-project.org) will need to be modified to take advantage of these changes, especially when it comes to supporting Python 3. Because Python 2 to 3 transition is a huge undertaking, I expect add-ons community will take several weeks to months (or longer) to transition vast majority of add-ons to Python 3, and collaboration is a key to success in this endeavor.

The following is a set of steps members of the community should take:

 

For add-on authors:

  1. Prepare your mindset for Python 3 by reading several porting guides. The official one can be found at https://docs.python.org/3/howto/pyporting.html. Another useful one (titled Conservative Python 3 Porting Guide) can be found at https://portingguide.readthedocs.io/en/latest/.
  2. If you haven’t done so, please install Python 3.7 so you can experiment with differences between Python 2 and 3.
  3. Once you are comfortable with Python 3, please test your add-on(s) with latest NVDA alpha snapshots, preferably with build 18195 or later. If you need to keep using current add-ons or need to compare Python 2 versus 3, please use a portable copy of NVDA to test your add-ons.
  4. Make necessary changes. It is up to you in regards to supporting older NVDA releases or not; if yes, you must write code compatible with both Python 2 and 3, otherwise please use Python 3.
  5. After testing your add-ons, please release a Python 3 version of your add-on(s) for testing. You can either use development channel or a separate package. As you do so, please send a notice to the NVDA community regarding your add-ons and their compatibility with upcoming NVDA release.
  6. Please listen to feedback and make changes based on what users are saying.
  7. I advise completing Python 3 transition work for add-ons by end of this year, or by 2019.3 RC if possible. Although it won’t be a while before beta comes out, targeting release candidate ensures changes can be made based on feedback from beta testers.
  8. Keep listening to feedback after NvDA 2019.3 stable is released and make necessary changes if any.

 

For users:

  1. If you are adventurous, please test alpha snapshots as a portable copy. I don’t advise using an install copy for now until your favorite add-ons are declared compatible.
  2. Please send feedback to add-on authors if you find issues with add-ons. An announcement has been posted on community add-ons website detailing compatible add-ons, issues with incompatible add-ons, and contact information for authors. The announcement can be found at https://addons.nvda-project.org/addons/nvdapy3.en.html.
  3. When authors announce add-on compatibility notices, please read those notices and take note of issues.

 

Frequently asked questions:

 

Q. Can I make an add-on “compatible” by editing the manifest file?

No. Although it’ll give you a sense of “assurance” that your add-on will be considered “compatible” by NVDA, you will need to obtain a version of an add-on compatible with Python 3, speech refactor, and other changes.

 

Q. I need to report issues with add-ons not found on community add-ons website.

For these (especially speech synthesizer add-ons), you must contact the authors listed under Add-ons Manager.

 

Q. I am using an add-on that is declared compatible, yet NVDA won’t load due to an error about configobj.

This is caused by manifest file encoding. Add-ons must now use UTF-8 (without BOM). Vocalizer (add-on 2.x) is affected by this bug and possibly others.

 

Q. When starting NVDA, I get a runtime error and it becomes silent.

The most likely cause is an add-on that uses a C extension (.pyd) module that won’t work properly on Python 3. Disabling the add-on will allow NVDA to proceed with startup. For add-ons affected by this, authors must now compile C extensions with Visual Studio 2017, the compiler used to compile Python 3.7.

 

Q. What about add-ons noted as end of life?

Please contact add-on authors about their plans to support Python 3. One such add-on is Control Usage Assistant, and I (Joseph Lee) will make an announcement about it very soon.

 

Thank you. And with that, let Python 3 porting begin!

Cheers,

Joseph