2 คะแนน โดย GN⁺ 2024-02-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ในการสนทนากับ 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⁺

  1. กระบวนการพัฒนา Zed แสดงให้เห็นว่า การเลือกทางเทคนิคมีความสำคัญอย่างมากต่อวิสัยทัศน์และประสิทธิภาพของผลิตภัณฑ์ การเลือกภาษาโปรแกรมสมัยใหม่อย่าง Rust แสดงให้เห็นว่าทั้งผลผลิตของนักพัฒนาและประสิทธิภาพของผลิตภัณฑ์สามารถดีขึ้นได้พร้อมกัน
  2. การเป็นเจ้าของเทคโนโลยีสแต็กทั้งหมดทำให้ทีม Zed มีความยืดหยุ่นในการเพิ่มประสิทธิภาพและพัฒนาฟีเจอร์ ซึ่งเป็นบทบาทสำคัญในการสร้างตัวแก้ไขข้อความที่มีประสิทธิภาพสูง
  3. สำหรับเครื่องมือนักพัฒนา เทคโนโลยีที่ใช้มีผลต่อประสบการณ์ผู้ใช้ขั้นสุดท้ายมากขึ้น และอาจกระทบต่อการยอมรับของชุมชนที่มีต่อ Zed การใช้ Rust ทำให้การมีส่วนร่วมในการพัฒนา Zed ดูน่าดึงดูดสำหรับนักพัฒนาได้มากขึ้น และส่งผลเชิงบวกต่อการเติบโตและการพัฒนาผลิตภัณฑ์

1 ความคิดเห็น

 
GN⁺ 2024-02-19
ความคิดเห็นจาก Hacker News
  • กรอบ UI แบบกำหนดเองอาจน่าสนุกได้ในตอนนี้ แต่เมื่อพูดถึงการนำการเข้าถึงได้ (accessibility) มาใช้งาน มันอาจกลายเป็นจุดอ่อนได้ การทำให้ accessibility ทำงานในกรอบ UI แบบกำหนดเองโดยไม่ลดประสิทธิภาพนั้นไม่ใช่เรื่องง่าย และยังต้องมีงานที่ซับซ้อนเฉพาะแต่ละแพลตฟอร์ม Zed ไม่ได้เป็นเพียงตัวแก้ไขข้อความธรรมดา แต่เป็นเครื่องมือสำหรับการทำงานร่วมกัน จึงสำคัญที่นักพัฒนาทุกคนในทีมจะใช้มันได้

    อาจมีเครื่องมืออย่าง AccessKit ซึ่งช่วยทำให้งานนี้ง่ายขึ้นได้บ้าง แต่ยังไม่แน่ใจว่ามันเหมาะกับตัวแก้ไขขนาดใหญ่หรือไม่

  • ก่อนจะใช้ Zed Text Editor ผู้ใช้ต้องยอมรับข้อควรระวังของใบอนุญาตก่อน เนื้อหาผู้ใช้ถูกกำหนดว่าเป็น 'User Content' และจะถูกส่งไปยังสภาพแวดล้อมเฉพาะเมื่อแชร์โปรเจกต์เพื่อร่วมงานกับผู้ใช้ Zed เท่านั้น และ Zed เข้าถึงเนื้อหาผู้ใช้เพื่อการดีบั๊กและการปรับปรุงโซลูชันได้อย่างจำกัด

    ผู้ใช้สามารถตัดสินใจด้วยข้อมูลนี้เองได้

  • Zed ดูมีศักยภาพมากแต่ขาดการรองรับ remote host / development containers ทำให้ผมยังไม่สามารถใช้งานได้ ฟีเจอร์นี้ใน VSCode สำคัญต่อเวิร์กโฟลว์ของผม และผมชอบใช้ Mac เป็นพอร์ทัลสำหรับการเขียนโค้ดบน VM และคอนเทนเนอร์ ซึ่งช่วยให้การแยกโปรเจกต์และความปลอดภัยดีขึ้น

  • สัมภาษณ์นี้ให้มุมมองที่ดีมากเกี่ยวกับวิธีคิดในการพัฒนา มันทำให้ต้องคิดหนักเกี่ยวกับการมองการพัฒนาในหลายมุมมอง

    นักพัฒนาหลายคนคิดว่า 'Zed' เป็นชื่อที่เหมาะสมอย่างสมบูรณ์แบบสำหรับตัวแก้ไขข้อความในโลก Zig แล้ว แต่บางคนมองว่า 'Zag' น่าจะเหมาะกว่า

  • ผมยังไม่เคยใช้ 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 ได้ในเชิงฟังก์ชัน