NVDA moving to Python 3
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 updated yet!
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.