ฮัลโหลเพื่อนๆ ชาวโปรแกรมเมอร์! ช่วงนี้ใครใช้ AI ช่วยเขียนโค้ดบ้างยกมือขึ้น? 🙋♂️ ต้องบอกว่าประเด็น 'AI Coding Assistants' นี่เป็นเรื่องทอล์กออฟเดอะทาวน์สุดๆ ทั้งเรื่องคุณภาพโค้ดไปจนถึงปัญหาลิขสิทธิ์ ล่าสุดพี่ใหญ่อย่าง Linux Kernel เลยอยู่เฉยไม่ได้ ออกอัปเดตเอกสาร Documentation ทางการเพื่อวางระเบียบเรื่องนี้เป็นที่เรียบร้อยแล้วครับ
กฎใหม่ของ Linux: มนุษย์ต้องเป็นคน "รับจบ"
ใจความสำคัญของระเบียบนี้คือ ไม่ว่าคุณจะใช้ LLM (Large Language Model) เทพแค่ไหนช่วยเจนโค้ด แต่ท้ายที่สุดแล้ว "นักพัฒนาที่เป็นมนุษย์" จะต้องเป็นคนลงนามยืนยัน (Sign-off) โค้ดเหล่านั้นครับ
นั่นหมายความว่าคุณจะต้องรับผิดชอบทุกอย่าง 100% ทั้งเรื่องคุณภาพของซอฟต์แวร์ รวมถึงปัญหาทางกฎหมายที่อาจตามมาในอนาคตด้วย กฎนี้ช่วยให้มั่นใจว่าโค้ดที่เข้ามาในโปรเจกต์ยักษ์ใหญ่ระดับโลกอย่าง Linux จะมีมาตรฐานและตรวจสอบที่มาได้จริง
วงการ Open Source อื่นๆ คิดเห็นอย่างไร?
ต้องบอกว่า Linux ไม่ใช่กลุ่มเดียวที่ตื่นตัวเรื่องนี้นะครับ เพราะทาง NetBSD ถึงขั้นประกาศแบนโค้ดที่แตะต้อง AI ไปเลย ส่วนโปรเจกต์ cURL ก็ต้องระงับโครงการ Bug Bounty เพราะรำคาญขยะโค้ด (AI slop) ที่คนส่งเข้ามามั่วๆ
นอกจากนี้ยังมีเทรนด์ที่เรียกว่า ‘vibe-coding’ ที่นักพัฒนาเริ่มกังวลกันว่าอาจจะเข้ามาทำลายจิตวิญญาณของโอเพนซอร์สในระยะยาวได้ครับ
เจาะลึกข้อกำหนดสำหรับนักพัฒนา (Guidelines)
สำหรับใครที่อยากส่งโค้ดเข้าไปใน Linux Kernel โดยมี AI ช่วยเหลือ นี่คือสเตปที่คุณต้องทำตามกฎใหม่ครับ:
-
Licensing: โค้ดที่ส่งมาต้องเข้ากันได้กับ GPL-2.0-only และต้องมี SPDX license identifiers ที่ถูกต้อง
-
No AI Sign-off: ห้ามให้ AI เป็นคนใส่แท็ก Signed-off-by โดยเด็ดขาด เฉพาะมนุษย์เท่านั้นที่มีสิทธิ์ certify ตัว Developer Certificate of Origin (DCO)
-
Attribution: ต้องให้เครดิต AI ในรูปแบบที่กำหนด เพื่อให้ระบบสามารถติดตามการใช้งานได้
เอกสารอ้างอิงขั้นตอนมาตรฐาน:
วิธีใส่แท็กเครดิต AI ให้ถูกต้อง
เมื่อคุณใช้ AI ช่วยพัฒนา คุณต้องใส่แท็ก Assisted-by: ไว้ใน Commit ของคุณตามฟอร์แมตนี้ครับ:
Assisted-by: AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]
# ตัวอย่างการใช้งานจริง:
Assisted-by: Claude:claude-3-opus coccinelle sparse
*หมายเหตุ: เครื่องมือพื้นฐานอย่าง git, gcc, make ไม่ต้องระบุลงไปนะครับ
*คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา เพื่อความถูกต้องแม่นยำทางเทคนิค โปรดอ้างอิงเอกสารหลักจาก
Linux Kernel Documentation เป็นหลัก