news.volyx.in

Xi-Editor Retrospective (raphlinus.github.io)

538 points by raphlinus · 2290 days ago · 157 comments on HN

Article summary

The author of the xi-editor project reflects on the project's goals and design decisions, including the use of Rust, a rope data structure, and a multiprocess architecture. The project aimed to deliver a high-quality editing experience, but the author now believes that some of these design decisions, such as the process separation between front-end and core, were not ideal. The author discusses the challenges of building a modular text editor and the trade-offs involved in using async design and JSON-based IPC. The project is now on the back burner, but the author hopes that the lessons learned will be useful for future text editor development.

Main themes

  • text editor design
  • async programming
  • modular architecture
  • Rust programming language
  • JSON-based IPC
  • performance optimization
  • Language Server Protocol
  • software development trade-offs

What commenters say

  • The async paradigm is not a panacea and can introduce unnecessary complexity.
  • The separation of front-end and core in a text editor may not be the best approach due to performance and synchronization issues.
  • Some commenters believe that using Rust for a UI-intensive app is a bad idea, while others think it can be a good choice with the right frameworks and design.
  • The Language Server Protocol may be a good enough solution for niche languages, but popular languages may require dedicated IDEs or mega-plugins.
  • The use of JSON-based IPC and microservices in a high-performance editor may not be the best choice due to potential performance issues.
  • A monolithic design may be a better approach for a text editor than a modular one, at least for certain use cases.
  • The choice of programming language and architecture for a text editor depends on various factors, including performance requirements and development goals.
  • Some commenters think that the xi-editor project was flawed from the beginning, while others appreciate the effort and lessons learned from the project.
  • The project's goals and design decisions were influenced by the author's experience with Android and the desire to create a high-quality editing experience.