There has been a bit of confusion over NVDA's move to "Python
3". I wanted to share a short message to clarify a couple of
issues and concerns people have raised:
First and most importantly; the upcoming NVDA 2019.2 is not
affected. NVDA 2019.2 still uses code based on "Python 2", just
like NVDA 2019.1 and earlier. So, for the most part, anything
which works in NVDA 2019.1, should work in 2019.2.
Please do test NVDA 2019.2 beta 3, which is available here: https://www.nvaccess.org/files/nvda/releases/2019.2beta3/nvda_2019.2beta3.exe
If you do find any issues, particularly things which worked in
NVDA 2019.1 which no longer work, please do let us know. The
"Release Candidate" for 2019.2 is due out shortly, and we would
encourage all users to test that when it comes out.
So what are we doing? We're updating NVDA's code from being
largely based on Python 2, to Python 3. Python 3 was first
introduced in 2008, and Python 2 will reach end-of-life early
next year. Python's Wikipedia page succinctly explains why
Python 3 is important: Python 3 was "... designed to rectify
fundamental design flaws in the language—the changes required
could not be implemented while retaining full backwards
compatibility with the 2.x series". https://en.wikipedia.org/wiki/History_of_Python#Version_3
So why are we doing this? Partly to ensure the ongoing
stability and security of NVDA. We cannot release a product
based on a programming language which is no longer supported.
Not only would functionality be increasingly likely to break
with updates to Windows and other programs, but it would not be
secure. As well as this, developers learning Python over the
past few years have not been taught Python 2, they have been
taught Python 3. Moving to Python 3 ensures that we have access
to this growing pool of developers.
NV Access and the community have worked together to ensure the
process to transition add-ons is as smooth as possible. There
is a Wiki page with information on the transition at: https://github.com/nvaccess/nvda/wiki/nvdaPy3
Any developers with questions are encouraged to join in the
discussion on the NVDA Developers mailing list: https://groups.io/g/nvda-devel
As much as users are concerned about the ongoing viability of
add-ons they rely on, we are also keen to maintain stability and
continuity of functionality for everyone.
We have just released a first Alpha build of NVDA updated to
Python 3. This is really only aimed at developers at this
point. What we would like end-users to know is that we have
been in contact with the major synth and add-on developers. We
knew that would be the first question many people had about this
process so we have involved them from early on.
If you are wondering whether "Synthesizer X" or "Add-on Y" will
work under Python 3, the manufacturer of that Synthesizer or
add-on is the first port of call. If they have already updated
and tested, they will be happy to let you know that. Remember
that we have only just released a first alpha build using Python
3 ourselves, so don't panic if your favourite hasn't been
Joseph Lee has helpfully curated a list of add-ons, their known
status and the contact details for the developer. This list is
on the official add-ons site: https://addons.nvda-project.org/addons/nvdapy3.en.html
We will continue to work with add-on and synthesizer
developers. We don't have a choice about making this change,
but like you, we don't want to see anyone left with decreased
functionality due to an "upgrade".
Rest assured we will continue to test these changes to NVDA's
codebase prior to pushing them out to users. If you do still
have any questions or concerns, please feel free to ask.
Training and Support Manager