NeoVim borró el historial de undo de sus usuarios y les dijo que no confiaran en él
"They had no concept of a duty of care to their users."

David Chisnall usó vim durante más de 20 años y confiaba en su persistent undo, que sobrevive a crashes y actualizaciones. Al probar NeoVim, este borró sus archivos de undo de vim y los reemplazó por un formato incompatible. Los mantenedores respondieron que el formato era inestable y que los usuarios no debían confiar en una función llamada persistent undo. Chisnall concluye que no se les puede confiar ningún dato, porque no tienen noción de un deber de cuidado hacia sus usuarios.
Romper el persistent undo podría perdonarlo como un bug, pero la actitud de que, solo porque algo es un archivo persistente en tu sistema de archivos que contiene datos que podrías querer, no hay razón para que su programa no lo borre, significaba que no tenían ningún concepto de un deber de cuidado hacia sus usuarios.
- jeremyjh
Esta historia no tiene referencias que respalden la versión de los hechos del autor, pero parece ser sustancialmente cierto que:
1. El cambio rompería el historial de undo, tanto para Neovim como para Vim [ver edición: este no es realmente el caso]
2. Esto significa que Neovim eliminaría datos creados por un programa diferente, en la computadora de otro usuario.
3. Esto se sabía antes de que se lanzara la función.
4. Lo hicieron de todos modos.
No creo que realmente pueda haber alguna justificación post-hoc de esto.
https://github.com/neovim/neovim/pull/13973#issuecomment-789...
edición: Pasé por alto un detalle importante. El usuario especificó la misma ruta para undodir tanto en nvim como en vim. Vim requiere una ruta para habilitar la función; no hay una ruta predeterminada compartida. El hecho de que el usuario comparta una ruta cambia considerablemente la historia en mi opinión, porque ahora este es un caso de nvim eliminando datos creados por nvim como alternativa a escribir una migración de datos para ello.
Todavía podría estar en desacuerdo con eso, pero hace que alternativas como "simplemente usa una ruta diferente" sean más complicadas como mínimo y realmente cambia por completo mi lectura de esta situación. Creo que las decisiones de Neovim son justificables en este contexto. Quizás podrían haber guardado el contenido de la carpeta de undo antigua en algún lugar y notificado al usuario; posiblemente eso sería más empático. Realmente no estoy de acuerdo en que tuvieran un deber moral de hacer esto.
- gavinhoward
Como usuario de Neovim, esto me detuvo en seco con una dolorosa revelación: puede que haya sufrido lo mismo pero no me di cuenta. Hubo un momento en que no pude deshacer algo, y fue después de una actualización de Neovim.
A diferencia del Dr. Chisnall, comencé mi viaje con el editor en Neovim, así que no fue una transición lo que me afectó. Sin embargo, si el formato del archivo de undo persistente es inestable, y Neovim simplemente lo elimina cuando no reconoce el formato anterior, entonces me parece concebible (para mí) que una actualización después de cambiar el formato también elimine el archivo.
Ay. Esto me está haciendo pensar en dejar Neovim. Sí, el FOSS viene tal cual, pero si hay una alternativa...
- sdcfgy
He usado vim desde la primera vez que apareció en los repositorios de Debian. Me han dicho mil veces que NeoVim es mejor, más moderno y resuelve muchos problemas (convenientemente nunca citados). Simplemente lo ignoré y seguí adelante. Me siento terriblemente reivindicado en este punto, ya que es una función que uso regularmente y no tenía idea de que sería un problema en NeoVim.
- BarbaryCoast
Según el historial de revisiones de VIM, el undo persistente llegó en la versión 7.3, lanzada en 2010. Así que Chisnall puede haberlo usado desde 2000, pero no tuvo undo persistente durante al menos dos de los libros que escribió. Y significa que no fue "mantenido durante casi 20 años", es como máximo 16.
Pero es una buena función.
Yo hago eso usando control de versiones. Lo tengo enganchado a mi editor para que "guardar" sea "registrar". Ahora tengo copias persistentes y versionadas de todos mis estados, independientemente de las herramientas que esté usando en ese momento.
- gchamonlive
¿Me estoy perdiendo algo? ¿La gente usa el undo persistente como respaldo?
Sin embargo, esto parece más un problema de documentación y UX. Neovim debería advertir y preguntar antes de eliminar archivos de undo antiguos, o al menos respaldarlos, pero no es culpa de neovim si la gente no usa sistemas confiables de respaldo y versionado. Confiar en el undo persistente para esto es una especie de herida autoinfligida.
Usa las herramientas adecuadas para el trabajo. Decir que los desarrolladores de neovim "no tenían concepto de un deber de cuidado hacia sus usuarios" es realmente irrespetuoso. La API Lua de Neovim rebosa cuidado, solo tienes que ir a mirar.
- justinmk
La "pérdida de datos" del undofile de Vim ocurre porque Vim (¡VIM!) restablecerá el undofile si una herramienta externa (git, nano) cambió el archivo mientras Vim no está en ejecución.
Adelante, pruébalo:
# Haz algunas ediciones, luego sal de vim (recuerda salir).
vim --clean +'set undofile' foo.txt
# Edita el mismo archivo con algo que no sea vim; guarda los cambios.
nano foo.txt
# Abre el archivo de nuevo e intenta "u". Luego publica en bluesky sobre el "deber de cuidado" de Vim.
vim --clean +'set undofile' foo.txt
Esto está documentado en `:help undo-persistence`.
- natbennett
También fui un usuario muy temprano de Neovim.
La forma en que personalmente recuerdo que se presentaba era "Vim, pero con cambios que rompen la compatibilidad".
- dlisboa
> la actitud de que solo porque algo es un archivo persistente en tu sistema de archivos que contiene datos que podrías querer no es razón para que su programa no lo elimine significaba que no tenían ningún concepto de un deber de cuidado hacia sus usuarios.
Esa es la forma incorrecta de verlo. NeoVIM tiene un concepto diferente de cuidado hacia sus usuarios. Están optimizando para otro tipo de cuidado, más en línea con las expectativas modernas, que a VIM no le importaba (de ahí el fork).
No es mejor ni peor, solo diferente.
Este mismo artículo podría haberse escrito sobre cómo VIM no tiene integración nativa de LSP o autocompletado y no tienen deber ni cuidado hacia sus usuarios.
- ghtbircshotbe
Neovim se anuncia como un reemplazo plug-in para vim, lo cual es 100% falso. Muchas cosas son diferentes, incluyendo los archivos de undo y :!. No puedo recordar la función que me hizo rendirme, pero en algún momento el cambio se volvió más trabajo de lo que valía la pena, considerando que mi configuración de vim ya funciona. No estoy seguro de qué haría si estuviera empezando hoy.
- RVuRnvbM2e
Los archivos de undo y el undo persistente no están destinados a funcionar de esa manera. Solo son persistentes a través de reinicios del proceso. Eso es todo.
Viven en ~/.cache que se define como "datos no esenciales (en caché) específicos del usuario".
A pesar del impresionante currículum de este usuario, simplemente malinterpretó la función.