- En la conversación con Nathan, Max y Antonio, cofundadores de Zed, hubo preguntas sobre las razones detrás de sus decisiones técnicas, la importancia de Rust y la intención de mantener la propiedad de la pila tecnológica.
- Vuelven a responder a esas preguntas y comparten una versión editada de una charla de una hora.
De Atom a Zed: 10 años de recorrido
- Los tres cofundadores han trabajado juntos durante unos 10 años y, después de desarrollar Atom, decidieron crear Zed.
- La visión de Zed es una versión más refinada y más concreta de la visión inicial de Atom, y las decisiones técnicas están íntimamente ligadas a esa visión.
- Decisiones técnicas como Rust, la aceleración por GPU y CRDTs fueron esenciales para lograr los objetivos de Zed.
Decisiones técnicas y visión
- La visión de Zed es crear un editor de texto ligero que aporte funciones de IDE cuando sea necesario.
- En el desarrollo de Atom, las limitaciones técnicas y la falta de madurez técnica de los desarrolladores impidieron realizar por completo esa visión.
- Con la llegada de Rust se abrió la posibilidad de superar esas limitaciones.
Las limitaciones de Atom y un nuevo comienzo
- Durante el desarrollo de Atom surgieron problemas de rendimiento debido a las limitaciones de JavaScript y las restricciones de las tecnologías web.
- En 2017, al percibir los límites de las plataformas existentes, decidieron reiniciar desde cero con Zed.
- Buscaban mejorar el rendimiento mediante Rust y la aceleración por GPU.
El impacto de Rust
- Rust ofrece una abstracción de alto nivel y, a la vez, un rendimiento sobresaliente.
- La "abstracción de costo cero" de Rust cumple un papel clave en el desarrollo de un editor de texto.
- Aunque con C++ o C también se puede lograr un rendimiento similar, Rust brinda una experiencia de desarrollo más simple y segura para los desarrolladores.
La importancia de tener la pila tecnológica completa
- El equipo de Zed posee toda la pila tecnológica, desde tree-sitter hasta GPUI, el framework de interfaz de usuario con aceleración por GPU.
- Tener el control de la pila completa es una decisión deliberada que les permite tener control total sobre rendimiento y funcionalidades.
Equilibrio entre abstracción absoluta y urgencia
- Es importante construir solo lo necesario y en la medida necesaria, y revisitarlo cuando haga falta con base en lo aprendido.
- En las partes críticas dedican suficiente tiempo para garantizar una calidad y un rendimiento altos.
Relación entre herramientas para desarrolladores y tecnología
- Los usuarios de herramientas para desarrolladores pueden interesarse más por la tecnología, y la tecnología impacta en el rendimiento y las funcionalidades que se les entrega al usuario final.
- Al estar Zed escrito en Rust, los desarrolladores pueden contribuir con mayor facilidad, lo que fomenta la participación de la comunidad.
Opinión de GN⁺
- El proceso de construcción de Zed muestra cuán importante son las decisiones técnicas para la visión y el rendimiento del producto; la elección de lenguajes modernos como Rust demuestra que la productividad de los desarrolladores y el rendimiento del producto pueden mejorarse al mismo tiempo.
- Tener la propiedad de la pila tecnológica completa permite al equipo de Zed contar con flexibilidad en la optimización del rendimiento y el desarrollo de funciones, lo que desempeña un papel decisivo en la construcción de un editor de texto de alto rendimiento.
- En herramientas para desarrolladores, la tecnología elegida puede impactar más en la experiencia del usuario final, y eso puede influir en cómo Zed sea recibido por la comunidad de desarrolladores. El uso de Rust vuelve más atractivo que los desarrolladores contribuyan a Zed, lo que tiene un impacto positivo en su crecimiento y evolución.
1 comentarios
Comentarios de Hacker News
Un marco de UI personalizado puede ser divertido ahora, pero puede convertirse en un problema al implementar accesibilidad. Aplicar accesibilidad en un framework personalizado sin degradar el rendimiento no es algo fácil y suele requerir trabajo complejo por plataforma. Como Zed se está posicionando como una herramienta colaborativa y no solo como un editor sencillo, es importante que lo pueda usar todo el equipo de desarrollo.
Antes de usar Zed, hay que aceptar una licencia. El contenido del usuario se clasifica como "User Content" y solo se envía al entorno cuando compartes proyectos con otros usuarios de Zed para colaborar. Zed limita el acceso al contenido del usuario únicamente para la depuración y la mejora de la solución.
Zed se ve muy prometedor, pero no lo puedo usar porque no tiene soporte para host remoto o contenedores de desarrollo. La función equivalente de VSCode es importante para mi flujo de trabajo, y prefiero usar mi Mac como portal para escribir código con máquinas virtuales y contenedores. Eso mejora el aislamiento de proyectos y la postura de seguridad.
Una gran entrevista con visión sobre cómo los desarrolladores se acercan al desarrollo. Tiene muchas ideas para ver el desarrollo desde distintos ángulos.
No uso Zed, pero vi a José Valim usarlo en sesiones de programación en vivo. Normalmente uso VSCode, pero la función 'Find All' de Zed me impresionó. De forma similar a VSCode, abre un panel de resultados con snippets de todos los archivos coincidentes, pero en Zed puedes editar los snippets directamente desde ahí. En contraste, en VSCode tienes que hacer clic en un resultado para abrir el archivo y editar.
Zed no funciona en Windows ni en Linux. Si termina funcionando en esas plataformas, por favor avísenlo.
La entrevista fue excelente y me impresionó cuánto se ha pensado en el "gold-plate". Lo mejor suele surgir en el segundo intento o en uno posterior. Me intriga cuál será el plan para que la configuración de Zed pueda escribirse con scripts. Aún no he usado mucho Zed, pero para usuarios de VSCode y Atom está Neon, una herramienta útil.
Probé Zed y se siente similar a VSCode. La función multijugador es mejor que Live Share, pero hace falta más para convencerte de cambiar. Si pudiera reemplazar XCode, me decantaría más por Zed. Me resulta incómodo usar XCode y quisiera una experiencia de desarrollo iOS parecida a Android Studio.
Prefiero apps nativas pero por ahora tengo que usar VSCode. Me entristece ver que el cursor parpadeando en VSCode consume demasiada energía. Zed es liviano y rápido, pero como ya estoy acostumbrado al soporte de Jupyter Notebook y al desarrollo remoto en cajas Ubuntu desde Mac, VSCode está yendo bien. Ojalá sigan desarrollándolo hasta que Zed soporte mi flujo de trabajo.
Revisé la página About de Zed y la función de codificación en tiempo real se veía útil. Probablemente sea un proyecto interesante para desarrolladores y permite trabajar en algoritmos, optimización de rendimiento y programación de GPU, entre otras cosas. Pero me pregunto si hace falta otro editor de texto adicional que no sea funcionalmente equivalente a Vim y a un multiplexor de terminal.