Installing NeoVim caused original Vim undo files to be deleted
The Cost of Innovation: When NeoVim Erased Vim's History
About the Author
This piece is shared by Marcin Wichary, a seasoned professional who has navigated roles as a manager, front-end developer, typographer, and UX designer at industry giants like Figma, Medium, and Google. Beyond his corporate career, Marcin has authored a book on the art of typing and keyboards, and frequently publishes essays on the intersection of technology and design.
Connect with Marcin:
- 🐘 Mastodon
- 🦋 Bluesky
- 📡 RSS Feed
A Lesson in "Duty of Care"
Marcin recently highlighted a poignant post from computer scientist David Chisnall, which serves as a cautionary tale about software development ethics. Chisnall is a power user of vim, having relied on it since the year 2000 to produce a massive body of work:
- 5 Books
- 1 PhD Thesis
- Dozens of academic papers
- 150+ Articles
For Chisnall, vim is so ingrained in his muscle memory that his "higher brain functions" don't even engage during editing. In fact, he often accidentally types :w (the save command) into other text editors.
The Magic of Persistent Undo
One specific feature Chisnall treasures is Persistent Undo. This allows a user to roll back changes even after a file has been closed or the system has rebooted.
Common Use Cases:
- Recovering a snippet deleted a week ago.
- Reverting "cleanup" changes that accidentally broke working code.
For two decades, vim maintained this functionality across version upgrades, adhering to a fundamental principle: User data must never be harmed.
The NeoVim Incident
When NeoVim (a fork of the original vim) was in its early stages, Chisnall decided to give it a try. The experience was disastrous.
The Sequence of Failure
Upon reporting this, Chisnall was told that the persistent undo format was stable unstable and that users shouldn't rely on it—despite the feature being explicitly named "persistent undo."
Comparison of Philosophies
| Feature | Original Vim Approach | Early NeoVim Approach |
|---|---|---|
| Undo Files | Preserved across versions | Deleted if incompatible |
| Data Integrity | Primary Priority | Secondary to format changes |
| User Trust | High (20+ years) | Compromised |
Chisnall's conclusion was stark:
"The authors showed immediately that they absolutely could not be trusted with any of my data."
He argues that while a bug is forgivable, the attitude—that a program should feel free to delete user data simply because a file format changed—demonstrates a total lack of duty of care.
The Humane Interface
This story resonates with Marcin because it mirrors the philosophy of Jef Raskin (known for his work at Canon and the Macintosh). In his 2000 book, The Humane Interface, Raskin outlined three core laws for computing:
Raskin's Three Laws
- Law 1: A computer must not damage your work or, through negligence, allow it to be damaged.
- Law 2: A computer must not waste your time or force you to perform unnecessary labor.
- Law 3: An interface is "humane" if it is considerate of human limitations and responsive to human needs.
Final Reflections
Marcin notes that people never forget when software destroys their hard work or treats them with disrespect. The feeling that "it changed once and will likely change again" creates a permanent rift in trust.
# The tragedy in one line:
rm -rf ~/.vim/undo/* # (Simulated data loss)
This serves as a reminder to all developers: the technical "instability" of a feature is no excuse for the destruction of user data.
Tags: #change-management #18-principles #text-editing #undo