Cloudflare เปิดตัว vinext ที่ใช้ AI รีอิมพลีเมนต์ Next.js บน Vite ใหม่ภายใน 1 สัปดาห์
(blog.cloudflare.com)วิศวกรของ Cloudflare คนหนึ่งเปิดเผยโปรเจกต์ 'vinext(vee-next)' ที่เขียนโครงสร้างพื้นฐานอันซับซ้อนของ Next.js ขึ้นใหม่ทั้งหมดบนพื้นฐานของ Vite โดยอาศัยความช่วยเหลือจาก AI (Claude) เป็นความพยายามเชิงทดลองเพื่อแก้ปัญหาการดีพลอยและการบิลด์เรื้อรังของ Next.js
สรุปประเด็นสำคัญ
- แรงจูงใจ: แม้ Next.js จะยอดเยี่ยม แต่เพราะพึ่งพา Turbopack ซึ่งเป็นเครื่องมือบิลด์ของตัวเองอย่างมาก จึงเกิด "คอขวดด้านการดีพลอย" ที่ต้องผ่านอะแดปเตอร์ซับซ้อนอย่าง OpenNext เมื่อต้องการดีพลอยไปยังสภาพแวดล้อม serverless เช่น Cloudflare Workers หรือ AWS Lambda
- กระบวนการพัฒนา: ใช้ AI อย่างจริงจังจนพัฒนาเสร็จภายใน 1 สัปดาห์ ตรวจสอบด้วยการพอร์ตชุดทดสอบจาก Next.js และชุด compatibility tests ของ OpenNext รวมเป็น Vitest กว่า 1,700 รายการ / Playwright E2E 380 รายการ และผ่านการทดสอบ API surface ของ Next.js 16 ได้ 94%
- วิธีแก้: แทนที่จะไปแก้ผลลัพธ์ที่ Next.js สร้างขึ้น ก็เลือกอิมพลีเมนต์ API ของ Next.js (เช่น Routing, RSC, SSR เป็นต้น) ขึ้นใหม่บน Vite ตั้งแต่ต้น
- ผลลัพธ์: ใช้ค่าโทเค็น AI ราว $1,100 และทำเสร็จภายในหนึ่งสัปดาห์ โดยเมื่อเทียบกับ Next.js แล้วมีความเร็วในการบิลด์สูงสุดมากกว่า 4 เท่า และขนาดไคลเอนต์บันเดิลเล็กลง 57%
- จุดเด่นทางเทคนิค: รีอิมพลีเมนต์ API หลักอย่าง next/link, next/navigation, Server Actions, RSC(React Server Components) ในรูปแบบ Vite plugin ทำให้สามารถย้ายแอป Next.js เดิมมาได้แทบจะตรง ๆ
ความสำคัญ: นี่เป็นการพิสูจน์ว่าแม้แต่เฟรมเวิร์กขนาดใหญ่ก็สามารถถูกแทนที่ด้วยเวอร์ชันที่ "เบาและเร็วกว่า" ได้ในเวลาอันสั้น หากมีชุดทดสอบที่นิยามไว้อย่างดีและมี AI ช่วยเหลือ
7 ความคิดเห็น
รู้สึกว่าเพราะ Next.js เป็นโอเพนซอร์ส และมีโครงสร้างกับเป้าหมายที่ค่อนข้างชัดเจน เลยทำให้เกิดความพยายามแบบนี้ขึ้นได้
โดยเฉพาะเมื่อมีทั้งชุดทดสอบและข้อมูลอ้างอิงที่อุดมสมบูรณ์ แนวทางที่ใช้การทำให้ผ่านการทดสอบเป็นตัวชี้นำการพัฒนาก็ดูเป็นสิ่งที่ทำได้จริงมากพอสมควร
ความเร็วในการพัฒนาของ AI น่าทึ่งจริง ๆ
งานยังคงเสี่ยงอยู่เหมือนเดิมเลยนะ.. หรือควรเปลี่ยนสายไปทำงานภาคสนามดี.. ฮือๆ
วิธีรีอิมพลีเมนต์ Next.js ใหม่ด้วย AI ภายในหนึ่งสัปดาห์
โปรดดูเวอร์ชันที่ GN+ สรุปไว้ด้วย
แม้ในบทความบล็อกจะไม่ได้ใช้โทนแบบนั้น แต่ก็ให้ความรู้สึกว่าการจงใจตัดฟีเจอร์การสร้างเว็บไซต์แบบสแตติกออกไปมีนัยว่า ถ้าจะทำเว็บไซต์แบบสแตติกก็ให้ใช้ Astro
Astro*
รู้สึกว่าน่าเสียดายนิดหน่อย ถ้าเอาความพยายามตลอด 1 สัปดาห์นั้นไปช่วยลงแรงกับ opennext คงจะดีกว่า
แต่เดิมทิศทางที่มุ่งไปก็ต่างกันอยู่แล้ว
OpenNext คือการแปลงผลลัพธ์การบิลด์ของ Next.js ส่วน vinext คือการเขียนใหม่ทั้งระบบโดยแทนที่ turbopack ด้วย Vite
ความคิดเห็นจาก Hacker News
ฉันชอบทั้ง Next และรัก Vite เหมือนกัน แต่รู้สึกว่าทีม Next ไปโฟกัสฟีเจอร์หวือหวาสำหรับผู้ใช้แค่ 0.1% แล้วเมินอีก 99.9% การ fork ครั้งนี้ของ Cloudflare ดูเหมือนจะช่วยคลายความคาใจนั้นได้ เรื่องประสิทธิภาพเป็นสิ่งที่คอมมูนิตี้ Next อยากได้มานาน และตอนนี้ก็เหมือนในที่สุดมีคนฟัง ถ้ามันสำเร็จ ที่บริษัทฉันก็อยากลองใช้มาก
ผมคิดว่านี่เป็นตัวอย่างที่ดีของ แรงจูงใจในโอเพนซอร์สยุค AI ยิ่งทำเอกสารดีเท่าไร ยิ่งนิยามสัญญาการทำงานไว้ชัดเท่าไร คนอื่นก็ยิ่งคัดลอกได้ง่าย ถ้า Cloudflare ไม่ได้อาศัยชุดทดสอบของ Next การ fork แบบนี้คงเป็นไปไม่ได้ Server Components ยังเป็นแพตเทิร์นที่คนประเมินค่าต่ำเกินไปอยู่ และความพยายามที่จะทำให้ DX เรียบง่ายขึ้นก็เป็นเรื่องน่ายินดี Next ซับซ้อนขึ้นเพราะการขยายแบบค่อยเป็นค่อยไป แต่เฟรมเวิร์กใหม่สามารถออกแบบให้ยืดหยุ่นได้ตั้งแต่แรก
ของที่ยังรัน “Hello world” ไม่ได้ แต่บอกว่ารีอิมพลีเมนต์แบบ 'from scratch' ถือว่าเวอร์ไปหน่อย ถ้าเอาชุดทดสอบของต้นฉบับมาใช้ตรง ๆ ก็ยากจะเรียกว่าเขียนใหม่ทั้งหมด มันเหมือนเอาย่อหน้าแรกของนิยายดังมาเปลี่ยนคำไม่กี่คำแล้วอ้างว่าเขียนขึ้นใหม่
น่าสนใจที่ Cloudflare เพิ่งซื้อ Astro ไปเมื่อเดือนก่อน แล้วตอนนี้ก็มาทำซ้ำ Next.js ด้วย AI ถ้ามันทำได้ง่ายขนาดนั้น แล้วทำไมถึงซื้อ Astro? ก็น่าจะเป็นเพราะต้องการครอบครอง วิสัยทัศน์และภาวะผู้นำ ของเฟรมเวิร์กมากกว่า
ก่อนหน้านี้ Next.js เคยมี ช่องโหว่ remote code execution มาก่อน ดังนั้นเวอร์ชันที่ AI สร้างขึ้นฉันคงยังเลี่ยงไปก่อนสักพัก
พอมีคนบอกว่า “AI รีอิมพลีเมนต์ X ได้แล้ว” ฉันจะ สงสัย ไว้ก่อนเสมอ เพราะรายละเอียดพวก edge case และการแก้บั๊กที่สะสมมาหลายปีมักจะหายไป ถ้าผ่านทุกการทดสอบก็ค่อยยอมรับ แต่ถ้าไม่ก็เชื่อยาก
โปรเจ็กต์นี้เป็น การทดลอง AI ที่น่าสนใจที่สุด เท่าที่ผมเคยเห็นมา ผมตกใจที่มันเล็กกว่าตัวโค้ดเบสของ Next.js มาก แต่ก็ยังสงสัยว่ามันแค่ผ่านชุดทดสอบหรือเปล่า เช่นการทำ form ก็ต่างออกไปมาก ถึงอย่างนั้นก็ยังน่าประทับใจ
ผมไม่เห็นด้วยกับคำพูดที่ว่า “abstraction ในซอฟต์แวร์เกิดขึ้นเพราะมนุษย์รับมือกับความซับซ้อนไม่ไหว” abstraction มีไว้เพื่อ จับแก่นของความเป็นจริง และเพิ่ม การนำกลับมาใช้ซ้ำ ส่วนการแบ่งเป็นชั้น ๆ ก็เป็นแค่เรื่องของการแยกความรับผิดชอบ
น่าสนใจที่ต้นทุนทั้งหมดอยู่ที่ โทเคนราว 1,100 ดอลลาร์
แก่นจริง ๆ อยู่ที่ จังหวะเวลาของการซื้อ Astro Cloudflare ซื้อ Astro ไปเมื่อเดือนก่อน และครั้งนี้ก็ประกาศทำซ้ำ API ของ Next.js ด้วย AI นี่คือสัญญาณของการ รื้อ lock-in ของเฟรมเวิร์ก เท่ากับมอบทางหนีให้ผู้ใช้ Next.js ที่ติดกับ Vercel อยู่สองทาง — โปรเจ็กต์ใหม่ไป Astro, โปรเจ็กต์เดิมใช้ Vinext ต่อให้ตอนนี้ยังไม่พร้อมใช้ production มันก็เป็นสารที่สั่นคลอน ความสามารถในการแข่งขันด้านราคา ของ Vercel ได้