- มีการส่ง PR ขนาดใหญ่ราว 13,000 บรรทัดเพื่อเพิ่ม ข้อมูลดีบัก DWARF v5 ให้กับคอมไพเลอร์เนทีฟของ OCaml เพื่อรองรับ การดีบักระดับซอร์สโค้ดด้วย GDB·LLDB บน macOS และ Linux
- เนื้อหาการพัฒนาครอบคลุม เบรกพอยต์ระดับฟังก์ชัน·ระดับบรรทัด, การติดตามพารามิเตอร์และตัวแปรภายใน, การแสดงข้อมูลชนิดพื้นฐาน, รองรับ AMD64·ARM64 เป็นต้น
- ผู้เขียนระบุว่าโค้ดนี้เป็นผลลัพธ์ที่ AI หลายโมเดล เช่น Claude Sonnet 4.5 และ ChatGPT 5(Codex) ร่วมกันสร้างขึ้น และตนเองทำหน้าที่เพียง สั่งการ·ตรวจทาน AI แทนการเขียนโค้ด
- ผู้ดูแล OCaml ปฏิเสธการรวมโค้ดและปิด PR โดยให้เหตุผลเรื่อง ปัญหาลิขสิทธิ์, การไม่มีการพูดคุยด้านการออกแบบ, ภาระการบำรุงรักษา, ความยากในการรีวิวโค้ดจาก AI
- การถกเถียงครั้งนี้เป็นตัวอย่างที่สะท้อนโจทย์ใหม่ของชุมชนโอเพนซอร์สเกี่ยวกับ คุณภาพ, ลิขสิทธิ์ และกระบวนการทำงานร่วมกันของโค้ดที่สร้างโดย AI
ภาพรวมของ PR รองรับการดีบัก DWARF v5
- PR นี้เพิ่ม ข้อมูลดีบัก DWARF v5 ให้กับคอมไพเลอร์เนทีฟของ OCaml ทำให้สามารถ ดีบักระดับซอร์สโค้ด ได้ใน GDB และ LLDB
- ตั้งเบรกพอยต์ตามชื่อฟังก์ชัน·ไฟล์·บรรทัด แสดงชื่อตัวแปร และให้ข้อมูลชนิด
- รองรับสถาปัตยกรรม AMD64·ARM64 และยังไม่รองรับแพลตฟอร์ม 32 บิต
- มีการทำให้รองรับ DWARF อย่างสมบูรณ์ทั้งบน macOS (Mach-O) และ Linux (ELF) โดยใช้ section-relative relocation
- เพิ่ม ปลั๊กอิน LLDB (
ocaml_lldb.py) เพื่อรองรับคำสั่งแสดงค่า OCaml (ocaml print)
- การทดสอบประกอบด้วย 9 รายการเพื่อตรวจสอบ การทำงาน·ชนิด·การดีบักตามบรรทัด
รายละเอียดการพัฒนา
- อัปเกรดจาก DWARF v4 เป็น v5 และใช้ DW_FORM_string เพื่อหลีกเลี่ยงข้อผิดพลาดระหว่างลิงก์
- รองรับ หลาย compilation unit (CU) และลดความซ้ำซ้อนของตารางสตริง
- สะท้อน การติดตามตัวแปรภายใน·พารามิเตอร์, lexical block, ข้อมูลชนิดพื้นฐาน ลงในโครงสร้าง DWARF
- ใช้โมดูล Var_lifetime เพื่อติดตามวงจรชีวิตของตัวแปร และใช้ฟิลด์ fun_var_info เพื่อส่งต่อข้อมูลตัวแปรตลอดทั้งไปป์ไลน์การคอมไพล์
- ใช้ DW_TAG_lexical_block เพื่อแสดง scope ที่ซ้อนกัน
- สคริปต์ทดสอบ ตรวจสอบเบรกพอยต์และการแสดงชนิดใน GDB·LLDB
ข้อถกเถียงเรื่องโค้ดที่สร้างโดย AI
- ผู้เขียนระบุว่า “Claude Sonnet 4.5 เป็นผู้เขียนส่วนใหญ่ และ ChatGPT 5(Codex) เป็นผู้ตรวจทาน”
- พร้อมอธิบายว่าตนเอง “เพียงกำกับและตรวจทาน AI เท่านั้น ไม่ได้เขียนเองแม้แต่บรรทัดเดียว”
- มีบางไฟล์ที่ใส่ชื่อ Mark Shinwell เป็นผู้เขียน ทำให้เกิด ข้อถกเถียงเรื่องที่มาของลิขสิทธิ์
- ผู้เขียนอ้างผ่านรายงานวิเคราะห์แยกต่างหากว่า “โครงสร้าง การตั้งชื่อ และระบบชนิด แตกต่างจากการพัฒนาใน OxCaml จึงไม่ใช่การคัดลอก”
ปฏิกิริยาของผู้ดูแลโครงการ
- gasche: ชี้ว่ามีการส่งโค้ดกว่า 13,000 บรรทัดโดยไม่มีการคุยเรื่องการออกแบบล่วงหน้า ทำให้เกิด ภาระด้านการรีวิว·การบำรุงรักษา สูง
- พร้อมตัดสินว่าโค้ดที่ AI เขียน “รีวิวยากกว่าและมีความเสี่ยงทางกฎหมาย” จึงไม่สามารถรวมเข้ามาได้
- dra27: วิจารณ์คำกล่าวที่ว่า “AI เข้าใจโค้ด” และย้ำว่า LLM เป็นเพียง เครื่องมือสร้างแพตเทิร์น ไม่ใช่ความเข้าใจจริง
- bluddy และ tmcgilchrist: ระบุว่าโค้ด DWARF ควรถูกแยกออกเป็นไลบรารีต่างหาก และหากรวมไว้ในคอมไพเลอร์ภายในจะเพิ่ม ภาระการบำรุงรักษา
- เมื่อการถกเถียงร้อนแรงขึ้น PR นี้จึงถูกล็อกในสถานะ ‘too heated’
ประเด็นของ AI กับการทำงานร่วมกันในโอเพนซอร์ส
- ผู้เขียนย้ำว่านี่เป็น การทดลองพัฒนาด้วย AI โดยต้องการพิสูจน์ว่า “AI สามารถสร้างโค้ดคุณภาพสูงจนสมบูรณ์ได้”
- ฝั่งผู้ดูแลชี้ว่าปัจจุบันยังไม่มีนโยบายที่ชัดเจนเกี่ยวกับ “คุณภาพ ลิขสิทธิ์ และขั้นตอนการตรวจทานโค้ดที่สร้างโดย AI”
- กรณีนี้จุดประเด็นถกเถียงเรื่อง ขั้นตอนและเกณฑ์ที่จำเป็นเมื่อจะผสานการพัฒนาแบบมี AI ช่วยเข้ากับโครงการโอเพนซอร์ส
2 ความคิดเห็น
แต่… คนที่ส่ง PR นี้กลับไม่เข้าใจเลยแม้แต่น้อย
ดังนั้น… ขอปัดตก PR นี้ (ปัง ปัง ปัง)
ความเห็นจาก Hacker News
สงสัยว่าเมนเทนเนอร์ของ OCaml เคยผ่าน การฝึกพิเศษในการรับมือกับคนยากๆ มาหรือเปล่า
ความอดทนและความเป็นผู้ใหญ่ของพวกเขาน่าทึ่งมาก
ถ้าเป็นผมคงบล็อกแบบ Torvalds ไปตั้งนานแล้ว
ฝ่ายผู้นำแทบจะมีศรัทธาใน AI แบบเกือบเป็นศาสนา และอยากให้วิศวกรทุกคนใช้ AI ให้มากที่สุด
แม้แต่ code review ก็เริ่มให้ AI รับหน้าที่มากขึ้นเรื่อยๆ แต่กรณีนี้ดูเหมือนจะไม่ได้ใจดีเพราะเหตุผลนั้น
เช่น ช่วยชี้นำให้แยก PR หรือทำข้อเสนอด้านการออกแบบ
เมนเทนเนอร์ใจดีเกินไป จนเห็นแล้วหงุดหงิดที่ต้องเสียเวลาให้คนแบบนั้น
วิธีที่เมนเทนเนอร์ตอบด้วยเหตุผลและความเห็นอกเห็นใจโดยไม่ใช้อารมณ์ เป็น การสื่อสารแบบตำราเรียน จริงๆ
แต่ก็อดคิดไม่ได้ว่าความใจดีแบบนี้จะยิ่งทำให้ภาพลวงตาแข็งแรงขึ้นหรือเปล่า
บางคนดูเหมือนจะ ขาดการตระหนักรู้ในตัวเอง ยิ่งกว่า LLM เสียอีก
การไปถาม AI ว่า commit ที่ AI สร้างนั้นสมเหตุสมผลไหม เป็นเรื่องเหลือเชื่อจริงๆ
อย่างน้อยเขาก็ยังซื่อสัตย์อยู่บ้าง ประโยคที่ว่า “ผมจะดูแลกองขยะนี้ให้นะ แต่ต้องจ่ายเงิน” นี่พีคมาก
จนทำให้ผมเองอยากมีส่วนร่วมกับ ecosystem ของ OCaml เลย
คำถามว่า “ทำไมผู้เขียนของไฟล์ที่ส่งมาถึงเป็น Mark Shinwell?”
แล้วตอบว่า “AI เป็นคนตัดสินแบบนั้น ผมไม่ได้ถามมัน” สรุปทุกอย่างได้หมด
แต่คนรุ่น AI แบบนี้กลับไม่มีแม้แต่การคิดหลายมุมพื้นฐาน
ทั้งที่เดาได้อยู่แล้วว่าต้องถูกถามว่าทำไมถึงมี copyright ใส่มา แต่ก็ไม่ได้เตรียมคำตอบไว้เลย
สุดท้ายภาระการรีวิวก็ถูกโยนให้เมนเทนเนอร์ และผู้มีส่วนร่วมก็ไม่ต้องรับผิดชอบการดูแลต่อ
เรซูเม่ ของคนนี้ระดับตำนานมาก
ผ่านธนาคารวอลล์สตรีทมาแล้ว ไปเป็นผู้อำนวยการฝ่ายเทคโนโลยีที่ Deutsche Bank ขายไลเซนส์ให้ EA
เคยพยายามเขียนหนังสือ “Hardcore Erlang” และระดมทุนคริปโตได้ 2 ล้านดอลลาร์ใน 2 วัน
ไม่อัจฉริยะก็จอมโม้แห่งศตวรรษไปเลยสักทาง
ลิงก์ที่เกี่ยวข้อง: บล็อกเก่า, เรซูเม่ PDF, บทสัมภาษณ์, เว็บไซต์ทางการ, ข่าวการยกเลิกหนังสือ Erlang
ต่อให้เป็นโค้ดที่ AI สร้าง ถ้าชุมชนยังสละเวลามาคุยและให้ฟีดแบ็ก
แต่เจ้าของกลับ ก๊อปวางข้อความยาวๆ ที่ AI เขียนมา แบบตรงๆ ผมคิดว่านั่นควรถูกแบนทันที
ถ้าทำตัวเหมือนสแปมบอต ก็สมควรถูกปฏิบัติเหมือนสแปมบอต
พอผมถามอะไร คำตอบก็เป็นน้ำเสียงแบบ GPT ชัดเจนมาก
สุดท้ายพอลองทำเองก็ได้คำตอบที่แทบจะ เหมือนกันแทบทุกคำ
หลังจากนั้นผมก็ประกาศเลยว่าจะไม่รีวิวโค้ดของเขาอีก
พอมีประโยคว่า “นี่คือการวิเคราะห์ copyright ที่เขียนโดย AI” ก็เกินขีดจำกัดแล้ว
ถ้าเป็นผม ตอนนั้นคง บล็อก repo ไปแล้ว
ผมเองก็เคยมี ประสบการณ์ปิด PR ที่สร้างโดย AI ในหลายโปรเจกต์โอเพนซอร์ส
คนส่งแบบนี้พอโดนปฏิเสธจากโปรเจกต์หนึ่ง ก็จะย้ายไปอีกที่
ภาระการรีวิวเพิ่มขึ้น แต่ผู้มีส่วนร่วมจริงๆ กลับลดลง
ถึงอย่างนั้นการได้ดูการถกเถียงแบบเรียลไทม์บน HN ก็น่าสนใจดี
แต่เจ้าตัวก็ไม่ยอมรับเหตุผลอะไรเลย ดูแล้วโปรเจกต์อื่นๆ ก็น่าจะรับมือแบบนี้ได้เหมือนกัน
ที่น่าห่วงจริงๆ กลับเป็นฝั่งซอฟต์แวร์องค์กร
อยากถามคนที่สนับสนุน AI ว่า
ถ้าคุณขึ้นพูดด้วยสุนทรพจน์ที่ AI เขียนให้ แล้วหลังจากนั้นมีคนถามคำถาม คุณจะตอบยังไง?
สถานการณ์นี้ก็แบบนั้นแหละ
การโยน PR ขนาด 13k บรรทัดเข้ามาโดยไม่เข้าใจ ไม่ว่าจะมี AI หรือไม่ก็เป็นเรื่องผิดอยู่ดี
AI เป็นแค่เครื่องมือ จะใช้ เครื่อง CNC หรือใช้เลื่อย สิ่งสำคัญก็คือต้องเข้าใจผลลัพธ์
จาก PR ที่สร้างโดย AI ทั้งหมดที่เคยเห็น อันนี้เป็น เคสที่แปลกที่สุด
ส่วนใหญ่มักเป็นโค้ดที่มือใหม่เขียนแล้วใช้ไม่ได้ แต่ครั้งนี้มันซับซ้อนและใช้งานได้จริง
ผู้ส่ง Joel Reymont เป็นนักพัฒนาที่มีประสบการณ์ 30 ปี และเป็นรุ่นเก๋าที่มีบัญชี HN มาตั้งแต่ปี 2008
ความอดทนของเมนเทนเนอร์ OCaml น่าทึ่งมาก และสุดท้ายเขาก็สรุปจุดยืนของตัวเองด้วยคอมเมนต์ที่มีความเป็นมนุษย์
พร้อมบอกว่าจะเลิกมีส่วนร่วมกับ OSS ผ่าน AI
ถึงอย่างนั้น PR แบบนี้ก็ยังคงเป็น การเสียเวลาของทุกฝ่าย
และผมยังไม่เคยเห็นกรณีไหนที่ใช้ได้อย่างสร้างสรรค์จริงๆ
เป็น PR ที่น่าตกใจจริงๆ
ลิงก์ commit นั้น