GitHub เปิดตัวฟีเจอร์จำกัดจำนวน PR ที่เปิดพร้อมกันโดยผู้ใช้ที่ไม่มีสิทธิ์เขียน เมื่อวันที่ 17 มิถุนายน ฟีเจอร์นี้เกิดขึ้นหลังมีเสียงว่าผู้ดูแลต้องรับมือกับ PR คุณภาพต่ำจำนวนมากที่ AI สร้างขึ้น และยังเป็นสิ่งที่มีการร้องขอมาตั้งแต่ปี 2016 ด้วย
ผมจึงลองวัดดูว่าในคิวของ repository จริง ฟีเจอร์นี้กรองออกได้มากแค่ไหน โดยตัดบอทออก นับเฉพาะ PR ที่เปิดโดยผู้เขียนที่ไม่มีสิทธิ์เขียน แล้วคำนวณว่าหากตั้งเพดานไว้ที่ 3 จะมี PR กี่รายการที่ถูกเลื่อนออกไป
- huggingface/transformers — PR ที่เปิดอยู่ 55 รายการ / ผู้เขียน 49 คน / PR ที่เพดาน 3 จะเลื่อนออกไป 1 รายการ
- typescript-eslint — 28 รายการ / 24 คน / 1 รายการ
- DIYgod/RSSHub — 26 รายการ / 23 คน / 1 รายการ
- django/django — 79 รายการ / 59 คน / 7 รายการ
- caddyserver/caddy — 58 รายการ / 43 คน / 7 รายการ
- coollabsio/coolify — 86 รายการ / 68 คน / 11 รายการ
อยู่ที่ 2–13%
เหตุผลคือรูปทรงของคิว เช่น transformers มี PR 55 รายการจากผู้เขียน 49 คน ส่วน coolify มี 86 รายการจาก 68 คน นี่ไม่ใช่รูปแบบสแปมที่คนคนเดียวเปิดสามสิบรายการ แต่เป็นคนสามสิบคนเปิดคนละหนึ่งรายการ เพดานนี้ถูกออกแบบมาเพื่อจัดการแบบแรก แต่คิวจริงเป็นแบบหลัง
ไม่ได้หมายความว่าฟีเจอร์นี้ไม่มีประโยชน์ มี repository ที่บัญชีเดียวถล่มคิวอยู่จริง และก่อนหน้านี้ repository เหล่านั้นไม่มีเครื่องมือป้องกัน เพียงแต่ว่าปริมาณที่ไปถึง reviewer แทบไม่เปลี่ยน และงานในการตัดสินใจว่าจะอ่านอะไรก่อนยังคงอยู่
อีกเรื่องที่ลองวัดร่วมกันคือ ผมดู repository 167 แห่งที่ติดตั้ง action สำหรับปิด PR คุณภาพต่ำโดยอัตโนมัติ พบว่าใน 30 แห่งที่คิวยังมีความเคลื่อนไหว ทั้งหมดตั้งค่า pull_request_creation_policy เป็น all นั่นเป็นค่าเริ่มต้น จึงแปลว่า “ไม่มีใครเปลี่ยน” ก็ได้ แต่ก็แปลได้เช่นกันว่ากลุ่มที่มีแรงจูงใจสูงสุดในการจำกัด กลับไม่ได้ปิดประตู เพียงแค่ติดตัวกรองไว้
และใน 167 แห่งนั้น มี 126 แห่ง (75%) ที่มี PR เปิดอยู่ต่ำกว่า 4 รายการ หมายความว่าไม่ควรอ่านประโยคว่า “มี N แห่งติดตั้งตัวกรอง slop” เป็น “มี N แห่งกำลังเจอน้ำท่วม” ผมเองก็เคยอ่านแบบนั้น ก่อนจะวัดใหม่แล้วแก้ความเข้าใจ
วิธีวัดและข้อจำกัดอยู่ในเอกสารที่ลิงก์ไว้ เพดาน 3 เป็นสมมติฐานของผมเอง (แต่ละ repository ตั้งค่าได้ต่างกัน) และนี่เป็นสแนปชอตของคิวที่เปิดอยู่ ดังนั้น PR ที่ถูกเพดานกันไว้จนไม่ได้เปิดตั้งแต่แรกจะไม่ปรากฏให้เห็น — ซึ่งก็เป็นหนึ่งในประเด็นหลักของฟีเจอร์นี้ด้วย หากมีรายการ PR สาธารณะ ใครก็ทำซ้ำได้
(เปิดเผย: การวัดนี้มาจาก PR triage checker ที่ผมสร้างขึ้น หมายความว่ามีผลประโยชน์เกี่ยวข้อง โปรดอ่านโดยคำนึงถึงจุดนี้ และตัวเลขสามารถทำซ้ำได้ตรงจากรายการ PR สาธารณะของแต่ละ repository)
ยังไม่มีความคิดเห็น