Marcin Wichary criticizes NeoVim for deleting undo history without warning
Designer and vim veteran argues that breaking persistent undo represents a failure of duty of care to users.
What to know
- Wichary documents how NeoVim silently deleted his vim undo history by changing the file format without migration or warning, then dismissed backward compatibility concerns.
- The dispute centers on whether open-source developers have an implicit duty of care to preserve user data, with commenters divided over whether silent data deletion violates a basic ethical obligation.
- Wichary invokes Jef Raskin's First Law from 'The Humane Interface'—that software must not harm user data—as a design principle that shaped his view of computing ethics.
- At least one NeoVim user reported realizing they may have suffered undetected data loss from a similar undo format change, suggesting the problem may affect others.
The dispute Whether the presence of user data on a filesystem creates an implicit obligation for software to preserve it, or whether such expectations must be made explicit in a contract or license. · positions read across 97 posts and comments
Developers have an obligation not to silently delete user data, regardless of source or format.
-
“Even a gift comes with an implicit promise that it will do no harm. Deleting important data of yours without warning is harm.”
pdonis · Hacker News ↗
Open-source developers give software as a gift and have no enforceable duty; users should choose tools that align with their values.
-
“They are open source developers, giving away free software as a gift. There is no duty here.”
recursivedoubts · Hacker News ↗
NeoVim and Vim simply have different design philosophies; NeoVim prioritizes modernization while Vim values backward compatibility—neither is objectively better.
-
“NeoVIM has a different concept of care for their users. They're optimizing for another kind of care, more in line with modern expectations, which VIM did not care about (hence the fork). It's not better or worse, just different.”
dlisboa · Hacker News ↗
“A program may not harm a user's data or, through inaction, allow a user's data to come to harm.”
Jef Raskin, Computing pioneer · The Humane Interface (2000)
Marcin Wichary UX designer and vim userNeoVim developers Open-source maintainersJef Raskin Computing pioneer and author
How it unfolded 4 developments, newest first · click a bar or a number to jump articlespostscomments
-
4
Commenters frame debate around philosophy of care and design priorities
The conversation shifts to questioning what 'duty of care' means: whether it is violated by silent data deletion, whether open-source maintainers implicitly promise safety, and whether different design philosophies (backward compatibility versus modern simplification) represent different kinds of care.
“NeoVIM has a different concept of care for their users. They're optimizing for another kind of care, more in line with modern expectations, which VIM did not care about (hence the fork). It's not better or worse, just different.”
— dlisboa -
> Data loss only occurs if both editors are configured to share an undo directory which is going to be the case for ~100% of persistent undo users switching from vim to neovim, becuase you'll have the preference for this in your vimrc which you'll surely reuse across the two editors. (the quote feels like such a classic orange site "gotcha"…
2 more of the top 3 · 92 posts in this stretch
-
The feature that was broken is called persistent undo. The docs unambiguously state that edit history will be preserved unless Vim/Neovim detects that the "undo file is no longer synchronized with the file it was written for."https://neovim.io/doc/user/undo/#_5.-undo-persistenceSo even putting aside the Vim/Neovim interoperability angle, that…
-
https://github.com/neovim/neovim/pull/13973#issuecomment-879067052 >> It shouldn't overwrite an unreadable file tho, unless I have completely misread the code. > It doesn't, but because it reads the vim-specific config file from the vim-specified location it then writes a file in that location with the name that vim expects, so files that I first…
-
-
3
NeoVim users report discovering similar data loss
A NeoVim user comments that the essay prompted painful realization they may have suffered the same undo data loss after a version upgrade without realizing it at the time.
“As a Neovim user, this stopped me dead with painful realization: I may have suffered the same thing but didn't realize it.”
— gavinhoward -
As a Neovim user, this stopped me dead with painful realization: I may have suffered the same thing but didn't realize it. There was a time when I could not undo something, and it was after a Neovim upgrade.Unlike Dr. Chisnall, I started my editor journey on Neovim, so it wasn't a transition that bit me. However, if the format of the persistent…
1 more of the top 2 · 2 posts in this stretch
-
Software developers do sometimes make promises to their users, but I think these promises ought to be explicit rather than assumed. You can't simply assume a "duty of care" and expect that other people will understand them the same way you do.(Or rather, you can, but you will likely be disappointed.)
-
-
2
Commenters debate whether developers have duty of care
Discussion centers on whether open-source developers have an obligation to preserve user data. Some argue that any software deleting user files represents a failure of care; others contend that open-source maintainers have no enforceable duty and users should choose tools that match their values.
“They are open source developers, giving away free software as a gift. There is no duty here.”
— recursivedoubts -
first by HN Frontpage, 1d ago
-
They are open source developers, giving away free software as a gift. There is no duty here.We can speak, respectfully, of how important backwards compatibility is to us, and ask nicely for them to give more of their time to support it when their free sodftware isn't backwards compatible. Perhaps we can even offer to help implement it.But they…
2 more of the top 3 · 3 posts in this stretch
-
I was also a very early user of Neovim.The way I personally remember it being positioned was “Vim, but with breaking changes.”
-
>I deleted something from this file, maybe last weekDon't forget time travel: `:earlier 7d`
-
-
background
Essay gains traction on Hacker News and Lobsters — The post reached 218 points on Hacker News with 156 comments and was also shared on Lobsters, sparking widespread discussion about developer responsibility and data preservation.
-
1
Marcin Wichary publishes essay on NeoVim's data deletion
Wichary, a UX designer at Google, Medium, and Figma, published an essay describing how NeoVim changed its undo file format without upgrading old files, causing data loss. When he raised an issue, he was told the persistent undo format was unstable and users should not rely on it.
“Neovim had changed the format of the undo files. It hadn't upgraded the old one. It hadn't used a different name for its undo files. It had just noticed the existence of a vim undo file, deleted it (losing all of the data in it) and replaced it with one that vim couldn't read.”
— Marcin Wichary
What people are saying 19 voices from 2 sites · best of 97 · verbatim
- Did NeoVim's developers consider the consequences of deleting vim's undo files during format migration, or was it an oversight?
- How many other users unknowingly lost persistent undo history in similar NeoVim upgrades?
- Yesterday
-
I mean, Peter Thiel has some reallllly bad and harmful ideas. Watching one video about it obviously isn’t a black mark on your soul that dooms you to be evil forever. But if you’re going around posting coy things like this, my read (could be wrong) is that you agree with Thiel on the ‘anti-woke agenda’, and maybe even his ‘post-democratic’ ‘dark…
-
Please reconsider whether interacting like this, and especially spending time in "sneer threads", is healthy for yourself, or an effective way to convince people of your beliefs.
-
> Then why isn't there code in Vim to auto-upgrade from 1 to 2? Because 1 *was never shipped in a released version of vim*. The first version of vim to support persistent undo shipped three months after the bump to 2. Once a feature ships, you have backwards compatibility requirements. Before a feature ships, you don't but you may still want…
-
For two reasons: 1. Because they did change it *before* the release and they wanted to provide helpful errors for people running the pre-release versions, and *removing* it for the release would have caused problems. 2. Because they designed with backward compatibility in mind and the version allowed them to provide an upgrade path if they ever…
-
I didn't remember vim breaking the format, so I went back to check: The version change from 1 to 2 was in May 2010. Persistent undo was introduced in vim 7.3, which was released in August 2010. The format changed once, *before the feature was released*. Since vim 7.3 was released, persistent undo has gained features but has not been broken. My…
-
Hm. > The step from "just a little weird" to wanting to harm certain minorities in very unethical ways is way smaller than one thinks. The action / behaviour of creating a public shame-list is a violent, slippery and divisive action. Will cause harm. It's a toxic behaviour. Nazis and Fascists loved lists. They had many lists, so here's another…
- Sep 27
-
Sorry if too off topic; The inspiration for the lists name comes from a podcast "weird little guys" portraying nazis. The podcasts naming wants to emphasize that people doing really bad things are not that different from people that don't. The step from "just a little weird" to wanting to harm certain minorities in very unethical ways is way…
-
Drew calling other people weird is comical.
-
Vim undofile "data loss" happens because Vim (VIM!) will reset the undofile will reset the undofile if an external tool (git, nano) changed the file while Vim is not running.Go ahead, try it: # Make some edits, then exit vim (remember to exit). vim --clean +'set undofile' foo.txt # Edit the same file with non-vim; save the changes. nano foo.txt #…
-
Neovim had caused me huge data loss at leat 3 times. For some reason, my kernel was unstable and would randomly panic (like once a week). This is a bug, OK. But every document opened in neovim at the time of the crash would be completely erased. It didn’t happened with Vim. I investigated and found a reported bug about it. basically, Neovim…
-
Some context from a related HN comment before the pitchforks come out: > While I agree with the article's point, we should note that collisions do not happen out of the box because Neovim defaults undodir to $XDG_STATE_HOME/nvim/undo/ (~ /.local/state/nvim/undo/), while Vim defaults to storing .un~ files alongside the edited file or inside ~…
-
But you still have to share the undodir for both vim and neovim right? If your undo data was that precious why would you gamble the interoperability? You could just have them in different folders and it would be fine.So the case is, you really need you undo history and want to try out neovim so you just copy paste you vimrc to the new place and…
-
Today it's the work of a moment to get a coding agent to change the format of a file for you. I guess the point of this story is supposed to be like the famous Van Halen brown M&Ms contract clause. But the world is changing fast and I think it makes sense to start taking more ownership of your own computing experience, especially when the software…
-
According to the rev history for VIM, persistent undo arrived in version 7.3, released in 2010. So Chisnall may have used it since 2000, but he didn't have persistent undo for at least two of the books he wrote. And it means it wasn't "maintained for almost 20 years", it's at best 16.But it is a nice feature.I do that by using version control. I…
-
This story has no references that support the author's version of events, but it does appear to be substantially true that:1. The change would break undo history, for both Neovim and Vim.2. This means Neovim would delete data created by a different program, on another user's computer.3. This was known before the feature was released.4. They did it…
-
Am I missing something? Are people using persistent undo as backup?This seems however more like of a documentation and UX problem. Neovim should warn and ask before deleting old undo files, or at least back them up, but it's not neovim's fault if people don't use reliable backup and versioning systems. Relying on persistent undo for this is kind…
-
"Vibe shift" is all the rage these days but one area where it's most apparent is modern software.People of Raskin's vintage had a very humanist approach to computing. The mentality was very much an outgrowth of the cultural revolution of the 60s. Computer usage should be joyful rather than toiling. The computer should help you. It should make you…
-
The argument is that developers have a duty not to arbitrarily delete data on your system that you may have relied on that was produced by another program just because they’d like to replace it with something in their own format.I don’t care if you’re volunteering your time; if you build something whose implied purpose and success depends on other…
-
> the attitude that just because something is a persistent file on your filesystem that contains data that you might want is no reason for their program not to delete it meant they had no concept of a duty of care to their users.That's the wrong way to look at it. NeoVIM has a different concept of care for their users. They're optimizing for…