Nathan Sobo, early developer on Atom, discusses transitioning from Electron to native UIs with the Zed team. They explore editor evolution, programming languages, frustration leading to innovation, Rust learning curve, building native apps in Rust, and challenges in distributed systems and WebAssembly extension development.
Transition from Electron to GPU-y for native UIs marks a shift towards leveraging OS APIs and direct graphics card rendering.
Balance between quality and shipping, impact of business constraints, and understanding foundational elements influence software development philosophy.
Exploration of WebAssembly for high-performance extensions, Javi tool from Bytecode Alliance, and package-specific tooling as a force multiplier.
Deep dives
Founding Zed Industries and Zed Code Editor
The podcast features Nathan Sobow, founder of Zed Industries, discussing the creation of Zed, a new code editor known for its use in Rust development. Nathan's background as an early developer on Atom and the evolution of Zed from a focus on performance to creating GPU-y, emphasizing native UIs without Electron, are highlighted.
Transition from Electron to Zed and GPU-y Development
Nathan discusses his involvement in creating Electron after working on Atom and how Electron's success influenced the creation of Zed and GPU-y. The decision to move away from Electron toward GPU-y, leveraging native operating system APIs for performance and introducing a new spinoff UI framework, is a key focus.
Evolution of Development Philosophy and Software Challenges
The podcast delves into Nathan's programming journey and his pursuit of inherently challenging problems like building an editor. The importance of balancing quality and shipping, the impact of business constraints on software development, and the philosophy of understanding and controlling foundational elements for software projects are explored.
Pursuit of High-Quality Software and Improving User Experience
Nathan's emphasis on building high-quality software is reflected in Zed's integration of Vim mode and its stability compared to other Vim integrations. The iterative development process, focus on comprehensive Vim support, and dedication to enhancing user experience with improved functionality showcase Zed's commitment to quality and user satisfaction.
The Potential of WebAssembly for Extension Development
WebAssembly offers new possibilities for extension development, providing opportunities to build high-performance extensions without being restricted to JavaScript. The use of WebAssembly in creating extensions can enhance performance and offer a path for developers to innovate in different languages like Rust, improving the overall ecosystem for extension development. The discussion also highlights tools like Javi from the Bytecode Alliance, which compiles JavaScript to WebAssembly, offering options for easier extension development.
Empowering Package-Specific Tooling in Editors
The conversation delves into the concept of package-specific tooling within editors as a potential force multiplier for package authors and users. The idea revolves around integrating tools directly with packages, enabling seamless adoption of extension-specific tools for enhanced development experiences. By normalizing the creation of editor tooling alongside package distribution, authors can leverage standardized tooling that complements their packages, fostering a richer ecosystem and simplifying the tooling development process for all users.
Richard talks with Nathan Sobo, founder of Zed Industries (which creates the high-performance Zed code editor) about his time as an early developer on the Atom code editor, including how that project led to Electron. They then discuss how the Zed team has created GPUI, which uses native operating system APIs for events and goes straight to the graphics card for rendering.