# Vote to promote Ken Jin (Fidget-Spinner)

**URL:** <https://discuss.python.org/t/vote-to-promote-ken-jin-fidget-spinner/10146>\
**Category:** Committers\
**Tags:** promotion\
**Created:** [August 13, 2021, 11:56pm UTC](https://discuss.python.org/t/vote-to-promote-ken-jin-fidget-spinner/10146 "2021-08-13T23:56:35Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![pablogsal](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/pablogsal/32/32246_2.png) [@pablogsal](https://discuss.python.org/u/pablogsal)\
**Post date:** [August 13, 2021, 11:56pm UTC](https://discuss.python.org/t/vote-to-promote-ken-jin-fidget-spinner/10146/1 "2021-08-13T23:56:35Z")

</div>

Guido and I want to propose promoting Ken Jin as a core developer.

_Poll ([view on site](https://discuss.python.org/t/vote-to-promote-ken-jin-fidget-spinner/10146/1))_

I have been mentoring Ken Jin for a long time ([I previously gave him triage privileges time ago](https://mail.python.org/archives/list/python-committers@python.org/thread/5JQD4Q65TNG7CXXFBRWGRQ4YMY3ZTPAJ/)). Ken has been very active in the project, actively reviewing pull requests and fixing bugs (some of them notably complex) and he has been contributing both to code and documentation. He is a very enthusiastic and energetic person and during this time he has made great progress in learning the CPython workflow, CPython internals and how to keep things maintainable and backwards compatible. He also has actively participated in many important areas such as Python performance and typing (see below).

Ken has been working with Guido for quite some time as well, specially in the typing module and in typing related PEPs. During this time he has also prove to be quite proficient in writing clear documentation and in doing useful reviews of it.

# Statistics

- Merged PRs: [Search · is:pr is:merged author:Fidget-Spinner archived:false org:python · GitHub](https://github.com/search?q=is%3Apr+is%3Amerged+author%3AFidget-Spinner+archived%3Afalse+org%3Apython)
- Reviewed PRs: [Search · reviewed-by:Fidget-Spinner -author:Fidget-Spinner archived:false org:python · GitHub](https://github.com/search?q=reviewed-by%3AFidget-Spinner+-author%3AFidget-Spinner+archived%3Afalse+org%3Apython)
- Involvement in issues: [Search · involves:Fidget-Spinner archived:false org:python · GitHub](https://github.com/search?q=involves%3AFidget-Spinner+archived%3Afalse+org%3Apython&type=Issues)
- [BPO bugs noised](https://bugs.python.org/issue?%40search_text=&ignore=file%3Acontent&title=&%40columns=title&id=&%40columns=id&stage=&creation=&creator=&activity=&%40columns=activity&%40sort=activity&actor=&nosy=kj&type=&components=&versions=&dependencies=&assignee=&keywords=&priority=&status=&%40columns=status&resolution=&nosy_count=&message_count=&%40group=&%40pagesize=50&%40startwith=0&%40sortdir=on&%40queryname=&%40old-queryname=&%40action=search)

* * *

# Selected contribution highlights

## Docs

- Co-authored the Python Language Reference for pattern matching: [https://github.com/python/cpython/pull/24664](https://github.com/python/cpython/pull/24664)
- Updated compiler docs in the devguide: [https://github.com/python/devguide/pull/706](https://github.com/python/devguide/pull/706)
- Authored documentation for typing PEPs:
  - PEP 585 (Type Hinting Generics In Standard Collections) [https://github.com/python/cpython/pull/22615](https://github.com/python/cpython/pull/22615)

  - [https://github.com/python/cpython/pull/26724](https://github.com/python/cpython/pull/26724) (C API)

  - PEP 604 (Allow writing union types as X | Y) [https://github.com/python/cpython/pull/22517](https://github.com/python/cpython/pull/22517)

  - PEP 612 (Parameter Specification Variables) [https://github.com/python/cpython/pull/23702](https://github.com/python/cpython/pull/23702)

  - PEP 647 (User-Defined Type Guards) [https://github.com/python/cpython/pull/25282](https://github.com/python/cpython/pull/25282)

## Code

- Initial implementation of PEP 612 in C and Python, then re-wrote it again only in Python.

- Downstreamed implementation to typing\_extensions later: [bpo-41559: Implement PEP 612 - Add ParamSpec and Concatenate to typing by Fidget-Spinner · Pull Request #23702 · python/cpython · GitHub](https://github.com/python/cpython/pull/23702)

- [https://github.com/python/cpython/pull/25449](https://github.com/python/cpython/pull/25449)

- [https://github.com/python/typing/pull/774](https://github.com/python/typing/pull/774)

- Added CALL\_METHOD\_KW opcode, keyword counterpart to CALL\_METHOD.  
[bpo-26110: Add ``CALL\_METHOD\_KW`` opcode to speedup method calls with keywords by Fidget-Spinner · Pull Request #26014 · python/cpython · GitHub](https://github.com/python/cpython/pull/26014)

- Fixed consistency issues between typing.Callable and collections.abc.Callable  
[https://github.com/python/cpython/pull/23060](https://github.com/python/cpython/pull/23060)

- Fixed various bugs in typing.

## Faster CPython project

- Researched and implemented CALL\_FUNCTION opcode specialization via PEP 659 (Specializing Adaptive Interpreter) with lots of help from Mark. PR unmerged, we’re still trying to assess whether it’s worth the maintenance cost, and we’re waiting for other optimizations in CPython.  
[https://github.com/python/cpython/pull/26934](https://github.com/python/cpython/pull/26934)
- Researched viability of specializing FOR\_ITER opcode. Temporarily dropped because common cases slowed down, and 10% faster for long loops doesn’t justify the complexity.  
[Consider FOR\_ITER family for specialization? · Issue #67 · faster-cpython/ideas · GitHub](https://github.com/faster-cpython/ideas/issues/67)
- Researched viability of specializing LOAD\_METHOD opcode. Still a WIP, but more promising than the other two.  
[Specialize LOAD\_METHOD · Issue #81 · faster-cpython/ideas · GitHub](https://github.com/faster-cpython/ideas/issues/81)

# Post-promotion mentoring

As it was done in previous promotions we will continue to mentor him for one month after his promotion (if it’s accepted) to help him to deal with his new responsibilities, and we plan to require him to ask us before merging anything until he will be used to the process.

# Vote process

As a reminder from PEP 13 regarding voting rules:

> It is granted by receiving at least two-thirds positive votes in a core team vote that is open for one week and with no veto by the steering council.

---

<div class="post-metadata">

**Author:** ![guido](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/guido/32/21_2.png) [@guido](https://discuss.python.org/u/guido)\
**Post date:** [August 14, 2021, 12:53am UTC](https://discuss.python.org/t/vote-to-promote-ken-jin-fidget-spinner/10146/2 "2021-08-14T00:53:46Z")

</div>

I have been mentoring Ken Jin for some time. He started out showing interest in improving documentation for the typing module, but quickly he started writing code for it too, fixing bugs, and then branched out to other topics.

In fact, I had wanted to promote him around the time of the Language Summit this spring, but Ken Jim himself told me he did not feel ready then. I’m glad he’s changed his mind now. 🙂

More recently I have actually given him considerable freedom and I have asked and valued his opinion on various topics where I felt I didn’t have time to dive in deeply myself.

Ken is clearly here to stay.

---

<div class="post-metadata">

**Author:** ![vstinner](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/vstinner/32/15130_2.png) [@vstinner](https://discuss.python.org/u/vstinner)\
**Post date:** [August 16, 2021, 3:43pm UTC](https://discuss.python.org/t/vote-to-promote-ken-jin-fidget-spinner/10146/3 "2021-08-16T15:43:19Z")

</div>

**+1 for me!**

Aaaaah **Fidget-Spinner** , I know him! I saw his name often on GitHub pull requests. I’m less used to his real name **Ken Jin** 🙂 His comments are always relevant and useful. I have a good experience of working with him.

---

<div class="post-metadata">

**Author:** ![Senthil](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/senthil/32/18300_2.png) [@Senthil](https://discuss.python.org/u/Senthil)\
**Post date:** [August 17, 2021, 12:33pm UTC](https://discuss.python.org/t/vote-to-promote-ken-jin-fidget-spinner/10146/4 "2021-08-17T12:33:38Z")

</div>

I have with worked Fidget-Spinner (aka Ken Jin) over multiple bug reports. Ken brings amazing communication skills to the table and is very quick in addressing feedback.

Thank you for your contributions, Ken.

---

<div class="post-metadata">

**Author:** ![isidentical](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/isidentical/32/4201_2.png) [@isidentical](https://discuss.python.org/u/isidentical)\
**Post date:** [August 17, 2021, 1:10pm UTC](https://discuss.python.org/t/vote-to-promote-ken-jin-fidget-spinner/10146/5 "2021-08-17T13:10:47Z")

</div>

I’ve had chance to interact with them on multiple topics (including different parts of the project like the compiler, and some windows related issues), and the experience of working with them was really nice. +1 from me as well!

---

<div class="post-metadata">

**Author:** ![pablogsal](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/pablogsal/32/32246_2.png) [@pablogsal](https://discuss.python.org/u/pablogsal)\
**Post date:** [August 22, 2021, 10:20pm UTC](https://discuss.python.org/t/vote-to-promote-ken-jin-fidget-spinner/10146/6 "2021-08-22T22:20:49Z")

</div>

The poll is now closed with unanimous approval from 31 voters, and I have now emailed the Steering Council to ask for their approval.

Thank you to everyone who voted!

---

<div class="post-metadata">

**Author:** ![kj0](https://avatars.discourse-cdn.com/v4/letter/k/db5fbb/32.png) [@kj0](https://discuss.python.org/u/kj0)\
**Post date:** [August 27, 2021, 4:31pm UTC](https://discuss.python.org/t/vote-to-promote-ken-jin-fidget-spinner/10146/7 "2021-08-27T16:31:38Z")

</div>

I’m extremely grateful to the community around Python - a community I feel is creative, welcoming and funny (which other language has an entire page for jokes[1]? 🙂 ) I’m happy to have the opportunity to contribute more to CPython.

I couldn’t have asked for better mentors. Guido and Pablo were extremely patient and gave me a lot of freedom to explore. I’m thankful for their guidance and I hope to continue in their spirit for future contributors to Python.

Last but not least, the numerous core devs I’ve interacted with have always taught me something new.  
I still have much left to learn, and I’m looking forward to learning much more from everyone!

Thank you!

-KJ

[1] [Python Humor | Python.org](https://www.python.org/doc/humor/)

---

<div class="post-metadata">

**Author:** ![aeros](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/aeros/32/4140_2.png) [@aeros](https://discuss.python.org/u/aeros)\
**Post date:** [August 29, 2021, 9:44pm UTC](https://discuss.python.org/t/vote-to-promote-ken-jin-fidget-spinner/10146/8 "2021-08-29T21:44:40Z")

</div>

> [@kj0](#):
>
> which other language has an entire page for jokes[1]?

Somehow I went all this time without knowing this joke page existed, haha. Thanks for sharing and welcome to the core team! 🙂
