- ในการสนทนากับ Nathan, Max และ Antonio ผู้ก่อตั้งร่วมของ Zed มีการพูดถึงคำถามเรื่องเหตุผลของการเลือกเชิงเทคนิค ความสำคัญของ Rust และเจตนาที่จะเป็นเจ้าของเทคโนโลยีสแต็กทั้งหมด
- พวกเขาตอบคำถามเหล่านี้อีกครั้ง และแชร์เนื้อหาที่ได้ตัดต่อจากการสนทนานาน 1 ชั่วโมง
จาก Atom สู่ Zed: การเดินทาง 10 ปี
- ผู้ก่อตั้งทั้งสามได้ร่วมงานกันมาประมาณ 10 ปี และหลังจากพัฒนา Atom แล้วตัดสินใจสร้าง Zed
- วิสัยทัศน์ของ Zed คือการกำหนดวิสัยทัศน์เริ่มต้นของ Atom ให้พัฒนาขึ้นและชัดเจนขึ้น การเลือกทางเทคนิคจึงเชื่อมโยงอย่างใกล้ชิดกับวิสัยทัศน์นี้
- การเลือกเทคโนโลยีอย่าง Rust, การเร่งด้วย GPU และ CRDTs มีความสำคัญต่อการบรรลุเป้าหมายของ Zed
การเลือกทางเทคนิคและวิสัยทัศน์
- วิสัยทัศน์ของ Zed คือการสร้างตัวแก้ไขข้อความที่มีน้ำหนักเบา แต่สามารถให้ฟังก์ชันเหมือน IDE ได้เมื่อจำเป็น
- ขณะพัฒนา Atom ในยุคนั้น วิสัยทัศน์ไม่สามารถลงตัวได้ครบถ้วนเพราะข้อจำกัดทางเทคนิคและความเชี่ยวชาญทางเทคโนโลยีของนักพัฒนาที่ยังไม่สูงพอ
- เมื่อ Rust เข้ามา มีโอกาสในการเอาชนะข้อจำกัดเหล่านั้น
ข้อจำกัดของ Atom และการเริ่มต้นใหม่
- ในการพัฒนา Atom ข้อจำกัดของ JavaScript และข้อจำกัดของเทคโนโลยีเว็บก่อให้เกิดปัญหาด้านประสิทธิภาพ
- ในปี 2017 ทีมงานรู้สึกว่าบริการเดิมไม่ตอบโจทย์และตัดสินใจเริ่ม Zed ใหม่ตั้งแต่ต้น
- เป้าหมายคือยกระดับประสิทธิภาพด้วย Rust และการเร่งด้วย GPU
ผลกระทบของ Rust
- Rust ให้การนามธรรมระดับสูงพร้อมกับประสิทธิภาพที่ยอดเยี่ยม
- แนวคิด "Zero-cost abstractions" ของ Rust มีความสำคัญต่อการพัฒนาตัวแก้ไขข้อความ
- แม้ว่า C++ หรือ C จะสร้างสมรรถนะใกล้เคียงกันได้ แต่ Rust มอบประสบการณ์การพัฒนาที่ง่ายและปลอดภัยกว่าให้กับนักพัฒนา
ความสำคัญของการเป็นเจ้าของสแต็กเทคโนโลยีทั้งหมด
- ทีมพัฒนา Zed ได้เป็นเจ้าของสแต็กเทคโนโลยีทั้งหมด ตั้งแต่ tree-sitter ไปจนถึง GPUI ซึ่งเป็น UI framework ที่เร่งด้วย GPU
- การเป็นเจ้าของสแต็กทั้งหมดเป็นการเลือกที่ตั้งใจไว้ และทำให้สามารถควบคุมทั้งประสิทธิภาพและฟีเจอร์ได้อย่างครบถ้วน
การสร้างสมดุลระหว่างการสร้างนามธรรมแบบสมบูรณ์แบบและความเร่งด่วน
- สำคัญที่ต้องสร้างเฉพาะสิ่งที่จำเป็น และเท่าที่จำเป็น แล้วค่อยทบทวนใหม่ตามสิ่งที่ได้เรียนรู้เมื่อจำเป็น
- ส่วนสำคัญควรได้รับการลงทุนเวลาอย่างเพียงพอเพื่อรับประกันคุณภาพและประสิทธิภาพที่สูง
ความสัมพันธ์ระหว่างเครื่องมือนักพัฒนาและเทคโนโลยี
- ผู้ใช้เครื่องมือนักพัฒนาอาจให้ความสนใจด้านเทคโนโลยีมากขึ้น และเทคโนโลยีนี้เองที่ส่งผลต่อประสิทธิภาพและฟีเจอร์ที่ผู้ใช้ได้รับ
- Zed ที่เขียนด้วย Rust ทำให้นักพัฒนาสามารถมีส่วนร่วมได้ง่ายขึ้น และช่วยเพิ่มการมีส่วนร่วมของชุมชน
ความเห็นของ GN⁺
- กระบวนการพัฒนา Zed แสดงให้เห็นว่า การเลือกทางเทคนิคมีความสำคัญอย่างมากต่อวิสัยทัศน์และประสิทธิภาพของผลิตภัณฑ์ การเลือกภาษาโปรแกรมสมัยใหม่อย่าง Rust แสดงให้เห็นว่าทั้งผลผลิตของนักพัฒนาและประสิทธิภาพของผลิตภัณฑ์สามารถดีขึ้นได้พร้อมกัน
- การเป็นเจ้าของเทคโนโลยีสแต็กทั้งหมดทำให้ทีม Zed มีความยืดหยุ่นในการเพิ่มประสิทธิภาพและพัฒนาฟีเจอร์ ซึ่งเป็นบทบาทสำคัญในการสร้างตัวแก้ไขข้อความที่มีประสิทธิภาพสูง
- สำหรับเครื่องมือนักพัฒนา เทคโนโลยีที่ใช้มีผลต่อประสบการณ์ผู้ใช้ขั้นสุดท้ายมากขึ้น และอาจกระทบต่อการยอมรับของชุมชนที่มีต่อ Zed การใช้ Rust ทำให้การมีส่วนร่วมในการพัฒนา Zed ดูน่าดึงดูดสำหรับนักพัฒนาได้มากขึ้น และส่งผลเชิงบวกต่อการเติบโตและการพัฒนาผลิตภัณฑ์
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
กรอบ UI แบบกำหนดเองอาจน่าสนุกได้ในตอนนี้ แต่เมื่อพูดถึงการนำการเข้าถึงได้ (accessibility) มาใช้งาน มันอาจกลายเป็นจุดอ่อนได้ การทำให้ accessibility ทำงานในกรอบ UI แบบกำหนดเองโดยไม่ลดประสิทธิภาพนั้นไม่ใช่เรื่องง่าย และยังต้องมีงานที่ซับซ้อนเฉพาะแต่ละแพลตฟอร์ม Zed ไม่ได้เป็นเพียงตัวแก้ไขข้อความธรรมดา แต่เป็นเครื่องมือสำหรับการทำงานร่วมกัน จึงสำคัญที่นักพัฒนาทุกคนในทีมจะใช้มันได้
ก่อนจะใช้ Zed Text Editor ผู้ใช้ต้องยอมรับข้อควรระวังของใบอนุญาตก่อน เนื้อหาผู้ใช้ถูกกำหนดว่าเป็น 'User Content' และจะถูกส่งไปยังสภาพแวดล้อมเฉพาะเมื่อแชร์โปรเจกต์เพื่อร่วมงานกับผู้ใช้ Zed เท่านั้น และ Zed เข้าถึงเนื้อหาผู้ใช้เพื่อการดีบั๊กและการปรับปรุงโซลูชันได้อย่างจำกัด
Zed ดูมีศักยภาพมากแต่ขาดการรองรับ remote host / development containers ทำให้ผมยังไม่สามารถใช้งานได้ ฟีเจอร์นี้ใน VSCode สำคัญต่อเวิร์กโฟลว์ของผม และผมชอบใช้ Mac เป็นพอร์ทัลสำหรับการเขียนโค้ดบน VM และคอนเทนเนอร์ ซึ่งช่วยให้การแยกโปรเจกต์และความปลอดภัยดีขึ้น
สัมภาษณ์นี้ให้มุมมองที่ดีมากเกี่ยวกับวิธีคิดในการพัฒนา มันทำให้ต้องคิดหนักเกี่ยวกับการมองการพัฒนาในหลายมุมมอง
ผมยังไม่เคยใช้ Zed แต่ได้เห็น José Valim ใช้เมื่อทำการสตรีมเซสชันการเขียนโค้ดแบบเรียลไทม์ โดยทั่วไปผมใช้ VSCode อยู่เสมอ แต่ฟีเจอร์ 'Find All' ของ Zed ทำให้ประทับใจ มันเปิดหน้าต่างผลลัพธ์เหมือน VSCode และแสดง snippet ของไฟล์ทั้งหมดที่ตรงกัน แต่ใน Zed คุณสามารถแก้ไข snippet เหล่านั้นได้ตรงที่นั่นทันที ต่างจาก VSCode ที่ต้องคลิกผลลัพธ์เพื่อเปิดไฟล์แล้วแก้ไข
Zed ยังไม่รองรับบน Windows หรือ Linux บอกผมได้เมื่อไหร่ที่สามารถใช้งานได้บนแพลตฟอร์มเหล่านี้
สัมภาษณ์ดีมาก และน่าทึ่งที่ให้ความสำคัญกับเรื่อง 'gold-plate' มากนัก โดยปกติผลงานที่ดีที่สุดมักออกมาจากความพยายามครั้งที่สองหรือมากกว่า ผมอยากรู้แผนเกี่ยวกับความสามารถในการเขียนสคริปต์สำหรับการกำหนดค่า Zed ตอนนี้ผมยังไม่ค่อยได้ใช้ Zed มากนัก แต่ก็ยังมีเครื่องมือแบบ Neon ที่น่าสนับสนุนผู้ใช้ VSCode และ Atom
ผมลอง Zed แล้วและรู้สึกว่าคล้าย VSCode ฟีเจอร์ multiplayer ดีเกินกว่า live share แต่เพื่อให้เปลี่ยนมาใช้อย่างจริงจังยังต้องมีอีกหลายอย่าง ถ้ามันสามารถทดแทน XCode ได้ ผมอาจหันมาใช้ Zed มากขึ้นได้ ผมไม่ชอบใช้งาน XCode และอยากได้ประสบการณ์ในการพัฒนา iOS แบบที่ได้กับ Android Studio
ชอบแอปเนทีฟแต่ตอนนี้ต้องใช้ VSCode เอง การเห็นว่า cursor blink ของ VSCode ใช้พลังงานมากเกินไปทำให้รู้สึกเสียดาย Zed ดูเบาและเร็วมาก แต่ผมคุ้นเคยกับการใช้ Jupyter Notebook และการพัฒนาแบบ remote บน Ubuntu box ใน Mac จึงทำให้ VSCode ใช้งานได้ดี ผมหวังว่า Zed จะพัฒนาต่อไปเรื่อยๆ จนถึงจุดที่สนับสนุนเวิร์กโฟลว์ของผมได้
ผมดูหน้า About ของ Zed แล้ว เห็นว่าฟีเจอร์การทำงานแบบโค้ดเรียลไทม์น่าจะมีประโยชน์มาก เป็นโปรเจกต์ที่น่าสนใจสำหรับนักพัฒนาในการเขียนอัลกอริทึม การปรับแต่งประสิทธิภาพ และการโปรแกรม GPU แต่ก็สงสัยว่าจำเป็นจริงๆ ไหมที่ยังต้องมีตัวแก้ไขข้อความตัวอื่นอีกตัวที่ไม่สามารถทัดเทียม Vim และ terminal multiplexer ได้ในเชิงฟังก์ชัน