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

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Joseph Lee

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 some contributors have been brainstorming best ways to accomplish this, and NV Access, contributors, some add-on writers, users, and NVDA observers agree that it is important that we look into eventually porting NVDA to Python 3.

 

Until recently, the possibility of moving NVDA to Python 3 seemed to be only a dream. However, a major hurdle was overcome earlier this year when wxPython 4 alpha was released, promising support for Python versions 2.7 and 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 is almost set to begin our transition to Python 3, dubbed “Project Pylennium”.

 

Project Pylennium is a new project I’m planning and working on that should make it easier for NV Access, code contributors, add-on writers, users and many others to experience smooth transition to Python 3. The overall goal of this project is to prepare NVDA’s source code so it can run on both Python 2 and 3 in most cases until developers are ready to move on. This project also seeks to uncover possible compatibility issues for NVDA community when the 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 7105 as a roadmap) can be found on my copy of NVDA source code at:

https://github.com/josephsl/nvda

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 the Six module, which adds compatibility layer functions for both Python 2 and 3.
  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 names and so on.
  4. Migrate most code to Python 3 syntax.
  5. Frequent and regular testing to make sure regressions are not introduced.

 

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 log handler module.

 

Benefits:

 

  1. Allows NV Access to look at porting data and make informed decisions.
  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.

 

Disadvantages:

 

  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 recently.
  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 the add-ons community don’t know who wrote some of them and lost contact with 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 tests, 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.

 

Guidelines:

 

  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, send a 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 port my own add-ons to Python 3 (one of them is done; throughout this year, I’ll 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 versions.

 

Thank you.

Sincerely,

Joseph


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Akash Kakkar-2
Hi Joseph, very nice initiative indeed. just for curiousity,  what
does Pylennium mean?

On 7/22/17, Joseph Lee <[hidden email]> wrote:

> 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 some
> contributors have been brainstorming best ways to accomplish this, and NV
> Access, contributors, some add-on writers, users, and NVDA observers agree
> that it is important that we look into eventually porting NVDA to Python 3.
>
>
>
> Until recently, the possibility of moving NVDA to Python 3 seemed to be
> only
> a dream. However, a major hurdle was overcome earlier this year when
> wxPython 4 alpha was released, promising support for Python versions 2.7
> and
> 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 is
> almost set to begin our transition to Python 3, dubbed "Project Pylennium".
>
>
>
> Project Pylennium is a new project I'm planning and working on that should
> make it easier for NV Access, code contributors, add-on writers, users and
> many others to experience smooth transition to Python 3. The overall goal
> of
> this project is to prepare NVDA's source code so it can run on both Python
> 2
> and 3 in most cases until developers are ready to move on. This project
> also
> seeks to uncover possible compatibility issues for NVDA community when the
> 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 7105
> as a roadmap) can be found on my copy of NVDA source code at:
>
> https://github.com/josephsl/nvda
>
> 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 the
> Six module, which adds compatibility layer functions for both Python 2 and
> 3.
> 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
> names
> and so on.
> 4. Migrate most code to Python 3 syntax.
> 5. Frequent and regular testing to make sure regressions are not
> introduced.
>
>
>
> 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 log
> handler module.
>
>
>
> Benefits:
>
>
>
> 1. Allows NV Access to look at porting data and make informed
> decisions.
> 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.
>
>
>
> Disadvantages:
>
>
>
> 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
> recently.
> 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 the
> add-ons community don't know who wrote some of them and lost contact with
> 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 tests,
> 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.
>
>
>
> Guidelines:
>
>
>
> 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, send a
> 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 port
> my own add-ons to Python 3 (one of them is done; throughout this year, I'll
> 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
> versions.
>
>
>
> Thank you.
>
> Sincerely,
>
> Joseph
>
>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Joseph Lee
Hi,
Pylennium = Python + millennium.
Cheers,
Joseph

-----Original Message-----
From: Akash Kakkar [mailto:[hidden email]]
Sent: Saturday, July 22, 2017 12:17 AM
To: NVDA screen reader development <[hidden email]>
Subject: Re: [Nvda-devel] Announcing Project Pylennium: porting NVDA code
base, dependencies, and developer attitudes to Python 3.6.x

Hi Joseph, very nice initiative indeed. just for curiousity,  what does
Pylennium mean?

On 7/22/17, Joseph Lee <[hidden email]> wrote:
> 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
> some contributors have been brainstorming best ways to accomplish
> this, and NV Access, contributors, some add-on writers, users, and
> NVDA observers agree that it is important that we look into eventually
porting NVDA to Python 3.

>
>
>
> Until recently, the possibility of moving NVDA to Python 3 seemed to
> be only a dream. However, a major hurdle was overcome earlier this
> year when wxPython 4 alpha was released, promising support for Python
> versions 2.7 and 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 is almost set to begin our transition to Python
> 3, dubbed "Project Pylennium".
>
>
>
> Project Pylennium is a new project I'm planning and working on that
> should make it easier for NV Access, code contributors, add-on
> writers, users and many others to experience smooth transition to
> Python 3. The overall goal of this project is to prepare NVDA's source
> code so it can run on both Python
> 2
> and 3 in most cases until developers are ready to move on. This
> project also seeks to uncover possible compatibility issues for NVDA
> community when the 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
> 7105 as a roadmap) can be found on my copy of NVDA source code at:
>
> https://github.com/josephsl/nvda
>
> 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
> the Six module, which adds compatibility layer functions for both
> Python 2 and 3.
> 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
> names and so on.
> 4. Migrate most code to Python 3 syntax.
> 5. Frequent and regular testing to make sure regressions are not
> introduced.
>
>
>
> 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 log handler module.
>
>
>
> Benefits:
>
>
>
> 1. Allows NV Access to look at porting data and make informed
> decisions.
> 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.
>
>
>
> Disadvantages:
>
>
>
> 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
> recently.
> 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
> the add-ons community don't know who wrote some of them and lost
> contact with 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 tests, 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.
>
>
>
> Guidelines:
>
>
>
> 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,
> send a 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
> port my own add-ons to Python 3 (one of them is done; throughout this
> year, I'll 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 versions.
>
>
>
> Thank you.
>
> Sincerely,
>
> Joseph
>
>

----------------------------------------------------------------------------
--
Check out the vibrant tech community on one of the world's most engaging
tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Akash Kakkar-2
Nice! :-)

On 7/22/17, Joseph Lee <[hidden email]> wrote:

> Hi,
> Pylennium = Python + millennium.
> Cheers,
> Joseph
>
> -----Original Message-----
> From: Akash Kakkar [mailto:[hidden email]]
> Sent: Saturday, July 22, 2017 12:17 AM
> To: NVDA screen reader development <[hidden email]>
> Subject: Re: [Nvda-devel] Announcing Project Pylennium: porting NVDA code
> base, dependencies, and developer attitudes to Python 3.6.x
>
> Hi Joseph, very nice initiative indeed. just for curiousity,  what does
> Pylennium mean?
>
> On 7/22/17, Joseph Lee <[hidden email]> wrote:
>> 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
>> some contributors have been brainstorming best ways to accomplish
>> this, and NV Access, contributors, some add-on writers, users, and
>> NVDA observers agree that it is important that we look into eventually
> porting NVDA to Python 3.
>>
>>
>>
>> Until recently, the possibility of moving NVDA to Python 3 seemed to
>> be only a dream. However, a major hurdle was overcome earlier this
>> year when wxPython 4 alpha was released, promising support for Python
>> versions 2.7 and 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 is almost set to begin our transition to Python
>> 3, dubbed "Project Pylennium".
>>
>>
>>
>> Project Pylennium is a new project I'm planning and working on that
>> should make it easier for NV Access, code contributors, add-on
>> writers, users and many others to experience smooth transition to
>> Python 3. The overall goal of this project is to prepare NVDA's source
>> code so it can run on both Python
>> 2
>> and 3 in most cases until developers are ready to move on. This
>> project also seeks to uncover possible compatibility issues for NVDA
>> community when the 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
>> 7105 as a roadmap) can be found on my copy of NVDA source code at:
>>
>> https://github.com/josephsl/nvda
>>
>> 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
>> the Six module, which adds compatibility layer functions for both
>> Python 2 and 3.
>> 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
>> names and so on.
>> 4. Migrate most code to Python 3 syntax.
>> 5. Frequent and regular testing to make sure regressions are not
>> introduced.
>>
>>
>>
>> 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 log handler module.
>>
>>
>>
>> Benefits:
>>
>>
>>
>> 1. Allows NV Access to look at porting data and make informed
>> decisions.
>> 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.
>>
>>
>>
>> Disadvantages:
>>
>>
>>
>> 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
>> recently.
>> 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
>> the add-ons community don't know who wrote some of them and lost
>> contact with 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 tests, 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.
>>
>>
>>
>> Guidelines:
>>
>>
>>
>> 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,
>> send a 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
>> port my own add-ons to Python 3 (one of them is done; throughout this
>> year, I'll 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 versions.
>>
>>
>>
>> Thank you.
>>
>> Sincerely,
>>
>> Joseph
>>
>>
>
> ----------------------------------------------------------------------------
> --
> Check out the vibrant tech community on one of the world's most engaging
> tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Nvda-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/nvda-devel
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Nvda-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/nvda-devel
>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Development mailing list
In reply to this post by Joseph Lee
I thought it was haemorrhoids for 1000 years!

OK somebody had to say that.
 Brian
[hidden email]
Sent via blueyonder.
Please address personal email to:-
[hidden email], putting 'Brian Gaff'
in the display name field.
----- Original Message -----
From: "Joseph Lee" <[hidden email]>
To: "'NVDA screen reader development'" <[hidden email]>
Sent: Saturday, July 22, 2017 8:26 AM
Subject: Re: [Nvda-devel] Announcing Project Pylennium: porting NVDA code
base, dependencies, and developer attitudes to Python 3.6.x


> Hi,
> Pylennium = Python + millennium.
> Cheers,
> Joseph
>
> -----Original Message-----
> From: Akash Kakkar [mailto:[hidden email]]
> Sent: Saturday, July 22, 2017 12:17 AM
> To: NVDA screen reader development <[hidden email]>
> Subject: Re: [Nvda-devel] Announcing Project Pylennium: porting NVDA code
> base, dependencies, and developer attitudes to Python 3.6.x
>
> Hi Joseph, very nice initiative indeed. just for curiousity,  what does
> Pylennium mean?
>
> On 7/22/17, Joseph Lee <[hidden email]> wrote:
>> 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
>> some contributors have been brainstorming best ways to accomplish
>> this, and NV Access, contributors, some add-on writers, users, and
>> NVDA observers agree that it is important that we look into eventually
> porting NVDA to Python 3.
>>
>>
>>
>> Until recently, the possibility of moving NVDA to Python 3 seemed to
>> be only a dream. However, a major hurdle was overcome earlier this
>> year when wxPython 4 alpha was released, promising support for Python
>> versions 2.7 and 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 is almost set to begin our transition to Python
>> 3, dubbed "Project Pylennium".
>>
>>
>>
>> Project Pylennium is a new project I'm planning and working on that
>> should make it easier for NV Access, code contributors, add-on
>> writers, users and many others to experience smooth transition to
>> Python 3. The overall goal of this project is to prepare NVDA's source
>> code so it can run on both Python
>> 2
>> and 3 in most cases until developers are ready to move on. This
>> project also seeks to uncover possible compatibility issues for NVDA
>> community when the 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
>> 7105 as a roadmap) can be found on my copy of NVDA source code at:
>>
>> https://github.com/josephsl/nvda
>>
>> 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
>> the Six module, which adds compatibility layer functions for both
>> Python 2 and 3.
>> 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
>> names and so on.
>> 4. Migrate most code to Python 3 syntax.
>> 5. Frequent and regular testing to make sure regressions are not
>> introduced.
>>
>>
>>
>> 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 log handler module.
>>
>>
>>
>> Benefits:
>>
>>
>>
>> 1. Allows NV Access to look at porting data and make informed
>> decisions.
>> 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.
>>
>>
>>
>> Disadvantages:
>>
>>
>>
>> 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
>> recently.
>> 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
>> the add-ons community don't know who wrote some of them and lost
>> contact with 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 tests, 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.
>>
>>
>>
>> Guidelines:
>>
>>
>>
>> 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,
>> send a 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
>> port my own add-ons to Python 3 (one of them is done; throughout this
>> year, I'll 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 versions.
>>
>>
>>
>> Thank you.
>>
>> Sincerely,
>>
>> Joseph
>>
>>
>
> ----------------------------------------------------------------------------
> --
> Check out the vibrant tech community on one of the world's most engaging
> tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Nvda-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/nvda-devel
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Nvda-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/nvda-devel 


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

James Scholes
In reply to this post by Joseph Lee
Joseph Lee wrote:
>  1. Imports: a compatibility layer is in place to import Python 2 or 3
>     version of winreg, pickle, io.StringIO and what not.

try:
        import winreg
except:
        import _winreg as winreg

A small matter, but there's very rarely a need for such a far-reaching
except statement.  Catching ImportError is more appropriately explicit.
--
James Scholes
http://twitter.com/JamesScholes

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Joseph Lee
Hi,
Right, as I didn't know which exceptions to catch at that time. I'll
incorporate your suggestions once I find out further standard lib changes
such as urlib.* series and what not.
Cheers,
Joseph

-----Original Message-----
From: James Scholes [mailto:[hidden email]]
Sent: Saturday, July 22, 2017 3:14 AM
To: [hidden email]
Subject: Re: [Nvda-devel] Announcing Project Pylennium: porting NVDA code
base, dependencies, and developer attitudes to Python 3.6.x

Joseph Lee wrote:
>  1. Imports: a compatibility layer is in place to import Python 2 or 3
>     version of winreg, pickle, io.StringIO and what not.

try:
        import winreg
except:
        import _winreg as winreg

A small matter, but there's very rarely a need for such a far-reaching
except statement.  Catching ImportError is more appropriately explicit.
--
James Scholes
http://twitter.com/JamesScholes

----------------------------------------------------------------------------
--
Check out the vibrant tech community on one of the world's most engaging
tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Loading...