Re: Announcing Project Pylennium: porting NVDA code base, dependencies, and developer attitudes to Python 3.6.x

Joshua Hendrickson

Hi to all. I know nothing about how to make computer programs like
NVDA work and nothing about python. However, I say any change to NVDA
can only make it a better screenreader. Best of Luck Joseph to the
project. If I knew how to use python I'd do my best to help. Keep up
the good work.

On 7/22/17, nasrin khaksar <> wrote:
thanks for good news joseph and brian.
do you continue supporting of xp?
i became worried when i read the message for the first time.
God bless you all!

On 7/22/17, Brian's Mail list account via Groups.Io
<> wrote:
Sounds sensible. At least this will preserve xp etc with the old Python

as long as possible. One thing you do not say, which may be obvious to

but perhaps not to the average user is..
What are the reasons for change.
is it that its going to be faster, 64 bit or has better ways of doing

nvda needs to be able to do in the future?
Obviously not in your remit is that at some point an agreed last working
version of the old NVDA that can work on xp etc is going to have to be

available and then when add ons are updated, those that will and won't
on the old version will need to be noted and if possible trapped by the

version so it cannot be scrambled by an add on.

Sent via blueyonder.
Please address personal email to:-, putting 'Brian Gaff'
in the display name field.
----- Original Message -----
From: "Joseph Lee" <>
To: <>
Sent: Saturday, July 22, 2017 7:55 AM
Subject: [nvda] Announcing Project Pylennium: porting NVDA code base,
dependencies, and developer attitudes to Python 3.6.x

Ladies and gentlemen,

Some of you have been asking NV Access and the global NVDA community
regarding porting NVDA source code and dependencies to Python 3. I and
contributors have been brainstorming best ways to accomplish this, and
Access, contributors, some add-on writers, users, and NVDA observers
that it is important that we look into eventually porting NVDA to Python

Until recently, the possibility of moving NVDA to Python 3 seemed to be
a dream. However, a major hurdle was overcome earlier this year when
wxPython 4 alpha was released, promising support for Python versions 2.7
3.x. Apart from a major problem regarding certain internal routines from
wxPython 4 that may not be compatible with NVDA source code, the stage
almost set to begin our transition to Python 3, dubbed "Project

Project Pylennium is a new project I'm planning and working on that
make it easier for NV Access, code contributors, add-on writers, users
many others to experience smooth transition to Python 3. The overall

this project is to prepare NVDA's source code so it can run on both

and 3 in most cases until developers are ready to move on. This project
seeks to uncover possible compatibility issues for NVDA community when
transition happens, and to document these findings so it can serve as
guidelines to current and future developers.

The current iteration of Project Pylennium (based on NVDA GitHub issue
as a roadmap) can be found on my copy of NVDA source code at:

The branch to use is "py3000".

Project pylennium involves the following:

1. Gather dependencies required for Python 3 transition, such as newer
versions of Python, ConfigObj and many others. A crucial dependency is
Six module, which adds compatibility layer functions for both Python 2
2. Document porting notes, which will eventually be published on our
NVDA Community wiki.
3. Create source-level compatibility layer in order to mitigate changes
in module names, standard library folder structure, function and class
and so on.
4. Migrate most code to Python 3 syntax.
5. Frequent and regular testing to make sure regressions are not

Progress so far:

1. Imports: a compatibility layer is in place to import Python 2 or 3
version of winreg, pickle, io.StringIO and what not.
2. Compiles fine via SCons 2.x.
3. Possible to see the first initialization phase of NVDA launcher
(nvda.pyw) via command line. The biggest showstopper at this time is the
fact that logHandler.StreamHandler constructor uses file function when
Python 3 says it isn't available, which suggests we need to modernize
handler module.


1. Allows NV Access to look at porting data and make informed
2. Allows contributors and Python experts to provide expertise and
prepare the source code for Python 3 transition.
3. Allows add-on authors to look at changes and prepare their add-ons
to run on Python 3.
4. Allows interested users to be involved in a major project and
provide test data.


1. We need to part ways with Windows XP and Server 2003.
2. Stress throughout the project, as it is nothing like what we've seen
3. Some add-ons will need community intervention to get them to run on
Python 3, as some are abandonware (no longer maintained by authors or
add-ons community don't know who wrote some of them and lost contact
some authors).
4. Possible issues in code and other ones, especially when looking at
code and attitude conflicts.

Next steps:

1. I'm looking for volunteers and subproject leads: if you are
passionate about Python, NVDA, and want to help NVDA achieve the next
milestone, please help and find folks who can assist in this project. In
regards to subprojects, mostly have to do with dependency checks and
testing, documentation, talking to Python Software Foundation (PSF),
recruiting Python experts and what not.
2. Cooperation: as Project Pylennium is a grand-scale project, we
cannot move forward and make it a reality unless cooperation between
developers, add-on authors, users, observers and many others is there.
3. Promote: one way to keep the momentum going is promoting this
project far and wide.
4. Continued work: I'm looking into how to port urllib imports, as this
module has seen huge folder restructuring in Python 3 and other work.

What you'll need for this project:

1. Python 3.6.0 32-bit or later (3.6.2 is recommended).
2. wxPython 4 alpha 3 or later with the wheel for Python 3.5 or 3.6.
3. Six module (from PYPI).
4. ConfigObj 5.0.6.


1. When sending pull requests, please do NOT send them to NV Access
yet, as folks over there are working on high priority work. Instead,

pull request against josephsl/nvda branch py3000.
2. Please provide a clear commit message when sending in pull requests
so folks can track what has changed.
3. Before you commit, please make sure to test NVDA in order to catch
regressions and write workarounds.
4. At least once a month, I will merge NV Access master branch to keep
the code up to date and incorporate changes into this project, sometimes
requiring transforming syntax to fit Python 3 requirements.
5. If you want to port add-ons, please do so at your earliest
convenience or when you are ready. As part of this work, I myself will
my own add-ons to Python 3 (one of them is done; throughout this year,
port rest of my add-ons). Please do not port your add-ons to Python 3
completely - I recommend making it so it'll run happily on both Python

Thank you.



we have not sent you but as a mercy to the creation.
holy quran, chapter 21, verse 107.
in the very authentic narration is:
imam hosein is the beacon of light and the ark of salvation.
best website for studying islamic book in different languages

Joshua Hendrickson

Joshua Hendrickson

Join to automatically receive all group messages.