conv.

All stories
TechActive · 41h

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

many voices

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 ↗
many voices

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 ↗
some voices

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 WicharyMarcin 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

Peak 14 pieces in one hour at Sep 27, 10 AM; 102 pieces over 42 hours (2 articles · 3 posts · 97 comments) Sep 27, 9 AM — 4 pieces · 2 articles · 2 posts — Newswires 2, Hacker News 1, Lobsters 1Sep 27, 10 AM — 14 pieces · 14 comments — Hacker News 14Sep 27, 11 AM — 10 pieces · 1 post · 9 comments — Hacker News 8, Lobsters 1, Mastodon 1Sep 27, 12 PM — 5 pieces · 5 comments — Lobsters 3, Hacker News 2Sep 27, 1 PM — 2 pieces · 2 comments — Hacker News 1, Lobsters 1Sep 27, 2 PM — 3 pieces · 3 comments — Lobsters 2, Hacker News 1Sep 27, 3 PM — 5 pieces · 5 comments — Lobsters 5Sep 27, 4 PM — 1 piece · 1 comment — Lobsters 1Sep 27, 5 PM — 4 pieces · 4 comments — Lobsters 4Sep 27, 6 PM — 1 piece · 1 comment — Hacker News 1Sep 27, 7 PM — 3 pieces · 3 comments — Lobsters 2, Hacker News 1Sep 27, 8 PM — 1 piece · 1 comment — Lobsters 1Sep 27, 9 PM — 1 piece · 1 comment — Lobsters 1Sep 27, 10 PM — quietSep 27, 11 PM — 1 piece · 1 comment — Lobsters 1Yesterday, 12 AM — 2 pieces · 2 comments — Lobsters 2Yesterday, 1 AM — 3 pieces · 3 comments — Lobsters 3Yesterday, 2 AM — 1 piece · 1 comment — Lobsters 1Yesterday, 3 AM — 3 pieces · 3 comments — Lobsters 3Yesterday, 4 AM — 4 pieces · 4 comments — Lobsters 4Yesterday, 5 AM — 3 pieces · 3 comments — Lobsters 3Yesterday, 6 AM — quietYesterday, 7 AM — quietYesterday, 8 AM — 2 pieces · 2 comments — Hacker News 1, Lobsters 1Yesterday, 9 AM — quietYesterday, 10 AM — 2 pieces · 2 comments — Lobsters 2Yesterday, 11 AM — 3 pieces · 3 comments — Lobsters 3Yesterday, 12 PM — 4 pieces · 4 comments — Lobsters 4Yesterday, 1 PM — 5 pieces · 5 comments — Lobsters 5Yesterday, 2 PM — 5 pieces · 5 comments — Lobsters 5Yesterday, 3 PM — 1 piece · 1 comment — Lobsters 1Yesterday, 4 PM — 1 piece · 1 comment — Lobsters 1Yesterday, 5 PM — 4 pieces · 4 comments — Lobsters 4Yesterday, 6 PM — 1 piece · 1 comment — Lobsters 1Yesterday, 7 PM — quietYesterday, 8 PM — 1 piece · 1 comment — Lobsters 1Yesterday, 9 PM — quietYesterday, 10 PM — quietYesterday, 11 PM — quietToday, 12 AM — quietToday, 1 AM — quietToday, 2 AM — 2 pieces · 2 comments — Lobsters 2 1–4
4 PMyesterday8 AM4 PMnow · 3:58 AM ET
  1. 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"…

      girvim1d ago60▲view on Lobsters ↗
    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…

      soraminazukiHacker News1d agoview on Hacker News ↗
    • 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…

      chinmayvim1d ago44▲view on Lobsters ↗
    all of them →
  2. 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…

      gavinhowardHacker News1d agoview on Hacker News ↗
    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.)

      skybrianHacker News1d agoview on Hacker News ↗
    all of them →
  3. 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
    1. 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…

      recursivedoubtsHacker News1d agoview on Hacker News ↗
    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.”

      natbennettHacker News1d agoview on Hacker News ↗
    • >I deleted something from this file, maybe last weekDon't forget time travel: `:earlier 7d`

      linsomniacHacker News1d agoview on Hacker News ↗
    all of them →
  4. 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.

  5. 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

Still unanswered
  • 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?