PEP 8016 and the future of Python govenance
อย่างที่ทุกคนรู้นะครับว่า Guido ได้ถอดตัวออกจากการเป็น BDFL Role ที่เป็นมาอย่างยาวนานในช่วงกลางปีที่ผ่านมา แล้วการออกนั้นถึงแม้จะไม่ได้ effect กับ user อย่างเราๆ ท่านๆ แต่มีผลมากกับ Core developer ที่คอยดูแล CPython กับ Python Interpreter อยู่ครับ
ด้วยเหตุนี้เองประมาณเดือนสิงหาคมที่ผ่านมาทาง Core Dev หลายๆ คนจึงช่วยๆ กันร่างมาตรฐาน PEP 8001 — Python Governance Voting process ขึ้นมาเป็นอันดับแรกครับ ซึ่งจะพูดถึงวิธีการ vote มาตรฐาน Governance ก่อน โดยจะเปิดให้ Core dev 94 คนเป็นคน vote เพื่อเลือกมาตรฐาน Governance model สำหรับอนาคตต่อไป ในระหว่างนั้นก็ได้มี Core dev หลายๆ คนเสนอมาตรฐานหลายๆ มาตรฐานขึ้นมาหลายๆ ตัวครับ
จนกระทั่งเดือนธันวาคมระหว่างวันที่ 1–16 จะเป็นช่วงเวลาที่คณะกรรมการการเลือกตั้งเปิดให้โหวตมาตรฐานแต่ละตัวที่มีคนเสนอมา จากที่ติดตามใน twitter นี่บอกได้เลยครับว่า หลายๆ Core dev รอกันจนวันสุดท้ายถึงตัดสินใจ และปิดโหวตในวันที่ 17 ที่ผ่านมานี่เองครับและมาตรฐานที่ได้รับเลือกคือ PEP8016 — The Steering Council Model ครับและเราจะไปดูรายละเอียดของมาตรฐานตัวนี้กันใน blog นี้ครับ
PEP 8016 — The Steering Council Model
หลักการคร่าวๆ ของ PEP8016 คือถึงแม้ Steering council จะมีอำนาจที่กว้างขวางมาก แต่ก็สนับสนุนให้ใช้อำนาจให้น้อยที่สุดเท่าที่จะเป็นไปได้ และแทนที่จะใช้อำนาจนั้นในการตัดสินใจแทน community ให้เลือกที่จะสร้าง process ที่จะกำหนดมาตรฐานต่อๆ ไป นอกจากนั้นแล้วยังส่งเสริมให้แบ่งการตัดสินใจในมาตรฐานเรื่องใหญ่ๆ ให้เป็นเรื่องเล็กๆ ที่จะสามารถตัดสินใจได้แยกจากกันได้
โดยหัวใจหลักของ The Steering Council Model แบ่งออกเป็น 4 ข้อคือ
* Be boring
* Be simple
* Be comprehensive
* Be flexible and light-weight
ทีนี้คำถามต่อไปก็คือ ใครจะมาเป็น The Steering council นี้ ใน PEP8016 ระบุไว้ว่า ต้องมี 5 committee ครับ โดยมีหน้าที่ดังนี้ครับ
* รักษาคุณภาพและความเสถียรของ Python language กับ Python interpreter
* ส่งเสริมให้การ contribute เข้าถึงได้ง่ายและยั่งยืน
* รักษาความสัมพันธ์ระหว่าง core team กับ PSF
* วางมาตรฐานการตัดสินใจของ PEP ในอนาคต
* หาความเห็นพ้องร่วมกันระหว่าง contributer กับ core team
* เป็น Court of final appeal ในกรณีที่การตัดสินใจด้วยวิธีอื่นๆ ไม่เวิร์คแล้ว
จุดที่น่าสนใจอีกจุดหนึ่งที่ผมเห็นในมาตรฐานนี้คือการเลือกตัว Coucil ครับ ซึ่ง ใครสามารถเสนอตัวเองขึ้นมาหรือ core dev เป็นคนเสนอขึ้นมาครับ นอกจากนั้นแล้วพูดถึงเรื่อง Conflict of interest ซึ่งเป็นการป้องกันบริษัทใดๆ nominate การตัดสินใจของ Council ครับโดย สามารถให้สมาชิกของ Council มาจากบริษัทเดียวกันได้มากที่สุด 2 คน ถ้าตอนเลือก council ได้ top 5 แล้ว 3 คนมาจากบริษัทเดียวกันคนที่อยู่อันดับ 3 จากบริษัทเดียวกันจะถูกปัดตกแล้วอันดับ 6 จะถูกเลื่อนขึ้นมาครับ
ตัวมาตรฐาน PEP 8016 ยังไม่หมดแค่นี้นะครับ ยังมีการพูดถึงการให้ออกจาก council ในกรณีต่างๆ รวมถึงบทบาทของ Core team ด้วย ใครสนใจศึกษาเพิ่มเติมไปตามได้ตามลิ้งค์ข้างล่างเลยครับ
Reference
https://discuss.python.org/t/python-governance-vote-december-2018-results/546
https://www.python.org/dev/peps/pep-8016/