I’m mentoring Joannah Nanjekye for more or less one year. I followed closely her progress on learning the Python workflow and Python internals. From my point of view, she is now ready to be promoted as a core developer.
I open the vote for one week. A promotion requires at least two-thirds positive votes and no veto by the Steering Committee (see PEP 13 for details on the process).
- Promote Joannah Nanjekye
- Do not promote Joannah Nanjekye
(Vote config: single choice, results: always, don’t show who voted, close automatically at 2019-09-23T13:30:00Z)
EDIT: I had to delete the old poll (by adding “name=poll2” to the poll) to change “results: staff only” to “results: always” (the config was wrong). I couldn’t edit the old poll config 5 min after its creation. To the 4 persons who already voted: please vote again.
I prefer when votes (positive or negative) are commented. IMHO it helps others who are not sure to build up their opinion, and it can help the candidate to work of their weaknesses (nobody is perfect, especially me). You are not required to justify your vote. If you don’t want to comment your vote in public, you can contact me in private.
If Joannah is promoted, I propose to mentor her for one month to handle her new responsibilities.
Joannah Nanjekye is compiler researcher in the Python IBM lab at UNB (Canada) and an aeronautical engineer.
She started the PyLadies Kampala community which has now around 200 members!
She also authored the “Python 2 and 3 Compatibility: With Six and Python-Future
Libraries” book in 2017.
She wrote articles about the CPython development:
Joannah likes to work on low-level features like the os and socket module. She is not afraid of writing C code. For these reasons, it took her more time to become ready, since modifying low-level code requires to learn more things: reference counting, Python C API, check portability (Windows, macOS, Linux, FreeBSD); in addition to more regular expected skills: handle backward compatibility, document properly changes, etc.
I gave her the bug triage permission last February: python-committers: Joannah Nanjekye got the bug triage permission.
She is active on https://discuss.python.org/ For example, in the Core Workflow
She attended the CPython core dev sprint at London last week. Where she worked on the High level implementation of the subinterpreters module (i.e PEP 554): https://github.com/nanjekyejoannah/cpython/pull/1
Significant Joannah’s work in CPython
Most recent to least recent significant merged changes:
- bpo-28724: Add methods send_fds and recv_fds to the socket module (GH-12889)
- bpo-35943: Prevent PyImport_GetModule() from returning a
partially-initialized module (GH-15057)
- bpo-15088: Remove PyGen_NeedsFinalizing() (GH-15702)
- bpo-37878: Remove PyThreadState_DeleteCurrent() function (GH-15315)
- bpo-36833: Add tests for Datetime C API Macros (GH-14842)
- bpo-15542: Documentation incorrectly suggests init called after
direct new call (GH-15478)
- bpo-15913: Implement PyBuffer_SizeFromFormat() (GH-13873)
- bpo-37531: Fix regrtest timeout for subprocesses (GH-15072)
- bpo-36487: Make C-API docs clear about what the main interpreter
- bpo-22640: Add silent mode to py_compile.compile() (GH-12976)
- bpo-36475: Finalize PyEval_AcquireLock() and PyEval_AcquireThread()
- bpo-35537: Add setsid parameter to os.posix_spawn() and
- bpo-35674: Add os.posix_spawnp() (GH-11554)
- bpo-35537: subprocess uses os.posix_spawn in some cases (GH-11452)
Using posix_spawn() can make subprocess up to 60x faster! It’s a really cool
optimization which is already part of the incoming Python 3.8.0 final release.
Currently, posix_spawn() is only used on Linux and macOS under some conditions:
She added socket.send_fds() and socket.recv_fds() which will be part of Python
3.9. It was not easy to write code working on FreeBSD, Linux and macOS:
SCM_RIGHTS is a little bit platform dependant. It’s really nice to have such
simple helper functions to exchange file descriptors on UNIX/BSD platforms.
I was impressed that Joannah dares to modify PyEval_AcquireLock() and PyEval_AcquireThread() in ceval.c (bpo-36475). These are part of the most low-level GIL functions. She changed how threads handle Python finalization which is a very fragile part of Python, but now a little bit more reliable (thanks to this change).
All Joannah’s commits: https://github.com/python/cpython/commits?author=nanjekyejoannah
Joannah’s Planned future work on CPython:
- Implement PEP 554 for use in test suite. Until PEP 554 is accepted (or if it isn’t) we should add a PEP 554 implementation as
- Work on fixing subinterpreters’ related issues.
- Take a closer look at Garbage collection.