18 คะแนน โดย carnoxen 2025-02-13 | 28 ความคิดเห็น | แชร์ทาง WhatsApp
  1. มีการส่งพูลรีเควสต์โค้ด Rust ที่นำ Direct Memory Access API ไปใช้งานเข้าไปยังรีโพซิทอรีเคอร์เนลลินุกซ์
  2. Christoph Hellwig ผู้ดูแลระดับกลางของเคอร์เนลลินุกซ์ปฏิเสธ โดยระบุว่าไม่ควรนำโค้ด Rust เข้ามาในเคอร์เนลลินุกซ์ และความขัดแย้งก็เริ่มต้นขึ้น
  3. เมื่อความขัดแย้งขยายใหญ่ขึ้นเรื่อย ๆ Christoph Hellwig ได้เปรียบเทียบ Rust ว่าเป็นเซลล์มะเร็ง
  4. Hector Martin หัวหน้าโครงการ Asahi Linux ไม่พอใจกับคำพูดเรื่องเซลล์มะเร็งนี้ จึงวิจารณ์อย่างรุนแรงบนโซเชียลมีเดียพร้อมดึง Linus Torvalds เข้ามาเกี่ยวข้อง
  5. Linus Torvalds เตือน Hector Martin ว่า "ปัญหาคือตัวคุณเอง" และ "อย่าระดมความเห็นจากสาธารณะบนโซเชียลมีเดีย (Brigading)"
  6. ขณะนี้ Hector Martin ได้ขอถอนตัวจากตำแหน่งผู้ดูแลโค้ดอัปสตรีมลินุกซ์ที่รองรับฮาร์ดแวร์ Apple Arm

28 ความคิดเห็น

 
sftblw 2025-02-14

สรุปฉบับย่อกล่าวถึงเพียงเหตุการณ์ที่เกิดขึ้น แต่ที่ช่วงท้ายของต้นฉบับ (เป็นภาษาเกาหลี) ยังมีข้อมูลพื้นฐานเพิ่มเติมอีก 2 อย่างที่จะช่วยให้เข้าใจเหตุการณ์นี้ได้ดียิ่งขึ้น

 
mango 2025-02-14

ผมคิดว่าการดูแลโปรเจ็กต์ด้วยภาษาเดียวเป็นเรื่องที่ดี แต่แยกจากประเด็นนั้นแล้ว วิธีที่ใช้โน้มน้าวเพื่อนร่วมงานให้ยอมรับเรื่องนี้แย่มากจริง ๆ

 
carnoxen 2025-02-14

การบังคับให้คนยอมจำนนด้วยอำนาจเป็นเรื่องไม่ยุติธรรม

 
foriequal0 2025-02-14

นี่คือเธรดอีเมลของ PR ดังกล่าว:
https://lwn.net/ml/all/…

ดูเหมือนว่าไม่ใช่การแก้ implementation ของ DMA และไม่ได้ไปแตะ DMA API โดยตรง แต่เป็น PR ที่เขียน FFI binding เพื่อให้ Rust เข้าถึง DMA API ได้
แต่ PR แบบนั้นกลับถูกปฏิเสธด้วยข้อความสั้น ๆ ว่า "No rust code in kernel/dma, please." และเมื่อถามว่าควรทำอย่างไร ก็ได้รับคำตอบว่า "Keep the wrappers in your code instead of making life painful for others." https://lwn.net/ml/all/20250108135951.GA18074@lst.de/
https://lwn.net/ml/all/20250108151858.GB24499@lst.de/
(ซึ่งก็ทำตามที่บอกแล้วจริง ๆ เพราะ PR นี้ไม่ได้แก้ kernel/dma แต่แก้ subtree ใต้ rust/kernel)

แน่นอนว่าเมื่อมีการเพิ่ม FFI binding ก็ย่อมมีภาระที่ต้องแก้ Rust FFI binding ด้วยเวลาที่ DMA API เปลี่ยนแปลง
แต่ถึงฝั่งที่ทำ Rust จะบอกเองว่าจะรับผิดชอบจัดการส่วนนั้นให้ดีอยู่แล้ว ผมก็ยังไม่แน่ใจว่านี่เป็นท่าทีคัดค้านที่เหมาะสมหรือไม่ จากคนที่ไม่ได้เป็นผู้ดูแลต้นไม้ส่วนนั้น
(Christoph Hellwig เป็น maintainer ของ kernel/dma: https://docs.kernel.org/process/maintainers.html#dma-mapping-helpers)

เพราะอย่างนั้น Hector Martin น่าจะดึง Linus เข้ามาในเธรดนี้:
https://lwn.net/ml/all/2b9b75d1-eb8e-494a-b05f-59f75c92e6ae@marcan.st/

แต่ที่น่าสนใจคือในเธรก่อนหน้านั้นมีประเด็นที่คุยกันไว้ว่า
ถ้า Rust team ไม่รีบรับมือกับ breaking change ใน API ให้ทัน บิลด์ก็จะพัง และ Linus จะไม่รับ PR
พอมองว่าเป็นปัญหาระหว่างโมดูลที่สร้าง breaking change กับอีกโมดูลหนึ่ง ผมกลับรู้สึกว่าฝั่งที่มี Rust ดูดีกว่า
สมมติว่าโมดูล x เป็นคนสร้าง breaking change และโมดูล y รับมือไม่ทัน:

  • โมดูล y เขียนด้วย Rust: คอมไพล์พัง ทำให้ Linus ไม่ merge
  • โมดูล y เขียนด้วย C: คอมไพล์ผ่านได้(??) ทำให้ Linus merge (????)
 
gurugio 2025-02-14

ส่วนที่ใช้ unsafe ของ Rust ในลินุกซ์เคอร์เนล ส่วนใหญ่เป็นส่วนที่ทำการห่อหุ้มร่วมกับ C

นอกจากนี้ก็มีส่วนควบคุมฮาร์ดแวร์ที่ต้องจัดการหน่วยความจำโดยตรงอยู่บ้าง แต่มีน้อยมาก

ส่วนที่ Rust ถูกนำมาใช้คือการพัฒนาไดรเวอร์ ไม่จำเป็นต้องไปแตะการจัดการหน่วยความจำหรือ block layer รวมถึงตัวเคอร์เนลเองก็ทั้งไม่จำเป็นและทำไม่ได้

โค้ดไดรเวอร์มีจำนวนมากกว่าโค้ดของตัวเคอร์เนลเองอย่างมาก และจุดที่เกิดปัญหาส่วนใหญ่ก็มักอยู่ที่โค้ดไดรเวอร์

ผมคิดว่าส่วนของการพัฒนาไดรเวอร์ควรถูกพัฒนาด้วยภาษาที่มีความปลอดภัยด้านหน่วยความจำและความปลอดภัยโดยรวมดีกว่า C

จะเป็น Rust หรือ Zig หรือภาษาไหน ผมก็ไม่แน่ใจ

ผมเองก็เห็นด้วยว่า Rust ซับซ้อนเกินไปสำหรับการพัฒนาแอปทั่วไป และสำหรับนักพัฒนา C ที่จะเรียนให้เร็วก็ไม่ง่าย

ถึงอย่างนั้นไม่ว่าจะเป็นภาษาอะไร ผมก็หวังว่าอย่างน้อยงานพัฒนาไดรเวอร์จะเปลี่ยนไปใช้ภาษาสมัยใหม่

ที่บริษัทเก่าของผม เคยใช้เวลาประมาณ 7 ปีในการพัฒนาและทำให้ไดรเวอร์ที่มีโค้ดไม่กี่พันบรรทัดเสถียร แม้จะลดทอนให้เรียบง่ายทั้งหมดไม่ได้ แต่คร่าว ๆ แล้วน่าจะใช้เวลากับการดีบักเพียงอย่างเดียวราว 3 ปี

ส่วนใหญ่เป็นบั๊กที่เกี่ยวกับหน่วยความจำ และข้อผิดพลาดเชิงตรรกะแบบ deadlock มีเพียงส่วนน้อย

 
kh0324 2025-02-14

ดูแล้วไม่ค่อยดีเท่าไรที่จะใช้โปรเจกต์ใหญ่เป็นสนามทดลองให้กับภาษาของตัวเอง
ถ้าขัดใจกันก็จำเป็นต้องกลับไปสู่ยุคเก่าที่แยก fork กันออกมาได้แล้ว
สำหรับเคอร์เนลที่ดูแลทั้งระบบอุปกรณ์ ผมคิดไม่ออกเลยว่ายังมีเหตุผลอะไรให้ลองใช้ Rust เพราะพอเริ่มใช้ unsafe ก็สุดท้ายจะกลายเป็นโค้ดที่อ่านยากและมีปัญหาอยู่ดี
ไม่ใช่ว่าเป็นโปรเจกต์แบบ 0.91 0.92 0.99 0.991 อะไรทำนองนี้ที่ยังไม่มีเมนรีลีสเสียหน่อย เลยไม่เข้าใจว่าทำไมถึงเอาส่วนที่เดิมก็ทำงานได้ดีอยู่แล้วมาพอร์ต
ไม่ใช่กรณีที่มีบั๊กใหญ่แล้วเลยถือโอกาสเปลี่ยนให้ปลอดภัยขึ้นด้วยเสียหน่อย

 
foriequal0 2025-02-14

PR นี้ไม่ใช่การพอร์ต แต่เป็น PR ที่เพิ่ม FFI binding ฝั่ง Rust เพื่อให้โมดูลที่พัฒนาด้วย Rust ซึ่งเขียนขึ้นใหม่สามารถใช้ DMA API เดิมได้ และฝ่ายที่ดูแล DMA เป็นคนขัดขวางเรื่องนั้น

 
kuber 2025-02-14

น่าเสียดายที่ในเนื้อหาบทความไม่มีต้นฉบับที่อ้างอิงมาให้ด้วย ผมเลยไปค้นหาต้นฉบับมาอ่านเพราะอยากรู้ และแม้ว่าผมเองก็อาจยังเข้าใจได้ไม่ครบถ้วน แต่ดูเหมือนว่าถ้าจะเล่าแบบง่าย ๆ ตามต้นฉบับอย่างเดียว เรื่องนี้ก็น่าจะมีเบื้องหลังอยู่อีกพอสมควรครับ

 
moderator 2025-02-14

ชื่อบทความถูกเปลี่ยนกลับเป็นชื่อดั้งเดิมแล้ว

 
carnoxen 2025-02-14

ขอบคุณที่ดำเนินการให้ครับ

 
bus710 2025-02-14

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

 
roxie 2025-02-14

ไม่สิ คุณภาพของเนื้อหาดีกว่าที่คิดไว้พอสมควรเลยครับ อ่านได้สนุกมาก

 
sonnet 2025-02-14

ประเด็นที่ทอร์วัลดส์พูดว่า "ปัญหาคือคุณ" นั้น ไม่ได้เกี่ยวข้องกับการนำ Rust มาใช้ แต่เป็นข้อโต้แย้งว่า SNS ไม่อาจเป็นคำตอบของปัญหาทางเทคนิคได้ อย่างไรก็ตาม ถ้าดูเพียงสรุปนี้อย่างเดียว ก็ดูเหมือนจะทำให้เกิดความเข้าใจผิดได้ครับ

 
carnoxen 2025-02-14

สำหรับเฮกเตอร์ มาร์ตินแล้ว มันเป็นทางเลือกที่เลี่ยงไม่ได้

ในเมื่อผู้ดูแลระดับกลางของลินุกซ์ล้วนเป็นผู้เชี่ยวชาญ C กันหมด ความเห็นของนักพัฒนา Rust ซึ่งมีอยู่เพียงส่วนน้อย จะมีทางถูกรับฟังได้อย่างไร

 
ahwjdekf 2025-02-13

https://youtu.be/opTJH76wJxs?si=WHR0_1uPpSlpDTHr แสดงให้เห็นกระบวนการที่ลุกลามกลายเป็นข้อถกเถียง

 
fnwinter 2025-02-13

ทอร์วัลดส์ก็ยอมให้ใช้ Rust อยู่แล้วไม่ใช่เหรอ?

 
qwqwhs 2025-02-14

ทอร์วัลดส์ไม่ได้พูดถึง Rust แม้แต่คำเดียวในข้อถกเถียงนั้น

เวลาเกิดข้อพิพาทด้านความเห็นเชิงเทคนิค ก็ควรถกกันด้วยเหตุผลทางเทคนิคสิ
อย่าพยายามยุติข้อพิพาทด้วยการสร้างกระแสความเห็นบน SNS

 
ahwjdekf 2025-02-13

ถ้าพวกคุณเก่งกันขนาดนั้น ก็ฟอร์กเคอร์เนลแล้วเขียนทั้งหมดด้วย Rust ไปเลยสิ อย่าค่อย ๆ แทรกซึมเข้ามาเหมือนมะเร็ง มีความเห็นแบบนี้กันเยอะนะ

 
aegis92 2025-07-28

ถ้าเป็นโค้ดที่ไปแตะฝั่ง kernel/dma เพื่อทำให้ใช้งานจาก Rust ได้ง่ายขึ้นก็คงอีกเรื่องหนึ่ง แต่โค้ดนั้นเป็นโค้ดที่เพิ่มชั้น FFI ซึ่งห่อ kernel/dma ไว้เข้าไปใน rust/kernel/dma ครับ
ไม่ได้ไปแก้โค้ดต้นฉบับเลย

ในความเป็นจริง ประเด็นสำคัญคือประมาณว่า
"ผมไม่ชอบเวลามีคนใช้ DMA FFI อย่างเป็นทางการที่ทำด้วย Rust ผิด แล้วมาถามผม" ...
แล้วก็ยังพูดต่อแบบไม่ค่อยสมเหตุสมผลว่า ให้แต่ละไดรเวอร์ไปสร้าง FFI กันเองเอา

 
carnoxen 2025-02-14

นั่นคือ Redox น่ะครับ/ค่ะ คงกำลังไปทางลินุกซ์เพราะยังมีบางส่วนที่ยังไม่รองรับ...

https://vt.social/@lina/113064510447670892

 
sonnet 2025-02-14

เนื้อหาที่คุณเขียนมาดูเหมือนจะเป็นคำพูดของ Hellwig ตรงๆ ทั้งหมด แต่ผมก็ไม่แน่ใจว่าจะมองได้ว่าความเห็นแบบนั้นเป็นเสียงส่วนใหญ่หรือไม่

 
ffdd270 2025-02-13

สวัสดีครับ ขอบคุณที่โพสต์บทความดี ๆ สนุกมากที่ได้อ่านครับ

แต่พอได้ลองตรวจดูต้นฉบับและดูชื่อเรื่องของต้นฉบับแล้ว มีจุดที่กังวลอยู่เล็กน้อย เลยขอแสดงความคิดเห็นไว้ครับ

https://news.hada.io/guidelines

> โดยพื้นฐานแล้ว กรุณาใช้ชื่อเรื่องต้นฉบับ หรือแปลชื่อเรื่องเป็นภาษาเกาหลีแล้วโพสต์

มีข้อเสนอไว้เช่นนี้ และเมื่อได้อ่านเนื้อหาของบทความดังกล่าวแล้ว ผมคิดว่าชื่อเรื่องว่า "ข้อถกเถียงเรื่อง Rust ใน Linux kernel ปะทุขึ้นอีกครั้ง" แทนที่จะเป็น "Linus Torvalds 'ปัญหาอยู่ที่คุณ'" นั้น ยังอาจทำให้เกิดความเข้าใจผิดเกี่ยวกับเนื้อหาของบทความได้มากกว่าชื่อเรื่องต้นฉบับเสียอีกครับ

ขอบคุณอีกครั้งที่ช่วยสรุปและแนะนำบทความให้ครับ ขอให้เป็นวันที่ดีครับ

 
kaydash 2025-02-13

เจ๋งสุดๆ

 
carnoxen 2025-02-13

จะนำไปพิจารณา

 
ffdd270 2025-02-13

'm 'b ขอให้เป็นวันที่ดี! ขอบคุณที่ทำให้ได้อ่านบทความดีๆ (__ )

 
carnoxen 2025-02-13

เดิมผมติดนิสัยใส่คำบรรยายย่อยของตัวเองไว้ในชื่อเรื่องเพื่อให้อธิบายได้แม่นยำขึ้น แต่ไม่เพียงแค่ชื่อเรื่องนั้นไม่ตรงกับความต้องการของท่านอื่น ผมยังไม่ทราบด้วยว่ามีกฎแบบนี้อยู่ ต่อไปจะลงตามต้นฉบับตามเดิมครับ

 
jamiecha 2025-02-13

ชื่อเรื่องเดิมทำให้เข้าใจได้ทันทีว่าเป็นเรื่องเกี่ยวกับอะไร ในขณะที่ชื่อเรื่องที่คุณแก้ไขอาจเสี่ยงต่อการทำให้เกิดความเข้าใจผิดว่าเป็นการพาดหัวล่อคลิกได้ ดูเหมือนจะเป็นเช่นนั้น นี่เป็นความเห็นส่วนตัวของผม

 
carnoxen 2025-02-13

ขอบคุณสำหรับความคิดเห็นครับ

ผมคิดว่าคำพูดของ Linus สำคัญที่สุดจึงนำมาตั้งเป็นพาดหัว แต่ดูเหมือนว่ามันจะถูกบิดเบือนไปมากทีเดียว

ผมจะระมัดระวังให้มากขึ้นอย่างแน่นอนครับ