2 điểm bởi GN⁺ 2024-02-19 | 1 bình luận | Chia sẻ qua WhatsApp
  • Trong cuộc trò chuyện với Nathan, Max và Antonio, những người đồng sáng lập của Zed, đã có các câu hỏi về lý do đằng sau các quyết định kỹ thuật, tầm quan trọng của Rust và ý định sở hữu toàn bộ ngăn xếp công nghệ.
  • Họ đã trả lời thêm các câu hỏi và chia sẻ phiên bản đã biên tập của cuộc trò chuyện kéo dài một giờ.

Từ Atom đến Zed: Hành trình 10 năm

  • Ba nhà đồng sáng lập đã làm việc cùng nhau khoảng 10 năm và sau khi phát triển Atom đã quyết định tạo ra Zed.
  • Tầm nhìn của Zed là phiên bản chín muồi và cụ thể hơn của tầm nhìn ban đầu của Atom, với các lựa chọn kỹ thuật gắn liền chặt với tầm nhìn này.
  • Các lựa chọn kỹ thuật như Rust, tăng tốc GPU và CRDTs đóng vai trò quan trọng để đạt mục tiêu của Zed.

Lựa chọn kỹ thuật và tầm nhìn

  • Tầm nhìn của Zed là tạo ra một trình soạn thảo văn bản nhẹ, nhưng khi cần thì cung cấp đầy đủ các chức năng của IDE.
  • Khi phát triển Atom, họ chưa thể hiện thực hóa hoàn toàn tầm nhìn này vì hạn chế công nghệ lúc đó và mức trưởng thành kỹ thuật của các nhà phát triển chưa đủ.
  • Sự xuất hiện của Rust đã mở ra cơ hội để vượt qua các rào cản trước đó.

Hạn chế của Atom và một cuộc khởi đầu mới

  • Trong quá trình phát triển Atom, JavaScript và hạn chế của công nghệ web đã gây ra vấn đề hiệu năng.
  • Năm 2017, khi nhận ra các giới hạn của nền tảng hiện có, họ quyết định bắt đầu lại Zed từ đầu.
  • Họ muốn cải thiện hiệu năng bằng Rust và tăng tốc GPU.

Tác động của Rust

  • Rust mang lại mức trừu tượng cao trong khi vẫn cung cấp hiệu năng xuất sắc.
  • Khái niệm 'zero-cost abstraction' của Rust đóng vai trò quan trọng trong phát triển trình soạn thảo văn bản.
  • Mặc dù C++ hoặc C cũng có thể đạt hiệu năng tương tự, Rust lại cung cấp trải nghiệm phát triển dễ dàng và an toàn hơn cho lập trình viên.

Tầm quan trọng của việc sở hữu toàn bộ stack

  • Nhóm phát triển Zed sở hữu toàn bộ ngăn xếp công nghệ, từ tree-sitter đến GPUI, framework UI tăng tốc GPU.
  • Việc sở hữu toàn bộ stack là một lựa chọn có chủ đích, cho phép kiểm soát hoàn toàn về hiệu năng và tính năng.

Cân bằng giữa trừu tượng hóa hoàn hảo và tính cấp bách

  • Quan trọng là xây dựng đúng thứ cần thiết và đúng lượng cần thiết, đồng thời xem xét lại khi cần dựa trên những gì đã học được.
  • Các phần cốt lõi được đầu tư đủ thời gian để đảm bảo chất lượng và hiệu năng cao.

Mối quan hệ giữa công cụ cho nhà phát triển và công nghệ

  • Người dùng công cụ dành cho nhà phát triển có thể quan tâm nhiều hơn đến công nghệ, vì công nghệ ảnh hưởng đến hiệu năng và tính năng cung cấp cho người dùng.
  • Việc Zed được viết bằng Rust giúp nhà phát triển dễ dàng đóng góp hơn, từ đó thúc đẩy sự tham gia của cộng đồng.

Ý kiến của GN⁺

  1. Quá trình phát triển của Zed cho thấy mức độ quan trọng của các lựa chọn kỹ thuật đối với tầm nhìn sản phẩm và hiệu năng. Việc chọn một ngôn ngữ lập trình hiện đại như Rust chứng minh có thể cùng lúc nâng cao năng suất của nhà phát triển và hiệu năng của sản phẩm.
  2. Việc sở hữu toàn bộ ngăn xếp công nghệ giúp đội Zed có tính linh hoạt trong tối ưu hiệu năng và phát triển tính năng, đóng vai trò then chốt trong việc tạo ra một trình soạn thảo văn bản hiệu năng cao.
  3. Với công cụ của nhà phát triển, công nghệ được sử dụng có thể tác động lớn hơn đến trải nghiệm người dùng cuối, điều này có thể ảnh hưởng đến cách cộng đồng nhà phát triển tiếp nhận Zed. Việc sử dụng Rust khiến việc đóng góp cho Zed trở nên hấp dẫn hơn đối với nhà phát triển, từ đó góp phần tích cực cho sự tăng trưởng và phát triển của sản phẩm.

1 bình luận

 
GN⁺ 2024-02-19
Ý kiến trên Hacker News
  • Việc dùng khung giao diện người dùng tùy chỉnh có thể thú vị ngay bây giờ, nhưng khi phải triển khai khả năng tiếp cận thì có thể gặp rắc rối. Thực hiện accessibility trên khung tùy chỉnh mà không bị giảm hiệu năng không hề dễ, và đòi hỏi xử lý phức tạp theo từng nền tảng. Vì Zed không chỉ là một trình soạn thảo đơn thuế, mà còn đặt mình như một công cụ cộng tác, nên rất quan trọng để tất cả thành viên đội phát triển đều có thể dùng được.

    Có thể có một công cụ như AccessKit giúp việc này đỡ vất vả hơn một chút, nhưng chưa chắc phù hợp cho một trình soạn thảo lớn.

  • Trước khi dùng trình soạn thảo văn bản Zed, cần lưu ý điều khoản giấy phép mà người dùng phải đồng ý. Nội dung người dùng được phân loại là “User Content” và chỉ được gửi trong môi trường khi người dùng và Zed cùng hợp tác chia sẻ dự án. Zed nói quyền truy cập vào nội dung người dùng của họ chỉ bị giới hạn cho việc gỡ lỗi và cải tiến giải pháp.

    Từ thông tin này, người dùng có thể rút ra kết luận của riêng mình.

  • Zed editor trông rất triển vọng nhưng lại không dùng được vì thiếu hỗ trợ remote host/dev container. Với tôi, tính năng này của VSCode rất quan trọng trong quy trình làm việc, vì tôi thích dùng Mac như một cổng vào để code trong máy ảo và container. Cách này giúp tách biệt dự án tốt hơn và nâng cao mức độ an toàn.

  • Đây là cuộc phỏng vấn tuyệt vời, mang lại nhiều góc nhìn về cách nhà phát triển tiếp cận phát triển. Suy nghĩ rất nhiều về việc nhìn phát triển từ nhiều góc độ.

    Các nhà phát triển cho rằng cái tên “Zed” đã được dùng như tên một trình soạn thảo văn bản hoàn hảo trong Zig, nhưng thực tế nhiều người nghĩ “Zag” phù hợp hơn.

  • Mình không dùng Zed nhưng đã thấy José Valim sử dụng khi phát trực tiếp phiên lập trình thời gian thực. Mình dùng VSCode chủ yếu, nhưng tính năng “Find All” của Zed rất ấn tượng. Giống VSCode, nó mở cửa sổ kết quả và hiển thị các snippet của toàn bộ file khớp, nhưng trên Zed có thể chỉnh sửa trực tiếp snippet ngay tại đó; trái lại, trong VSCode bạn phải nhấp vào kết quả để mở file rồi mới có thể chỉnh sửa.

  • Zed không hoạt động trên Windows hay Linux. Hãy cho mình biết nếu có thể chạy được trên các nền tảng này.

  • Cuộc phỏng vấn rất hay, mình ngạc nhiên khi thấy việc “đánh bóng” được cân nhắc đến mức nào. Việc làm tốt nhất thường đến ở lần thử thứ hai trở đi. Tò mò về kế hoạch cho tính năng cấu hình Zed bằng script. Mình chưa dùng Zed nhiều, nhưng có những công cụ như Neon sẽ giúp ích cho người dùng VSCode và Atom.

  • Mình đã thử Zed và thấy nó gần giống VSCode. Tính năng đa người chơi tốt hơn live share, nhưng vẫn cần nhiều thứ hơn để thuyết phục việc chuyển đổi. Nếu nó có thể thay thế XCode thì mình sẽ nghiêng về việc dùng Zed hơn. Mình khó chịu với việc dùng XCode và muốn có trải nghiệm phát triển iOS giống như Android Studio.

  • Mình thích ứng dụng native nhưng hiện tại phải dùng VSCode. Rất tiếc vì ở VSCode, việc con trỏ nháy tốn quá nhiều năng lượng. Zed nhẹ và nhanh, nhưng vì đã quen với Jupyter Notebook và việc phát triển từ xa vào Ubuntu box trên Mac nên VSCode hoạt động rất ổn. Hy vọng sẽ tiếp tục phát triển cho tới khi Zed hỗ trợ quy trình làm việc của mình.

  • Mình đã xem trang About của Zed và thấy tính năng lập trình thời gian thực có vẻ hữu ích. Đây sẽ là một dự án thú vị cho nhà phát triển, có thể viết thuật toán, tối ưu hiệu năng, lập trình GPU, v.v. Nhưng vẫn băn khoăn liệu có cần một trình soạn thảo văn bản khác trong khi nó chưa thể chức năng tương đương Vim và terminal multiplexer.