ความเห็นของผมต่อการเขียน Bun ใหม่ด้วย Rust
(andrewkelley.me)- Andrew Kelley ผู้สร้าง Zig ตีความการเขียน Bun ใหม่ด้วย Rust ว่าเป็นเหตุการณ์ที่สะท้อนถึง ความสัมพันธ์ที่พังทลาย ระหว่าง Zig Software Foundation (ZSF) กับ Bun/Oven มากกว่าจะเป็นเรื่อง แพ้ชนะของฟีเจอร์ภาษา
- ในช่วงแรก Bun ยอมรับว่า Zig เป็นรากฐานของผลงานด้านประสิทธิภาพ และบริจาคให้ ZSF ปีละ $60,000 แต่หลังจากกลายเป็นสตาร์ตอัปที่ได้รับเงินทุนจาก VC ความไม่พอใจเรื่องการบริหารองค์กรและคุณภาพโค้ดก็เพิ่มขึ้น
- ZSF กังวลกับ การเขียนแบบแก้ขัด, การใช้ assertion มากเกินไป, และการที่เพิ่มฟีเจอร์ได้เร็วแต่จัดการบั๊กและหนี้เทคนิคได้ไม่ทันใน codebase ของ Bun อีกทั้งยังรู้สึกกดดันที่ Bun ดูเหมือนเป็นกรณีตัวแทนของ Zig
- Kelley วิจารณ์ว่าบทความเรื่องการย้ายไป Rust ของ Bun วางกรอบการลดบั๊กเป็นเรื่อง style guide vs ฟีเจอร์ภาษา ทั้งที่แก่นจริงคือเวลาทางวิศวกรรมที่ใช้กำจัดบั๊กและการควบคุมคุณภาพโค้ด
- ZSF ระบุว่ารู้สึกขอบคุณสำหรับเงินบริจาคจาก Bun แต่หลังการเข้าซื้อโดย Anthropic ทั้งเงินบริจาคและความสัมพันธ์ก็สิ้นสุดลง และมองในแง่บวกที่การเขียนใหม่ด้วย Rust ทำให้ผลประโยชน์ทางธุรกิจของ Zig กับ Bun แยกออกจากกัน
ความสัมพันธ์ช่วงแรกระหว่าง Bun กับ Zig
- Jarred เข้าร่วมชุมชน Zig เมื่อราว 5 ปีก่อน และ Kelley มองว่าเขาเป็นคนที่มี “beginner energy” สูง คือชอบลองเร็วและเรียนรู้มาก
- เมื่อ Bun เริ่มเป็นที่สนใจในฐานะ toolchain สำหรับ JavaScript ก็ทำให้ Zig ได้รับความสนใจมากขึ้นตามไปด้วย
- Kelley มองว่า Jarred น่าจะสร้างรายได้ที่มั่นคงในซานฟรานซิสโกได้แม้ใช้เพียงการระดมทุนจากชุมชน แต่เขาเลือก venture capital เพราะรับแนวคิดแบบ Thiel Fellowship และแนวทางแบบ Silicon Valley
- ช่วงแรก Bun มีท่าทีเป็นมิตรกับโครงการ Zig
- เว็บไซต์ Bun ให้เครดิต Zig สำหรับผลงานด้านประสิทธิภาพ
- ตั้งค่าบริจาครายเดือนรวมปีละ $60,000 ให้ Zig Software Foundation
- Kelley ยังประเมินด้วยว่าคำขอบคุณต่อโครงการ Zig ในบทความเรื่องการเขียน Bun ใหม่ด้วย Rust ดูจริงใจ
รอยร้าวหลังกลายเป็นสตาร์ตอัปที่ได้รับเงินทุนจาก VC
- หลัง Bun กลายเป็นสตาร์ตอัปที่ได้รับเงินทุนจาก VC นั้น Jarred ก็เปลี่ยนจากนักพัฒนาที่ร่วมเติบโตโอเพนซอร์สกับชุมชน ไปใกล้เคียงกับบทบาท ผู้ดำเนินธุรกิจ มากขึ้น
- ข้อความรับสมัครงานของ Oven บอกเป็นนัยว่าประมาณ 9 เดือนแรกจะเป็นงานที่เข้มข้นมาก และระบุว่าหาก work-life balance สำหรับคุณหมายถึง “มีเวลาที่ไม่ได้ทำงานเยอะ” ที่นี่อาจไม่เหมาะ
- Kelley บอกว่าเขาได้ยินความเห็นด้านลบซ้ำ ๆ เกี่ยวกับบทบาทผู้จัดการของ Jarred จากทั้งผู้สมัครงานและพนักงานของ Oven
- ประเด็นที่ถูกพูดถึงคือ การสื่อสารไม่เพียงพอ, ความคาดหวังที่ไม่สมจริง, ความเห็นอกเห็นใจต่ำ, และประสบการณ์ไม่มากพอ
- ผลก็คือสมาชิกในชุมชนที่อยากทำงานกับ Zig เริ่มหลีกเลี่ยง Oven และ Bun
- ยิ่ง Jarred มุ่งเน้นที่ productivity และกลยุทธ์การ exit ของสตาร์ตอัปมากเท่าไร ก็ยิ่งห่างจากวิสัยทัศน์ระยะยาวของ Kelley สำหรับ Zig มากขึ้นเท่านั้น
- ตัวอย่างเช่น Jarred เคยขอให้ให้ความสำคัญกับการทำ Language Server Protocol และการเชื่อมกับ VSCode ก่อน แต่ Kelley มีแผนที่ใหญ่กว่านั้น
ปัญหาคุณภาพโค้ดของ Bun ในมุมมองของ ZSF
- Kelley มองว่าปัญหาหลักคือ คุณภาพโค้ด
- ทีม Zig อ่านซอร์สโค้ดของโปรเจ็กต์ผู้ใช้ ตรวจดูว่าการเปลี่ยนแปลงของภาษาส่งผลต่อผู้ใช้อย่างไร และทดสอบการพังจากการเปลี่ยนแปลงกับ regression ด้านประสิทธิภาพ
- ใน codebase ของ Bun มีแนวปฏิบัติการเขียนโปรแกรมที่ ZSF กังวลเพิ่มขึ้น
- มีการสะสมของการเขียนแบบแก้ขัดอย่างต่อเนื่อง
- มี การใช้ assertion มากเกินไป
- เมื่อเทียบกับความเร็วในการเพิ่มฟีเจอร์แล้ว มีเวลาสำหรับการทบทวน, การกำจัดบั๊ก, และการลดหนี้เทคนิคน้อยเกินไป
- Kelley กังวลว่าวิธีทำงานแบบนี้ของ Bun อาจถูกนำไปผูกกับคำวิจารณ์เรื่อง memory safety ของ Zig และอยากเว้นระยะห่างทางสังคมระหว่างโครงการ Zig กับ Bun
- ZSF พยายามผลักดันให้ Bun ไปสู่แนวปฏิบัติการเขียนโปรแกรมที่ดีกว่าเดิม แต่ไม่สำเร็จ
การเข้าซื้อโดย Anthropic และการเขียนใหม่ด้วย Rust
- ภายใน ZSF เริ่มมีมุมมองว่า Bun ใกล้เคียงกับ ภาระสุทธิ (net liability) มากกว่า
- แม้ Bun จะดูเหมือนกรณีตัวแทนของ Zig แต่ในความเป็นจริงกลับใกล้เคียงกับตัวอย่างประเภท “ไม่ควรเขียนโค้ด Zig แบบนี้” มากกว่า และนั่นเป็นภาระสำหรับองค์กร
- Kelley มองว่าแผนธุรกิจของ Bun ที่ “ขายอะไรสักอย่างบน cloud” นั้นหลวมมาตั้งแต่แรก และหากวันหนึ่งถูกขายออกไป Zig ก็อาจได้รับภาพลบทางอ้อมด้วย
- หลังการเข้าซื้อโดย Anthropic ทาง ZSF รู้สึกโล่งใจ
- เงินบริจาคหยุดลงอย่างเงียบ ๆ และ ZSF ก็คาดไว้อยู่แล้ว
- ฝั่ง Bun ไม่ได้ยกเลิกประชุมรายเดือน แต่ก็ไม่ได้เข้าร่วม และถูกมองว่าความสัมพันธ์ได้สิ้นสุดลงแล้ว
- ZSF สงสัยว่าการเขียนใหม่ด้วย Rust จะตามมาในไม่กี่วัน และก็เอาใจช่วยเรื่องนี้
- หลังการเข้าซื้อโดย Anthropic เพียงแค่ความเชื่อมโยงทางอ้อมว่า Claude เขียนด้วย Bun และ Bun เขียนด้วย Zig ก็สร้างภาระให้ชุมชน Zig แล้ว
- มี drive-by slop contributions เพิ่มขึ้น
- มีผู้ใช้สายคลั่ง AI ที่คัดลอกผลลัพธ์จาก LLM มาแปะในโพสต์ฟอรัมไหลเข้ามา
- Kelley กังวลว่า Zig อาจถูกจดจำว่าเป็นภาษาโปรแกรมที่เชื่อมโยงกับ AI
- เมื่อ Jarred ประกาศการเขียนใหม่ด้วย Rust Kelley บอกว่าเขายินดีอย่างมาก และรู้สึกว่า “ไม่ใช่ปัญหาของฉันอีกต่อไป”
ข้อโต้แย้งต่อบทความเรื่องการเขียน Bun ใหม่ด้วย Rust
- Kelley มองว่า บทความเรื่องการเขียน Bun ใหม่ด้วย Rust ของ Bun เขียนได้ดี แต่ก็ชี้ปัญหาสำคัญหลายข้อ
-
แก่นของการลดบั๊ก
- บทความของ Bun วางกรอบเหมือนกับว่าหากอยากหลีกเลี่ยงบั๊ก ต้องเลือกระหว่าง style guide กับฟีเจอร์ของภาษาโปรแกรมอย่างใดอย่างหนึ่ง
- สำหรับ Kelley วิธีหลักในการกำจัดบั๊กคือการลงทรัพยากรทางวิศวกรรมเพื่อค้นหาและกำจัดมัน
- เขามองว่า TigerBeetle ใช้เวลาค้นหาและกำจัดบั๊ก พร้อมทั้งรักษาความสัมพันธ์ที่ดีกับ ZSF แต่ Bun ไม่ได้ทำทั้งสองอย่าง
-
ความขัดแย้งเรื่อง test suite
- Kelley มองว่าบทความของ Bun อ้างว่าเหตุผลที่สามารถปล่อยโค้ด 1 ล้านบรรทัดที่ไม่ได้รับการรีวิวได้ เป็นเพราะมี test suite ที่เพียงพอ
- หากเป็นเช่นนั้น เขาจึงย้อนถามว่าทำไมโค้ด Zig ถึงยังมีบั๊กน่ารำคาญมากมาย และเหตุใด test suite จึงจับบั๊กในโค้ด Zig ไม่ได้ แต่กลับจับบั๊กในโค้ดที่ไม่ได้รีวิว 1 ล้านบรรทัดได้
-
ประสิทธิภาพและ LTO
- บทความของ Bun ให้เครดิตการเพิ่มประสิทธิภาพกับ LTO แต่ Kelley บอกว่า Zig รองรับ LTO มาตลอดช่วงที่ Bun ใช้งาน
- Zig เคยเปิด LTO เป็นค่าเริ่มต้นในอดีต แต่เอาออกจากค่าเริ่มต้นเพราะมีบั๊กใน LLVM มากเกินไป ซึ่งบั๊กเหล่านั้นก็ส่งผลต่อ Rust เช่นกัน
- Kelley มองว่ามีโอกาสสูงที่ ZSF เคยแนะนำให้เปิดใช้ LTO แต่ Bun ไม่ได้ทำตาม
-
fuzzing
- บทความของ Bun สื่อราวกับว่ามีการทำ fuzzing กับโค้ด Zig อย่างจริงจัง แต่ Kelley บอกว่าในระหว่างการโทร ทีม Bun กลับพูดว่าไม่ได้ทำ fuzzing กับอะไรเลย
-
ขนาดไบนารีและ
comptime- บทความของ Bun ยกงานวิศวกรรมหลายอย่างที่ช่วยลดขนาดไบนารีมาเป็นเหตุผลสนับสนุนการเขียนใหม่ด้วย Rust แต่ Kelley มองว่างานเหล่านั้นไม่ได้เกี่ยวกับตัวการเขียนใหม่โดยตรง
- มันใกล้เคียงกับงานวิศวกรรมที่ควรทำกับ codebase Zig ตั้งแต่แรกมากกว่า
- ZSF เตือนมาหลายปีเกี่ยวกับการใช้
comptimeมากเกินไปใน Bun และยังสร้าง ฟีเจอร์ time report เพื่อให้ตรวจสอบการใช้comptime/inlineและเวลาในการคอมไพล์ได้ด้วย
-
ความเร็วในการคอมไพล์
- Kelley ชี้ว่าบทความของ Bun ไม่ได้พูดถึง ความเร็วในการคอมไพล์ เลย
- โปรเจ็กต์คอมไพเลอร์ Zig มีขนาดประมาณ 600,000 บรรทัด ใกล้เคียงกับ Bun ก่อนเขียนใหม่
- จากการวัดของ Kelley การ build จากศูนย์ด้วยแคชสะอาดใช้เวลา 16 วินาที และหลังเปิด incremental compilation แล้ว การแก้ไขแต่ละครั้งถัดไปใช้เวลา 90ms
- เขาจึงตั้งคำถามว่าตัวเลขที่เทียบกันได้ของ Bun หลังเขียนใหม่ด้วย Rust คือเท่าไร
บทสรุปของ Kelley
- สำหรับ Kelley ปัญหาหลักไม่ใช่ฟีเจอร์ของภาษาโปรแกรม แต่เป็น ความสัมพันธ์ที่พังทลาย
- ZSF รู้สึกขอบคุณอย่างจริงใจต่อเงินบริจาคที่ได้รับจาก Bun และนำเงินนั้นไปใช้กับ ค่าตอบแทนผู้มีส่วนร่วมใน Zig
- Kelley ย้ำว่าเขาไม่ได้ต้องการวิจารณ์ Jarred ในเชิงร้ายเป็นการส่วนตัว
- แม้ Jarred จะมีรสนิยมและเป้าหมายชีวิตต่างจากเขา แต่ Kelley ก็มองว่า Jarred สร้างชีวิตแบบที่ตัวเองต้องการได้สำเร็จ
- เขายอมรับว่า Jarred มีความสุขและประสบความสำเร็จ และยืนยันว่าไม่ได้มีเจตนาร้าย
- อย่างไรก็ตาม Kelley รู้สึกยินดีที่ ผลประโยชน์ทางธุรกิจ ของ ZSF กับ Bun ไม่ได้พันกันอีกต่อไป
- เขามองว่าเมื่อการถกเถียงสาธารณะเรื่องดีหรือไม่ดีของการเขียนใหม่ด้วย Rust ในฐานะเกณฑ์เลือกภาษาสิ้นสุดลง ปฏิสัมพันธ์ระหว่างทั้งสองฝ่ายก็จะสิ้นสุดลงด้วย
2 ความคิดเห็น
พออ่านบทความนี้แล้วก็รู้สึกว่าไม่อยากใช้ทั้ง zig และ bun เลยนะ
ความคิดเห็นจาก Hacker News
ผมได้เรียนรู้อะไรเยอะมากจากการอ่านโค้ดของ Andrew และอย่างที่ต้นฉบับก็บอกไว้ ถ้าไม่มี Zig ก็จะไม่มี Bun
สำหรับประเด็นที่ว่า “ในบทความอ้างว่ามีการ fuzz โค้ด Zig แต่ในคอลทีม Bun ทั้งทีมบอกว่าไม่ได้ fuzz อะไรเลย เรื่องนี้ดูเหมือนเป็นการบิดเบือนอย่างโจ่งแจ้ง” นั้น มี PR สำหรับการรวม Fuzzilli อยู่: https://github.com/oven-sh/bun/pull/24826
และยังมี PR ที่ merge แล้วเพื่อแก้ปัญหาที่ Fuzzilli พบในโค้ด Zig ของ Bun ด้วย: https://github.com/oven-sh/bun/pull/28926, https://github.com/oven-sh/bun/pull/28934, https://github.com/oven-sh/bun/pull/29255, https://github.com/oven-sh/bun/pull/29210, https://github.com/oven-sh/bun/pull/29199
ถ้าค้นหา “Fuzzilli” ก็จะเจอ PR เพิ่มอีก: https://github.com/search?q=repo%3Aoven-sh%2Fbun+is%3Apr+Fuz...
zig build test --fuzzหรือก็คือ fuzzer ที่มากับ Zig เอง และนั่นน่าจะเป็นเครื่องมือในขอบเขตที่เขารับผิดชอบผมไม่ได้บูชาใครทั้งนั้น แค่สงสัยเพราะบทสนทนาทั้งหมดดูเหมือนกำลังแย่ลงแทนที่จะไปในทางที่ดีขึ้น
การที่โดนโหวตลบเพียงเพราะถามเพื่อเช็กข้อเท็จจริงก็ดูมีนัยพอสมควร อาจมีคำตอบง่าย ๆ อย่าง “จนไม่นานมานี้ยังไม่ได้ใช้ fuzzer ดังนั้นทั้งคู่จึงพูดถูก” ก็ได้ แต่ผมไม่รู้ เลยถามเฉย ๆ
บทความนี้เป็น เรื่องที่ดูไม่เป็นมืออาชีพและน่าอายสำหรับ Zig
ผมแทบไม่รู้อะไรเกี่ยวกับ Jarred เลย แต่บทความของเขาที่อ่านเมื่อวานให้บรรยากาศเหมือนขอบคุณ Zig และตอนนี้ก็เห็นว่าเขาบริจาคเงินจำนวนมากให้ Zig ด้วย
บทความนี้ทั้งชิ้นกลับโจมตีเขาแบบเปิดเผยและเป็นการส่วนตัว เพียงเพราะเขาเลือกใช้ผลิตภัณฑ์อื่น
ถ้า Andrew คิดว่าบทความนี้จะช่วยแก้ต่างให้ Zig ก็ดูแปลก เพราะในความเป็นจริงมันมีแต่ทำให้ดูเด็ก และไม่แน่ว่าเขาอาจแค่อยากโจมตี Jarred ก็ได้
ทุกคนต้องกลายเป็นแบรนด์ที่เดินได้ คอยกรองคำพูดตลอดเวลา เดินบนเปลือกไข่ และหลบอยู่หลังภาษาบริษัทเพื่อให้ดู “เป็นมืออาชีพ” งั้นหรือ?
โลกตอนนี้ไม่ได้ต้องการบทสนทนาที่จริงใจน้อยลง แต่ต้องการมากขึ้น และปฏิสัมพันธ์ออนไลน์ก็ดูจะยิ่งขาดความจริงใจขึ้นเรื่อย ๆ
Zig แทบจะเป็น โปรเจ็กต์ของคนคนเดียว และคนคนนั้นก็ดูจะตัดสินใจแบบไม่มั่นคงมากขึ้นเรื่อย ๆ
แน่นอนว่าเป็นโปรเจ็กต์ของเขา เขาจึงมีสิทธิ์ แต่ถ้าคุณเป็นบริษัทที่มีมูลค่าเกือบระดับล้านล้าน ก็คงไม่อยากรับ ความเสี่ยงในซัพพลายเชน แบบนี้
สำหรับ Anthropic การตัดไฟแต่ต้นลมย่อมดีกว่าลงทุนกับ ecosystem ของ Zig ต่อไป หลังจากเห็นความเสี่ยงที่ not-so-BDFL จะทำอะไรเกินเลย
ในทางกลับกัน ถ้าดูจากขนาดการนำไปใช้และระยะเวลาพัฒนาแล้ว test coverage ของ Zig ต่ำจนน่าอาย
ท่าทีของ Zig ต่อ AI นั้นเด็กมาก ทั้งที่มีโอกาสได้ประโยชน์มาก แต่กลับไม่ยอมพิจารณาความเป็นไปได้ในการใช้งานเลย
การพยายามกัน PR spam ออกไป กับการมัดมือตัวเองและไม่ใช้ AI เลยแม้แต่ในงานภายในที่ง่ายและคุ้มค่าที่สุด เป็นคนละเรื่องกัน
คุณยังใช้ AI คัดกรองบั๊กที่น่าจะเป็นของจริงจาก PR spam ได้ด้วย แต่เพราะไม่ยอมใช้ตัวช่วยอะไรเลย บั๊กจริงจึงถูกปล่อยทิ้งไว้นานเกินความจำเป็น
น่าเสียดายที่มีนักพัฒนาโอเพนซอร์สจำนวนมากที่สบายใจกับการเขียนแบบนี้เกินไป และนี่ก็เป็นหนึ่งในเหตุผลที่ผมเลิกมีส่วนร่วมกับโอเพนซอร์ส
ถ้าเป็นที่ทำงานที่มีเหตุผล การทำตัวแบบนี้ก็คงถูกไล่ออก อย่างน้อยก็ต้องโดนลงโทษทางวินัย
ประโยคที่ว่า “ไม่ได้เป็นการวิจารณ์ Jarred ในเชิงส่วนตัว” เป็นคำพูดที่แรงพอสมควร เมื่อไปอยู่ท้ายบทความที่แทบทั้งหมดดูเหมือนเป็นการวิจารณ์ส่วนตัวแบบบาง ๆ อำพรางไว้
ประมาณว่าบอกว่าใครสักคนมี พลังแบบมือใหม่ แล้วห่อด้วยคำชมปลอม ๆ ว่าเป็น “คนที่ล้มเหลวแล้วเรียนรู้” หรือเขียนว่ามีข่าวลือเรียกว่า “ผู้จัดการห่วยแตก”
มันใกล้เคียงกับการบอกว่า “ฉันไม่ได้บอกว่าคนนี้แย่นะ แต่จะเขียนลงบล็อกว่าทุกคนเห็นตรงกันว่าคนนี้แย่” และต่อให้เป็นเรื่องจริงก็ยังดูรสนิยมแย่มาก
ฉันก็เคยทำงานกับผู้จัดการแย่ ๆ แต่ไม่ได้เกลียดเป็นการส่วนตัว
“เครือข่ายข่าวลือนั้นใหญ่และแข็งแรง เต็มไปด้วยองุ่นฉ่ำ ๆ และน้ำจากองุ่นทุกลูกก็ส่งสารเดียวกัน: Jarred เป็นผู้จัดการห่วยแตก”
“Jarred เขียนอะไรห่วย ๆ แบบนี้มาตั้งแต่ก่อนจะใช้ LLM แล้ว”
เป็นบทความที่ดูเด็กอย่างประหลาด ฉันก็ชอบงานเขียนที่ไม่ผ่านฟิลเตอร์แบบองค์กรและพูดสิ่งที่คิดจริง ๆ แต่งานเขียนแบบนั้นก็มักเผยให้เห็นด้วยว่าคนเขียนคิดและขับเคลื่อนอย่างไร
ถ้าเป็นภาวะผู้นำที่ดี ต่อให้เอาฟิลเตอร์แบบองค์กรมาทิ้ง ผลลัพธ์ก็ควรยังดูเป็นมืออาชีพอยู่ แต่งานชิ้นนี้เผยอะไรที่แย่กว่านั้นมาก
ถ้าสถานการณ์ปลอดภัยและไม่มีใครต้องพึ่งพา ก็ถือว่าปกติดีทั้งหมด แค่มันไม่เหมือนงานบริหารจัดการ
ช่วงที่บอกว่า ZSF ถอนหายใจด้วยความโล่งอกเมื่อการเข้าซื้อกิจการของ Anthropic เสร็จสิ้นนั้นน่าสะดุดใจมาก หมายความว่าแม้ตอนที่เงินบริจาคหยุดลงเงียบ ๆ บัญชีก็ยังเตรียมไว้แล้ว และตอนที่อีกฝ่ายไม่มายกเลิกประชุมรายเดือนทั้งไม่โผล่มาเลยก็ไม่ได้แปลกใจ ความสัมพันธ์มันจบไปแล้ว
ฉันเคยเห็นเรื่องแบบนี้หลายครั้ง พอโปรเจกต์หรือองค์กรถูกซื้อกิจการ “สิ่งดี ๆ” ที่พวกเขาเคยทำไม่ได้จบลงแบบเอิกเกริก แต่มันค่อย ๆ หายไปเพราะผู้สนับสนุนเริ่มเมินเฉยเงียบ ๆ
ก็ดีแล้วที่พวกเขา อ่านสัญญาณและเตรียมตัว นี่เป็นบทเรียนที่ดีมากโดยไม่ต้องไปเรียนรู้เองแบบเจ็บตัว และโปรเจกต์เสรี/โอเพนซอร์สที่พึ่งผู้บริจาครายใหญ่แค่หนึ่งหรือสองรายควรระวังไว้
คิดว่าเราจะได้เห็นเรื่องแบบนี้มากขึ้นอีกมากในระบบนิเวศเครื่องมือสำหรับนักพัฒนา
ที่อื่นในเธรดนี้มีปฏิกิริยาแรง ๆ ต่อโทนของบทความอยู่แล้ว แต่บทความนี้ทำให้ ความคาดหวังที่มีต่อ Zig ลดลง
ดราม่าน่าสนุก และความจริงใจของ Andrew อาจน่านับถือก็ได้ แต่ความเป็นมืออาชีพที่โปรเจกต์จริงจังต้องการไม่ใช่แบบนี้
ถึงจะดูน่าเบื่อและไม่หวือหวา แต่กับเทคสแต็กและการดูแลมัน ฉันอยากได้ความมั่นคงแบบนั้น
Jarred อาจเป็นผลขาดทุนสุทธิก็ได้ แต่ Bun ก็เป็นโปรเจกต์ใหญ่มากที่ใช้ Zig และการที่โปรเจกต์นั้นจากไปไม่ใช่เรื่องดีต่อ Zig มากอย่างที่ Andrew พูด
เขาดูเหมือนให้ความสำคัญกับความบริสุทธิ์และอุดมการณ์สูงกว่าการเติบโตของภาษาเสียอีก สำหรับภาษาโปรแกรมที่จริงจัง การยอมรับใช้งานและมวลวิกฤต ก็เป็นปัจจัยสำคัญเหมือนกัน
มันคล้ายกับการบอกว่า Linux คงเป็นโปรเจกต์จริงจังไม่ได้เพราะสไตล์อีเมลของ Linus
แถมเขาก็ไม่ได้เขียนในที่ทางทางการด้วยซ้ำ แต่เขียนในบล็อกส่วนตัว
สิ่งสำคัญคือสิ่งที่เขาสร้างคุณูปการให้ภาษานั้นไม่ใช่หรือ?
ทำไมการยอมรับใช้งานและมวลวิกฤตถึงต้องสำคัญเสมอ? ทำไมถึงจะสร้างภาษาที่สอดคล้องกับความบริสุทธิ์และอุดมการณ์ที่ตัวเองต้องการไม่ได้ แม้ต้องแลกกับการยอมรับใช้งานที่กว้างขึ้น?
ทำไมทุกอย่างต้องถูกปรับให้เหมาะกับการเติบโตของผู้ใช้และการรับรู้ในวงกว้าง?
ต่อให้พวกเขาจะแกล้งทำเหมือนว่าใช่ก็ตาม
บทความนี้สดใหม่มาก น่าจะมีแรงยั่วยวนสูงมากที่จะตอบโต้ ถ้อยคำแบบ PR ในบทความของ Bun ด้วยภาษาที่ขัดเกลากว่า แต่เขาไม่ได้ทำแบบนั้น
เขาสามารถใส่ข้อเท็จจริงที่ทำให้ Jarred ดูแย่พร้อมซ่อนความเห็นตัวเองไว้อย่างระมัดระวังได้ เช่น “ได้ยินว่าคนเรียกเขาว่าผู้จัดการห่วยแตกนะ ไม่ใช่ว่าฉันเรียกเอง คนอื่นต่างหากที่พูด” แต่กลับเลือกจะพูดตรง ๆ ซึ่งฉันชอบ
เพียงแต่เนื้อหาของนิสัยและความคิดนั้นค่อนข้างรับได้ยาก
การที่บทความเอาส่วนแรกและส่วนที่ใหญ่ที่สุดไปทุ่มให้กับ การโจมตีตัวบุคคล แบบคาดเดา ทำให้ยากที่จะเชื่อถือสิ่งที่ผู้เขียนพูด
นี่น่าจะเป็นโอกาสดีในการสรุปข้อดีของ Zig ช่วงหลังฉันเพิ่งอยากลองเรียน Zig เพราะบทความแนวชวนเชื่อและสร้างแรงบันดาลใจของ mitchellh แต่บทความนี้กลับทำให้ความอยากเรียน Zig หายไป
ฉันเห็นค่อนข้างชัดว่า Andrew มอง Jarred และวิธีทำงาน/ท่าทีต่อการทำงานของเขาอย่างไร แต่ยังไม่ชัดว่าอะไรคือการโจมตีตัวบุคคล อะไรคือการคาดเดา หรืออะไรไม่ใช่
การโจมตี Jarred ในเชิงส่วนตัวดูเหมือนจะไม่ได้ช่วยอะไรนักต่อข้อโต้แย้งที่ว่าควรใช้ Zig
น่าจะโฟกัสที่ตัวภาษา มากกว่าจะใช้คำอย่าง “ผู้จัดการห่วย ๆ”
พูดตามตรง พออ่านโพสต์นี้แล้วก็ทำให้อยากหลีกเลี่ยงทั้ง Andrew พอ ๆ กับ Jarred
และก็เป็นสิ่งที่คนจำนวนมากในชุมชนได้เห็นมากับตาในช่วงหลายเดือนที่ผ่านมา
การพูดว่า “Jarred ทำให้คนจำนวนมากในชุมชนของเราถอยห่างออกไปจากบทบาททางอาชีพของเขา และเราอยากรักษาระยะห่าง” ไม่ได้แปลว่า “Jarred เป็นคนแย่ในชีวิตส่วนตัว”
แน่นอนว่าในวงการนี้ ถ้าคิดถึงว่าเหล่า VC เหลือพื้นที่ชีวิตส่วนตัวนอกงานกันมากแค่ไหน มันอาจถูกตีความว่าแทบจะหมายถึงอย่างเดียวกันได้ แต่ก็ไม่ใช่ปัญหาของ Andrew
ไม่ได้จะปกป้องสไตล์การเขียนของ Andrew นะ เวลาเขาพูดกับผู้อ่านที่มีความหลากหลายทางระบบประสาทในวงกว้างกว่านี้ เขาอาจจะปกปิดความเป็น neurodiversity ของตัวเองได้มากกว่านี้
ถึงอย่างนั้นนี่ก็เป็นโปรเจกต์ของเขา และชุมชนของเขาก็รู้ลักษณะนี้กันอยู่แล้ว นี่ก็เป็นตัวแปรที่รับรู้กันดี
แทนที่จะใส่นัยรองว่า “Andrew กำลังพยายามลอบสังหารบุคลิกของ Jarred” ลองกลับไปอ่านใหม่โดยตั้งต้นว่า Andrew พูดจากใจจริงทั้งหมดก็น่าจะช่วยได้
นี่ไม่ใช่ครั้งแรกที่ฉันเห็นเขาเขียนอะไรที่ให้ความรู้สึกมุ่งร้ายอย่างเปิดเผย มันไม่ใช่ระดับที่พอจะเรียกอย่างอ้อม ๆ ว่า “พูดตรง” ได้
“การเงียบไว้ไม่ใช่ทางเลือกเหรอ?”
ถึงจะบอกว่า “ไม่มีการวิจารณ์ Jarred ในเชิงส่วนตัว” แต่ทั้งบทความก็ให้ความรู้สึกเหมือนเป็น การวิจารณ์ Jarred ในเชิงส่วนตัว
ต่อให้มันเป็นเรื่องจริง ก็ไม่ฉลาดนักที่จะเผยแพร่มันในรูปแบบนี้ ถ้าเป้าหมายคือปกป้อง Zig ก็น่าจะทำได้ด้วยวิธีที่ไม่พุ่งเป้าเป็นการส่วนตัวขนาดนี้
งานทั้งหมดในการเขียน Bun ใหม่จาก Zig เป็น Rust นี้ดูเหมือนเป็น หมากการตลาด ครั้งใหญ่
ถ้า Anthropic AI ทรงพลังขนาดนั้นจริง ทำไมไม่ให้มันรับงานที่ทะเยอทะยานกว่านี้ เช่น แก้บั๊กและออกแบบ codebase Zig เดิมของ Bun ใหม่ เพื่อไม่ใช่แค่แก้บั๊กปัจจุบัน แต่ยังป้องกันไม่ให้บั๊กลักษณะคล้ายกันเกิดขึ้นอีกในอนาคต?
นั่นไปทำร้ายความรู้สึกของ Anthropic
พอจะจินตนาการได้ว่า Anthropic อาจอยากซื้อ Bun อยู่แล้วโดยไม่ต้องมีลูกเล่นแบบนี้ก็ได้
ไม่กี่สัปดาห์ต่อมา Bun ก็เริ่มการเขียนใหม่ด้วย Rust แม้จะไม่ได้พูดชัด ๆ แต่ฉันคิดว่าสองเหตุการณ์นี้อาจเกี่ยวข้องกัน
ฉันไม่แน่ใจว่าแบบไหนแย่กว่ากัน