ข้อเสนอการรีวิวร่วมกันเพื่อ Clippy ที่แข็งแรงยิ่งขึ้น
(blog.rust-lang.org)- Clippy ซึ่งเป็น linter ของ Rust กำลังเผชิญคอขวดในการรีวิว pull request ในช่วงหลายเดือนที่ผ่านมา จึงได้นำขั้นตอนการรีวิวร่วมกันมาใช้ โดยให้ผู้มีส่วนร่วมช่วยตรวจดูการเปลี่ยนแปลงของกันและกันก่อน
- เนื่องจากขณะนี้ไม่มี สมาชิกทีม Clippy ที่ได้รับเงินสนับสนุน สำหรับงานดูแลรักษา ภาระการรีวิวและการจัดการจึงตกอยู่กับเวลาส่วนตัวของผู้ดูแลหลัก และเพิ่มความเสี่ยงต่อภาวะหมดไฟ
- ในขั้นตอนใหม่นี้ เมื่อผู้มีส่วนร่วมเปิด pull request, @rustbot จะชี้แนะให้ไปดู pull request อื่นที่ยังไม่ได้รับการรีวิวก่อนเป็นลำดับแรก
- ผู้ที่รีวิว pull request ของผู้มีส่วนร่วมคนอื่นแล้วจะถูกเพิ่มเข้า secret list และหลังจากนั้น pull request ของตนเองจะได้รับลำดับความสำคัญจากผู้รีวิวในทีม
- ทีม Clippy คาดหวังว่า Rust Foundation Maintainers Fund และการมีส่วนร่วมจากชุมชนจะช่วยลดภาระของผู้ดูแลและปรับปรุงสภาพของโปรเจกต์ได้
คอขวดด้านการรีวิวที่ Clippy กำลังเผชิญ
- Clippy เป็นโปรเจกต์ linter ของ Rust ที่มีผู้มีส่วนร่วมจำนวนมากส่งฟีเจอร์และการแก้บั๊กเข้ามาผ่าน pull request
- ในช่วงหลายเดือนที่ผ่านมา ความสามารถในการรีวิวมีไม่เพียงพอ ทำให้เกิดคอขวดในการจัดการ pull request
- ต่างจากบางทีมของ Rust อื่น ๆ ตอนนี้ทีม Clippy ยังไม่มีใครที่ได้รับเงินสนับสนุนสำหรับงานของ Clippy
- ไม่มีใครได้รับการสนับสนุนแม้แต่ในระดับพาร์ตไทม์
- ภาระการดูแลรักษาจึงอยู่บนเวลาส่วนตัวของผู้ดูแลหลัก
- โครงสร้างแบบนี้อาจนำไปสู่ภาวะหมดไฟได้
- ทีมคาดหวังว่า Rust Foundation Maintainers Fund ที่เพิ่งจัดตั้งขึ้นจะช่วยให้ผู้ดูแล Clippy เข้าถึงเงินสนับสนุนได้
- ผู้ที่ต้องการช่วยสนับสนุนสามารถบริจาคได้ที่ Rust Foundation Sponsors
ขั้นตอนที่ผู้มีส่วนร่วมช่วยรีวิวให้กันและกัน
- เป้าหมายของขั้นตอนใหม่นี้คือให้ผู้มีส่วนร่วมช่วยเหลือกัน เพื่อให้ pull request ได้รับการรีวิวและถูกรวมเข้าโปรเจกต์ได้เร็วขึ้น
- เมื่อผู้มีส่วนร่วมเปิด pull request กระบวนการจะเดินไปในทิศทางที่ให้ช่วยดู pull request ของผู้มีส่วนร่วมคนอื่นก่อน
- ผู้มีส่วนร่วมแต่ละคนจะรีวิวอย่างน้อยหนึ่ง pull request
- เป็นโครงสร้างที่ช่วยไม่ให้ contribution ของผู้อื่นถูกปล่อยทิ้งไว้นานเกินไป
- @rustbot จะชี้แนะผู้เปิด pull request ใหม่ให้ไปดู pull request อื่น
- หากเป็นไปได้ เป้าหมายลำดับแรกคือ pull request ที่ยังไม่มีรีวิว
- ผู้มีส่วนร่วมที่รีวิวเสร็จแล้วจะถูกเพิ่มเข้า secret list พิเศษ
- หลังจากนั้น pull request ของตนเองจะได้รับลำดับความสำคัญจากผู้รีวิวในทีม
- แนวทางนี้ได้รับแรงบันดาลใจจากระบบ Open Code Review ของโปรเจกต์ Bevy
- ก่อนหน้านี้ Clippy ก็เคยดำเนินการอัปเดตเพื่อปรับปรุงสุขภาพของโปรเจกต์มาแล้ว
- Feature Freeze ในปี 2025 ประสบความสำเร็จ
- ระหว่างกระบวนการนั้น ทีมได้รับทั้งความรู้ ความไว้วางใจ และความมั่นใจว่าชุมชน Rust ใส่ใจทั้ง Clippy และวิธีการทำงานที่ถูกต้อง
- ทีม Clippy มองว่าด้วยความช่วยเหลือจากชุมชน Clippy จะสามารถแข็งแกร่งและมีสุขภาพที่ดีขึ้นได้
1 ความคิดเห็น
ความคิดเห็นบน Lobste.rs
พูดตรง ๆ นะ สิ่งที่น่าสนใจกว่าประกาศครั้งนี้คือกระบวนการรีวิวแบบเปิดของ Bevy ที่ลิงก์ไว้ในบทความ เป็นบทความที่ เคยถูกนำมาลงที่นี่แล้ว แต่ไม่ค่อยมีการถกกันมากนัก ผมมองว่าเป็นแนวทางที่รอบคอบและฉลาดมาก
ดีใจที่มันทำงานได้ดี และก็ไม่แปลกใจด้วย หวังว่า Clippy จะได้ผลลัพธ์คล้าย ๆ กัน
ระบบนี้ส่งเสริม PR ขนาดเล็กและค่อยเป็นค่อยไป เพราะใคร ๆ ก็รีวิวได้ง่ายขึ้นมาก แม้แต่ผู้มีส่วนร่วมครั้งแรก PR ขนาดใหญ่มักใช้เวลานานกว่ามากกว่าจะ merge ได้ และผมคิดว่าควรเป็นแบบนั้น เพราะรีวิวยากกว่าและต้องมีความเข้าใจโค้ดในระดับหนึ่ง โดยทั่วไป PR ที่มีฟีเจอร์ใหญ่ ๆ จำนวนมากมักจะมี maintainer หรือผู้เชี่ยวชาญในด้านนั้นช่วยผลักดันจนเสร็จ
ถ้าชอบบทความนั้น คุณอาจชอบบทความเกี่ยวกับการดูแล Bevy จากผู้เขียนคนเดียวกันอย่าง Triage-by-controversy and community review และ The Tyranny of Nits ด้วย
เหตุผลหนึ่งที่ผมไม่ค่อยช่วยรีวิว PR ในโปรเจกต์โอเพนซอร์สที่ผมมีส่วนร่วมอยู่ คือผมแทบไม่มีความเชี่ยวชาญ เลยไม่มั่นใจว่าตัวเองมีคุณสมบัติพอจะทำหรือเปล่า
กระบวนการของ Clippy และ Bevy ช่วยให้ reviewer ที่มีประสบการณ์น้อยเข้าร่วมได้อย่างชอบธรรม ซึ่งผมว่าเป็นวิธีที่ค่อนข้างดี
ดูแค่ชื่อแล้วค่อนข้างต่างจาก สิ่งที่คาดไว้
ดูเหมือนจะถูกเอาไปใช้ในทางที่ผิดได้ง่าย ถ้าสร้างบัญชีขึ้นมาหลายบัญชีแล้วส่ง PR ด้วยหลายบัญชี
ไม่แน่ใจเหมือนกันว่าจะได้อะไรจากการทำแบบนั้น แต่การได้เข้าไปอยู่ในรายชื่อลับของ contributor เจ๋ง ๆ ก็อาจเป็นแรงจูงใจได้อยู่
มันทำงานได้ดีที่สุดเมื่อ contributor ทำงานในโปรเจกต์เดียวกัน แต่ผมก็เคยเห็นการทำแบบนี้แม้กับงานที่ไม่เกี่ยวข้องกัน หวังว่า Clippy จะสร้างธรรมเนียมคล้าย ๆ กันได้ การแลกรีวิวช่วยให้งาน merge ได้เร็วขึ้นและบ่มเพาะชุมชนที่ร่วมมือกันมากขึ้น
อย่างไรก็ตาม ย่อหน้าที่แนะนำกลไกการรีวิวในบล็อกโพสต์นี้ยังปรับปรุงได้ ตอนนี้อ่านแล้วเหมือนสื่อว่า “ถ้าคุณกวาดตาดู PR อื่นแบบผ่าน ๆ เราจะ merge PR ของคุณให้เร็วขึ้น” ซึ่งผมคิดว่าไม่น่าใช่ข้อความที่ต้องการสื่อ ควรเน้นไปที่การทำงานร่วมกับ collaborator คนอื่นแทน หากชวนให้ผู้คนไปที่ช่อง Zulip ของ Clippy เพื่อเสนอแลกรีวิว และให้ทำงานร่วมกันในโปรเจกต์เดียวกัน ก็จะสร้างชุมชนที่สุขภาพดีกว่าโดยไม่กระตุ้นให้ใช้ระบบในทางที่ผิด
ทั้งสองกรณีดูเหมือนจะหลีกเลี่ยงได้ค่อนข้างง่ายด้วยวิธีนี้: จับคู่รีวิวแบบสุ่มเพื่อไม่ให้รีวิวงานของคนเดิมซ้ำหลายครั้ง และนับเฉพาะรีวิวของ PR ที่สุดท้ายถูก merge แล้วเท่านั้น
ผมดูแล https://www.CodeTriage.com ซึ่งเป็นบริการที่ช่วยรีวิว PR และ issue ของคนอื่น