他们对用户没有任何审慎义务的概念。
On caring for user data: NeoVim caused Vim undo files to be deleted

原始链接: https://unsung.aresluna.org/they-had-no-concept-of-a-duty-of-care-to-their-users/

计算机科学家 David Chisnall 最近分享了他对 Neovim 的不满,因为该软件永久删除了他长期的撤销历史记录。作为一名长期使用 Vim 的用户,Chisnall 依赖于 Vim 的“持久撤销”(persistent undo)功能——即使在重启或数月不使用后,该功能也能保存编辑历史记录,作为他数据的一项保障。 当他尝试使用 Neovim 时,软件在未经提示的情况下,以一种不兼容的格式覆盖了他现有的撤销文件。当 Chisnall 报告这一数据丢失问题时,开发人员不予理会,称用户不应依赖其自身数据的持久性。这次经历使 Chisnall 得出结论:该团队对用户缺乏基本的“注意义务”(duty of care)。 这一事件凸显了杰夫·拉斯金(Jef Raskin)在《人机界面》(*The Humane Interface*)中提出的第一法则:程序绝不能损害用户的数据,也不能因不作为而让数据受到损害。对于软件用户和设计者而言,这个故事提醒人们,可靠性和对用户劳动成果的尊重,与技术创新同样重要。当软件将用户生成的数据视为可丢弃之物时,就违背了人性化界面设计的核心原则。

以下内容概述了 Hacker News 上关于 NeoVim 处理“持久撤销”(persistent undo)文件方式的一场激烈争论。 **问题所在:** 批评者指出,NeoVim 在引入一种新的、不兼容的撤销文件格式时,开始静默删除旧的撤销文件,包括由原版 Vim 创建的文件。由于许多用户在迁移到 NeoVim 时沿用了现有的 `vimrc` 配置,导致他们无意间共用了同一个撤销文件目录,从而在毫无预警的情况下永久丢失了编辑历史。 **争论焦点:** * **批评者**认为,NeoVim 的维护者缺乏“尽责义务”。他们主张软件不应静默销毁用户数据(尤其是由其他程序创建的文件),开发人员应该提供迁移路径或直接忽略不兼容的文件,而非采取这种具有破坏性的设计。 * **辩护者**则认为,持久撤销只是一项“尽力而为”的便利功能,而非可靠的版本控制系统。他们指出,当文件被外部修改时,Vim 本身也会重置撤销历史。许多人还提到开源软件“按原样提供”的本质,认为用户应该依靠适当的版本控制(如 Git)来确保数据安全,且用户最终应对自己的配置选择负责。
相关文章

原文

A Mastodon post by computer scientist David Chisnall has a very Unsung opener:

I have used vim since around 2000. I have written five books, a PhD thesis, a few dozen papers and over 150 articles with it. At this point, my higher brain functions are not engaged at all when I use a bunch of common vim commands, they just happen. Documents I wrote with anything else have random :w in the middle.

Chisnall goes on to talk about one specific vim feature:

Persistent undo is one of my favourite features of vim. […]

I don’t often need the persistent undo. But on the few occasions when I have needed it, it’s been invaluable: ooops, I deleted something from this file, maybe last week and one reboot ago, what was it? Undo until I find it, copy it, paste it into the current version. Or, a bit more commonly: I had this working, then I tidied it up ready to commit, now it isn’t working, what did I do?

Vim has kept this working across major version upgrades over a period of about 20 years. I don’t even think about it, it’s just part of Raskin’s First Law: A program may not harm a user’s data or, through inaction, allow a user’s data to come to harm. If vim or the computer crash, or if I close a file and come back to it six months later, my undo history is still there.

NeoVim is a fork of vim (in news for other reasons):

So I tried NeoVim when it was quite new. Vim that you are familiar with, but better? Great!

The first thing I noticed in NeoVim was that undo didn’t work. I tried opening the file in vim and undo didn’t work there either.

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.

I raised an issue about this and was told that the persistent undo format was unstable and users should not rely on data being preserved in a feature explicitly called persistent undo. It had changed once and would probably change again.

And that ended my experience with NeoVim. The authors showed immediately that they absolutely could not be trusted with any of my data. Breaking persistent undo is something I could forgive as a bug, but 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.

I liked this post (which I quoted almost in its entirety), because it covers a few important things:

  • I have never heard of the persistent undo like that, and it seems kind of amazing.
  • People do remember when software loses their hard work or disrespects them.
  • I can see how “It had changed once and would probably change again” can be such a powerful feeling.

I also loved it for the appearance of Raskin’s First Law. Jef Raskin, of Macintosh and Canon Cat fame, put together the three laws in his 2000 book The Humane Interface, and they go as follows:

  • A computer shall not harm your work or, through inaction, allow your work to come to harm.
  • A computer shall not waste your time or require you to do more work than is strictly necessary.
  • An interface is humane if it is responsive to human needs and considerate of human frailties.

It was a very important and formative book for me to encounter as a young designer. I have no idea how these laws haven’t made it to Unsung before today.

联系我们 contact @ memedata.com