Linus Torvalds ปฏิเสธ Patches ของ RISC-V สำหรับ Linux 6.17 เรียกการส่งว่า "ขยะ"

ทีมบรรณาธิการ BigGo
Linus Torvalds ปฏิเสธ Patches ของ RISC-V สำหรับ Linux 6.17 เรียกการส่งว่า "ขยะ"

การพัฒนา kernel ของ Linux อีกครั้งหนึ่งได้เน้นย้ำถึงมาตรฐานที่เข้มงวดซึ่งควบคุมหนึ่งในโปรเจกต์โอเพนซอร์สที่สำคัญที่สุดของโลก ความขัดแย้งล่าสุดมีจุดศูนย์กลางอยู่ที่การส่งโค้ดที่ถูกปฏิเสธสำหรับการสนับสนุนสถาปัตยกรรม RISC-V ซึ่งแสดงให้เห็นว่าเวลา คุณภาพของโค้ด และการตัดสินใจเชิงสถาปัตยกรรมมาบรรจบกันในการพัฒนา kernel อย่างไร

การส่งล่าช้าก่อให้เกิดการตอบสนองอย่างรุนแรง

เหตุการณ์เริ่มต้นเมื่อ Palmer Dabbelt วิศวกรซอฟต์แวร์ที่ Meta (เดิมชื่อ Facebook) ส่งชุด patches ของ RISC-V สำหรับช่วง merge window ของ Linux 6.17 เวลาที่ส่งกลับกลายเป็นปัญหาเป็นพิเศษ เนื่องจาก Linus Torvalds เคยเตือนนักพัฒนาล่วงหน้าเกี่ยวกับตารางการเดินทางที่กำลังจะมาถึงเนื่องจากกิจกรรมครอบครัวทั่ว สหรัฐอเมริกา และ ฟินแลนด์ Torvalds ได้ขอให้ส่งเร็วอย่างชัดเจนและเตือนว่า pull requests ที่ส่งล่าช้าจะต้องเผชิญกับการตรวจสอบที่เข้มงวดมากขึ้นในช่วงเวลานี้

บริบทไทม์ไลน์:

  • ความขัดแย้งด้านเวลาของ merge window ของ Linux 6.17 กับกิจกรรมครอบครัวของ Torvalds
  • Torvalds เดินทางไปงานแต่งงานและงานฉลองวันเกิดใน US และ Finland
  • การปรับปรุง RISC-V ถูกเลื่อนไปยังรอบการพัฒนา Linux 6.18

ปัญหาทางเทคนิคนอกเหนือจากการส่งล่าช้า

แม้ว่าการส่งล่าช้าจะดึงดูดการวิพากษ์วิจารณ์ในตอนแรก แต่ปัญหาทางเทคนิคที่ลึกซึ้งกว่านั้นได้เผยออกมาเมื่อมีการทบทวน patch นี้รวมถึงการแก้ไขไฟล์ header ทั่วไปของ Linux แทนที่จะจำกัดการเปลี่ยนแปลงไว้ที่โค้ดเฉพาะ RISC-V การตัดสินใจเชิงสถาปัตยกรรมนี้ทำให้เกิดความกังวลเกี่ยวกับผลกระทบที่อาจเกิดขึ้นต่อส่วนประกอบ kernel ที่ไม่เกี่ยวข้องและความเสถียรของระบบโดยรวม

ฟังก์ชัน Helper ที่ก่อให้เกิดความขัดแย้งดึงดูดการวิจารณ์อย่างรุนแรง

องค์ประกอบที่ก่อให้เกิดความขัดแย้งมากที่สุดเกี่ยวข้องกับฟังก์ชัน helper ที่เรียกว่า make_u32_from_two_u16() ซึ่งออกแบบมาเพื่อรวม unsigned 16-bit integers สองตัวเข้าเป็น 32-bit integer หนึ่งตัว Torvalds อธิบายฟังก์ชันนี้ว่าบ้าและไร้จุดหมาย โดยให้เหตุผลว่ามันทำให้การเรียงลำดับข้อมูลคลุมเครือและเพิ่มความซับซ้อนที่ไม่จำเป็น เขายืนยันว่าฟังก์ชันนี้ทำให้โค้ดเข้าใจได้น้อยลงและทำลายคุณภาพของ codebase อย่างแข็งขัน

ปัญหาทางเทคนิคหลักที่ระบุ:

  • ฟังก์ชันช่วย make_u32_from_two_u16() ถือว่าไม่จำเป็นและสร้างความสับสน
  • การแก้ไขไฟล์ header แบบทั่วไปแทนที่จะเป็นการเปลี่ยนแปลงเฉพาะ RISC-V
  • การส่งงานล่าช้าในช่วง merge window แม้จะมีการเตือนล่วงหน้า
  • ผลกระทบเชิงลบที่อาจเกิดขึ้นต่อส่วนประกอบอื่นๆ ของ kernel ที่ไม่เกี่ยวข้อง
Linus Torvalds แสดงความกังวลเกี่ยวกับการออกแบบที่ซับซ้อนของฟังก์ชันช่วยเหลือใน RISC-V patches ที่ถูกปฏิเสธ
Linus Torvalds แสดงความกังวลเกี่ยวกับการออกแบบที่ซับซ้อนของฟังก์ชันช่วยเหลือใน RISC-V patches ที่ถูกปฏิเสธ

ความกังวลเรื่องการปนเปื้อนไฟล์ Header ทั่วไป

การตัดสินใจที่จะวางฟังก์ชันการทำงานเฉพาะ RISC-V ในไฟล์ header ทั่วไปทำให้ Torvalds หงุดหงิดเป็นพิเศษ เขาเน้นว่าแนวปฏิบัติดังกล่าวอาจส่งผลกระทบเชิงลบต่อระบบนิเวศ Linux ที่กว้างขึ้นโดยการบังคับให้โค้ดที่ไม่เกี่ยวข้องต้องรองรับความต้องการเฉพาะสถาปัตยกรรม แนวทางนี้ละเมิดหลักการพัฒนา kernel ที่ยอมรับแล้วซึ่งให้ความสำคัญกับการแยกที่สะอาดระหว่างส่วนประกอบทั่วไปและเฉพาะสถาปัตยกรรม

กำหนดความคาดหวังที่ชัดเจนสำหรับการส่งในอนาคต

หลังจากการปฏิเสธ Torvalds ได้ออกแนวทางเฉพาะสำหรับการมีส่วนร่วมในอนาคต เขาบังคับให้การส่งมุ่งเน้นเฉพาะการเปลี่ยนแปลงเฉพาะสถาปัตยกรรมเว้นแต่จะมีเหตุผลที่น่าเชื่อถือสำหรับการแก้ไขทั่วไป การเปลี่ยนแปลงทั่วไปใดๆ ต้องแสดงให้เห็นถึงประโยชน์ที่ชัดเจนและมาถึงก่อนกำหนดเวลาเป็นอย่างดี คำสั่งนี้ทำหน้าที่เป็นทั้งคำเตือนสำหรับผู้มีส่วนร่วมโดยตรงและแนวทางสำหรับชุมชนนักพัฒนาที่กว้างขึ้น

การตอบสนองของนักพัฒนาและปฏิกิริยาของชุมชน

Dabbelt รับทราบข้อเสนอแนะและมุ่งมั่นที่จะปรับปรุงทั้งเวลาการส่งและคุณภาพของโค้ดสำหรับการมีส่วนร่วมในอนาคต การแลกเปลี่ยนนี้จุดประกายปฏิกิริยาที่หลากหลายภายในชุมชนนักพัฒนา โดยบางคนปกป้องแนวทางตรงไปตรงมาของ Torvalds ว่าจำเป็นสำหรับการรักษามาตรฐานโปรเจกต์ ในขณะที่คนอื่นๆ ตั้งคำถามว่าน้ำเสียงดังกล่าวมีประโยชน์เชิงสร้างสรรค์หรือไม่

วิวัฒนาการของสไตล์ความเป็นผู้นำ

เหตุการณ์นี้สะท้อนแนวทางความเป็นผู้นำที่พัฒนาแล้วแต่ยังคงเรียกร้องของ Torvalds แม้ว่าสไตล์การสื่อสารของเขาจะปรับตัวลงตั้งแต่คำมั่นสัญญาในปี 2018 ที่จะปรับปรุงการปฏิสัมพันธ์กับนักพัฒนา แต่เขายังคงรักษามาตรฐานที่ไม่ยอมประนีประนอมสำหรับคุณภาพโค้ดและโปรโตคอลการส่ง สมดุลระหว่างการดำเนินการอย่างมืออาชีพและความเข้มงวดทางเทคนิคนี้ยังคงหล่อหลอมวัฒนธรรมการพัฒนา kernel ของ Linux

Linus Torvalds ยังคงกำหนดมาตรฐานสูงสำหรับคุณภาพโค้ดและการปฏิสัมพันธ์ภายในชุมชนนักพัฒนา Linux kernel
Linus Torvalds ยังคงกำหนดมาตรฐานสูงสำหรับคุณภาพโค้ดและการปฏิสัมพันธ์ภายในชุมชนนักพัฒนา Linux kernel

มองไปข้างหน้าสู่ Linux 6.18

การปรับปรุง RISC-V ที่ถูกปฏิเสธจะต้องรอวงจรการพัฒนา Linux 6.18 หากพวกเขาแก้ไขความกังวลที่ระบุและมาถึงภายในกรอบเวลาที่เหมาะสม ความล่าช้านี้เน้นย้ำว่าการพัฒนา kernel ให้ความสำคัญกับความเสถียรระยะยาวและคุณภาพโค้ดมากกว่าการเพิ่มฟีเจอร์ทันที แม้ว่าการมีส่วนร่วมจะมาจากบริษัทเทคโนโลยีใหญ่ก็ตาม