- ไลบรารียูทิลิตีขนาดเล็ก ของ JavaScript กำลังค่อย ๆ ไม่จำเป็นลง เพราะความสามารถของ LLM ในการสร้างโค้ด
- ตัวอย่างเช่น
blob-util เป็นแพ็กเกจ npm อายุ 10 ปี ซึ่งเป็น ชุดเครื่องมือจัดการ Blob แต่ตอนนี้ AI สามารถสร้างโค้ดลักษณะคล้ายกันได้ทันที
- การเปลี่ยนแปลงนี้ทำให้ ลดการพึ่งพา dependency และพัฒนาได้เร็วขึ้น แต่ก็ทำให้ สูญเสียโอกาสในการเรียนรู้และทำความเข้าใจ
- ต่อเนื่องจากการขยายความสามารถในตัวของ Node.js และเบราว์เซอร์ ตอนนี้ LLM กำลัง เร่งการสิ้นสุดของไลบรารีขนาดเล็ก
- ต่อจากนี้ คุณค่าของโอเพนซอร์สน่าจะยังคงอยู่ใน งานที่สร้างสรรค์ ขนาดใหญ่ และเฉพาะทาง
การเสื่อมถอยของโอเพนซอร์สขนาดเล็กและผลกระทบของ LLM
blob-util ที่สร้างไว้เมื่อ 10 ปีก่อน เป็น ชุดยูทิลิตีอย่างง่าย สำหรับแปลงอ็อบเจ็กต์ Blob ของ JavaScript ให้เป็นสตริงหรือ ArrayBuffer และมียอดดาวน์โหลดมากกว่า 5 ล้านครั้งต่อสัปดาห์
- ผู้เขียนสร้างมันขึ้นมาเพราะเห็นว่าผู้ใช้ PouchDB สับสนกับการจัดการ
Blob
- ปัจจุบันนักพัฒนาราว 80% ใช้ AI ในการทำงาน ทำให้ยูทิลิตีแบบง่าย ๆ สามารถถูกแทนที่โดย LLM ได้
- ตัวอย่างคือ Claude สามารถสร้างฟังก์ชัน TypeScript สำหรับแปลง
Blob เป็น ArrayBuffer ได้ทันที
- ผลลัพธ์จาก Claude คล้ายกับ
blob-util แต่ พูดยืดยาวกว่าและตรวจสอบประเภทข้อมูลมากเกินไป ขณะที่การจัดการข้อผิดพลาดทำได้ดีขึ้น
- ผู้เขียนระบุว่าการเปลี่ยนแปลงนี้อาจดูเหมือนเป็น การลด dependency และเพิ่มความแข็งแรงของโค้ด
การสูญเสียคุณค่าของโอเพนซอร์สเพื่อการเรียนรู้
- README ของ
blob-util มี บทสอนที่ใช้ตัวละคร Kirby รวมอยู่ด้วย โดยไม่ได้มีเป้าหมายแค่ให้ฟังก์ชันใช้งาน แต่ยังต้องการ ช่วยให้เรียนรู้ JavaScript
- ในสภาพแวดล้อมการพัฒนาที่ขับเคลื่อนด้วย LLM คำตอบที่ได้ทันทีจะมาก่อนความเข้าใจและการศึกษา ทำให้ความจำเป็นของโอเพนซอร์สแบบเน้นการเรียนรู้ลดลง
- ความพยายามอย่าง
llms.txt สำหรับการทำเอกสารอัตโนมัติ ก็กำลัง นิยามความหมายของเอกสารใหม่ไปในตัว
ทิศทางใหม่ของโอเพนซอร์ส
- ผู้เขียนยังคงทำโอเพนซอร์สต่อไป แต่คิดว่า ยุคของไลบรารีขนาดเล็กที่มูลค่าต่ำได้จบลงแล้ว
- ก่อนหน้านี้แนวโน้มนี้ก็เริ่มขึ้นแล้วจากการขยายความสามารถในตัวของ Node.js และเบราว์เซอร์ เช่น
node:glob, structuredClone
- และ LLM ก็ เร่งแนวโน้มนั้นอย่างชัดเจน
- แม้แต่ไลบรารีที่มีบทบาทด้านการศึกษา เช่น Underscore.js ก็มีความจำเป็นลดลง
- ฟังก์ชันง่าย ๆ อย่างการจัดกลุ่มอาร์เรย์ ตอนนี้สามารถแก้ได้ด้วย API มาตรฐาน
เงื่อนไขของโอเพนซอร์สที่ยังมีคุณค่า
- คุณค่าจะไปกระจุกอยู่ใน โปรเจ็กต์ขนาดใหญ่ สร้างสรรค์ และเฉพาะทาง ที่ LLM สร้างตามได้ไม่ง่าย
- ตัวอย่างเช่นโปรเจ็กต์
fuite และ งานวิจัยด้านการตรวจจับ memory leak เป็นงานสร้างสรรค์ที่ LLM เลียนแบบได้ยาก
- ต่อจากนี้ ความหมายของโอเพนซอร์สจะอยู่ที่ แนวคิดใหม่และความคิดสร้างสรรค์ของมนุษย์
- ยกตัวอย่าง เฟรมเวิร์ก Ripple.js ที่ Dominic Gannaway พัฒนาขึ้น เพื่อเน้นย้ำถึงจิตวิญญาณแห่งการทดลองของมนุษย์
บทสรุป
- LLM ทำให้โอเพนซอร์สบางส่วน ล้าสมัยลง แต่ก็ยังมี โอกาสในการสร้างสรรค์โอเพนซอร์สรูปแบบใหม่ อยู่เสมอ
- ความคิดสร้างสรรค์และจิตวิญญาณแห่งการทดลองของนักพัฒนามนุษย์ถูกเสนอว่าเป็น ปัจจัยสำคัญต่อความยั่งยืนของระบบนิเวศโอเพนซอร์สในยุค AI
4 ความคิดเห็น
ผมคิดว่าโอเค ถ้าสามารถป้องกันพฤติกรรมประหลาดของระบบนิเวศแบบ
left-padได้ดูเหมือนว่าเมื่อยุคสมัยยิ่งให้ความพึงพอใจน้อยลงเมื่อเทียบกับความพยายาม ยูทิลิตีขนาดเล็กก็คงจะถูกเมินมากขึ้น เพราะถูกมองว่าไม่มีคุณค่าคุ้มกับแรงที่ต้องใช้ในการบำรุงรักษา
ความคิดเห็นจาก Hacker News
ทุกวันนี้นักพัฒนาราว 80% ใช้ AI ในการทำงาน
ยูทิลิตีอย่าง blob-util ตอนนี้ส่วนใหญ่ให้ LLM สร้างได้ตรง ๆ เลย
แต่แนวทางแบบนี้เป็น ดาบสองคม โค้ดที่ไม่ผ่านการตรวจสอบอาจทิ้งภาระด้านการบำรุงรักษาไว้ และอาจล้มเหลวใน edge case
เพราะแบบนั้นใน ecosystem ของ Java จึงมีชุดยูทิลิตีมาตรฐานที่เชื่อถือได้อย่าง Apache Commons
ในทางกลับกัน โค้ดที่ LLM สร้างขึ้นแม้ดูมีเหตุผลบนผิวเผิน แต่มีโอกาสสูงที่จะซ่อน บั๊กประหลาด ไว้
เรากำลังก้าวเข้าสู่ยุคที่ AI สร้างโค้ดและบทสอนออกมาจำนวนมหาศาล ทำให้ คุณภาพลดลงและสแปมเพิ่มขึ้น อย่างรวดเร็ว
แรงจูงใจในการทำบล็อกส่วนตัวหรือไลบรารีขนาดเล็กกำลังลดลง
บทความที่ LLM สร้างก็อยู่ในระดับคล้ายกัน เลยรู้สึกว่ากลับกรองออกได้ง่ายขึ้นเสียอีก
ฉันทดสอบคุณค่าที่แท้จริงของบทสอนด้วยการรันโค้ดใน devcontainer ถ้ามันทำงานก็คุ้มจะอ่าน ไม่งั้นก็ทิ้ง
นรกของ micro-dependency ใน JS เคยเป็นฝันร้าย
ตอนนี้ยุคนั้นกำลังจะจบลง และหวังว่านักพัฒนาจะกลับไปสู่ยุคที่เรียนรู้การเขียนโค้ดกันอีกครั้ง
มีคำถามว่า “โจทย์กลับต้นไม้ทวิภาค” มีอยู่จริงหรือไม่
มีคนเห็นด้วยกับข้ออ้างที่ว่า “ยุคของไลบรารีเล็ก ๆ ที่มูลค่าต่ำได้จบลงแล้ว”
ภาษา Go นั้นแต่เดิมก็ ไม่มีนรกเรื่อง dependency อยู่แล้ว และปัญหาของ npm ก็มาจากปัจจัยด้านวัฒนธรรม
ตอนนี้การสร้าง ผลิตภัณฑ์ที่ใช้งานได้จริง มีคุณค่าและสนุกกว่าการทำยูทิลิตี
ฉันคิดว่า micro-dependency เองก็ไร้ความหมาย
เขียนรายชื่อฟังก์ชันลงใน Markdown ให้คนคัดลอกไปใช้ยังจะดีกว่า
แนวทางแบบไลบรารีขนาดเล็กที่อิง header file ของ C ใช้งานได้จริงกว่า
มีการตั้งคำถามว่า ตอนนี้ โอเพนซอร์ส แบบไหนกันแน่ที่ยังมีความหมาย
เพราะโค้ดที่เผยแพร่ออกไปสุดท้ายก็ถูก ดูดซับเป็นข้อมูลฝึก AI อยู่ดี
จึงมองว่าโมเดล source-available อาจเป็นทางเลือกแทน FOSS แบบเต็มรูปแบบ
ผู้เขียนเน้นว่า ความหมายของการมีส่วนร่วม นั้นใหญ่กว่าการถูกใส่ชื่อไว้เฉย ๆ
ฉันเชื่อว่าโอเพนซอร์สจะไม่หายไป แต่จะ แข็งแกร่งยิ่งขึ้น เสียด้วยซ้ำ
นักพัฒนาที่มีความคิดสร้างสรรค์จริงจะใช้ AI เพื่อสร้าง นวัตกรรมที่บริษัททำไม่ได้
โอเพนซอร์สยังคงเป็น พื้นที่พิสูจน์คุณค่าที่แท้จริง และเป็นพื้นที่เรียนรู้เพื่อก้าวข้ามขีดจำกัดผ่าน AI
แต่ก็มีการคาดการณ์ว่ารัฐบาลและบริษัทยักษ์ใหญ่จะพยายาม กำกับดูแลระบบ AI แบบโลคัล และในไม่ช้าก็จะมีเส้นแบ่งว่า “AI แบบใดที่ประชาชนใช้ได้”
มีการเสียเวลาไปกับการรีวิวและถกเถียงเรื่องนโยบายมากขึ้น และโดยเฉพาะใน สาขาซับซ้อนอย่างคอมไพเลอร์ AI ก็ไม่ได้ช่วยอะไรเลย
มีคนย้ำว่า “ถึงจะไม่ได้ถูกเพิ่มเป็นแพ็กเกจ แต่การ เผยแพร่โค้ดนั้นเอง ก็ยังมีคุณค่า”
ถ้า LLM มาช่วยเขียนโค้ดแทน ก็ลดภาระในการเรียนรู้ลงและทำให้โฟกัสกับหัวข้อที่ลึกขึ้นได้
ตัวอย่างเช่น มีคนเล่าว่าดูแล rubygems.org มา 14 ปี ก่อนจะจากไปเพราะผิดหวังกับ โครงสร้างที่กลายเป็นเชิงองค์กร
มีข้อชี้ให้เห็นว่า “การเขียนโค้ดด้วย AI เองก็เป็น รูปแบบหนึ่งของ dependency”
การคัดลอกแปะโดยไม่ตรวจสอบไม่ได้ต่างจากการเพิ่มไลบรารีภายนอก
ตอนสร้างโปรเจ็กต์เล็ก ๆ เมื่อต้นปี 2024
ผมเคยขอให้ claude 3.5 สร้างโมดูล store state ที่ใช้ได้ใน pure javascript
แล้วก็จำได้ว่าตกใจที่มันเขียนโค้ดออกมาได้ทั้งกระชับและรองรับสถานการณ์การย้ายระบบได้ด้วย
ผมคิดว่านี่เป็นเรื่องที่เกิดขึ้นได้ตามธรรมชาติ เพราะยิ่งเป็นไลบรารีขนาดเล็ก ก็ยิ่งมีโค้ดที่คนซึ่งคิดคล้าย ๆ กันเผยแพร่ไว้จำนวนมาก และ AI ก็ยิ่งทำมันให้ออกมาเป็นโครงสร้างแบบแผนได้ง่าย
เหมือนกับ copyparty ที่ใคร ๆ ก็คิดได้ แต่ยากที่คนคนหนึ่งจะดูแลรักษาไปได้นาน ๆ
ก็เลยน่าเสียดายอยู่เหมือนกันตรงที่ ต่อจากนี้เราอาจได้เห็นโปรเจ็กต์ที่ผ่านการขัดเกลามาอย่างสะอาดเรียบร้อยจากการผลักดันโปรเจ็กต์แบบนั้นไปจนสุดทางได้ยากขึ้น