On caring for user data: NeoVim caused Vim undo files to be deleted
Thread
Unofficial Hacker News client; not affiliated with Y Combinator.
On caring for user data: NeoVim caused Vim undo files to be deleted
Unofficial Hacker News client; not affiliated with Y Combinator.
recursivedoubts · · focus · HN ↗
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 have no duty to do so or to "care" for their users. (They have already demonstrated they care for their users, btw, by giving them free software.)
EDIT: I missed an important part of the story, which is that they mutated existing files in a non-backwards compatible manner. That should have been avoided, I understand where the (secondary) author is coming from now.
bsoqk · · focus · HN ↗
Grombobulous · · focus · HN ↗
pdonis · · focus · HN ↗
[deleted] · · focus · HN ↗
[deleted]
brookst · · focus · HN ↗
jeremyjh · · focus · HN ↗
Grombobulous · · focus · HN ↗
Maybe if they’re making their own persistent undo standard, use different file naming conventions.
That said, as a fork of Vim, maybe the Neovim authors are at least partially reasonable in assuming that you’re not running multiple forks of Vim that could then potentially conflict with each other. It just sucks that they never really thought of a migration path for this particular feature.
bsoqk · · focus · HN ↗
Grombobulous · · focus · HN ↗
Citizen_Lame · · focus · HN ↗
[deleted] · · focus · HN ↗
[deleted]
jeltz · · focus · HN ↗
[deleted] · · focus · HN ↗
[deleted]
[deleted] · · focus · HN ↗
[deleted]
InsideOutSanta · · focus · HN ↗
Grombobulous · · focus · HN ↗
InsideOutSanta · · focus · HN ↗
> If I give away food I have a duty not to poison you. It doesn’t matter you didn’t pay for it.
If I invite you to eat at my house, there is no health inspector and no government. I'm just giving you free food. Would you agree that I have a duty not to poison you in that case?
[deleted] · · focus · HN ↗
[deleted]
Grombobulous · · focus · HN ↗
If we aren’t making the business analogy though, then Neovim has even less obligation to produce a professional quality product. When you come to my cookout the expectations are different than when you go to a restaurant.
InsideOutSanta · · focus · HN ↗
Grombobulous · · focus · HN ↗
At the top of this discussion parent to where I said “software is not food”
> If I give away food I have a duty not to poison you. It doesn’t matter you didn’t pay for it.
First, I’ll start with the loaded language here: “duty not to poison you.” Yes, duh, no matter what, intentional poisoning is a crime. But the phrase is “not to poison you” which I interpreted to mean that we are taking about harm mitigation/prevention rather than intentional crime.
In that context it very much does matter if the relationship is giving away food for free in a private home versus selling or giving away food in public.
If we are to consider Neovim to line up with the “giving away food for free at my backyard cookout” analogy, they have a more relaxed standard of care. We don’t go to a BBQ and expect the hosts to have training from the department of health and signs that say “employees must wash hands before returning to work.” In this sense, Neovim would say, “hey, we did our best, we tried to make good software but this condition caused it to fuck up your files. Sorry.”
If we are considering Neovim to line up with “McDonald’s giving away free hamburgers for national hamburger day,” then now we have to recognize that the software industry does not involve nearly as much regulation as McDonald’s. Neovim’s story doesn’t change: “hey, sorry, we did our best, …” but McDonald’s doesn’t have that same standard of operation. Whether or not the hamburgers are free they have to get all the same licenses, do all the same training, and make their employees keep all the meats to temperature and all of that.
There’s no regulation around the general quality of software. You don’t have a strong claim to damages if your software crashes or causes problems. The remediation for problems like that is accomplished via SLAs in the business world, which obviously nobody has with Neovim. They’re just providing software as-is with no warranty or guarantee of quality or fit for purpose (#7 in the license agreement) and they’ve even been nice enough to provide the code ahead of time so you can audit it.
So unless someone at Neovim is in an evil lair declaring that they want to delete stuff on purpose to fuck up your day, there’s really not much of a logical case for their negligence here. It was provided at no cost, there are no significant legal regulations on software quality, they offered the code so you can inspect it, and they warned you in the license that it is provided with no guarantees or promises.
This concept of “duty of care” doesn’t exist in the software world, as much as we might prefer it to really exist.
giveaccountpls · · focus · HN ↗
To avoid metaphors: There's an implicit assumption that when you install a piece of software, it will not fuck up your data/system without your consent. No, installing it is not consent, neither is using it. Neovim does exactly that. No amount of food analogies or license quotes will change that fact.
Neovim authors should've just used a separate file, just like they're happy to use separate format and files for the configuration. Instead, they've decided to be dickheads, and interfere with vim's file, even after the issue being pointed out to them.
Grombobulous · · focus · HN ↗
Whether or not that’s a good design is definitely discussion-worthy.
I’m not sure I agree about the concept that programs promise not to fuck up your data without your consent. Programs can’t really know what you are consenting to. The authors can’t assume you’ve read the manual or understand what the program was designed to do.
I think there’s a decent argument to be made that persistent undo files are more akin to metadata, similar to Microsoft Word recovery files or search indexes, but I haven’t made that argument because the author’s frustration on the issue seems logical and valid. It seems like it’s still not meant to be a data storage or backup mechanism: you wouldn’t share it in an email or check it into source control.
giveaccountpls · · focus · HN ↗
This is my main point of disagreement. This is not their decision to make.
> The authors can’t assume you’ve read the manual or understand what the program was designed to do
I think this is correct, but, the principle of least surprise should be paramount here. If the program states something like "migrate all vim-related files to neovim(This will lose all metadata when opened by vim)? y/[N]", I'd concede that neovim wiping data if the user chose Y as acceptable. Yet, they neither display the prompt, nor keep existing data.
[deleted] · · focus · HN ↗
[deleted]
bigstrat2003 · · focus · HN ↗
Grombobulous · · focus · HN ↗
Neovim being free software is a lot different than United Airlines giving me a free flight or my doctor giving me a free consultation.
It’s very true that you can go to civil court and make a claim that a business or individual harmed you. If you do that with Neovim the judge is going to pretty quickly read bullet point #7 of the Apache 2.0 license, you’re going to struggle to prove any kind of mal-intent, you’re going to tell the judge that you paid $0 for the software, and you’ll be pretty quickly sent along your way with no damages awarded.
TheOtherHobbes · · focus · HN ↗
Do you really believe developers have exactly zero moral responsibility to their users? None at all?
Really?
Would you still believe that if you found the developers of ssh deliberately included a backdoor for hackers, or neovim was uploading everyone's code to the NSA?
Grombobulous · · focus · HN ↗
This issue with Neovim sounds like less than ideal design, or a bug, or both, not some kind of intentional affront to users.
Ekaros · · focus · HN ↗
ToucanLoucan · · focus · HN ↗
pdonis · · focus · HN ↗
The only way to "fix" this from a source code perspective would be to fork Neovim.
thih9 · · focus · HN ↗
Chris2048 · · focus · HN ↗
How does this translate to the vim situation?
retsibsi · · focus · HN ↗
xbar · · focus · HN ↗
manvillej · · focus · HN ↗
jeltz · · focus · HN ↗
manvillej · · focus · HN ↗
Everyone in open source is trying to write good software and the definition of good is subjective depending on overall design, features, ease of use, quality, and performance.
If an open source project is missing a feature, go build it. If the project maintainers don’t want it, fork the project. Be the change you want to see in the world. That’s the beauty of open source.
Chris2048 · · focus · HN ↗
> Be the change you want to see in the world.
The feature being: don't delete my data belonging by another program? It's kind of too late once deleted isn't it? And now even that other program cannot use the data either.
pdonis · · focus · HN ↗
Even a gift comes with an implicit promise that it will do no harm. Deleting important data of yours without warning is harm.
timschmidt · · focus · HN ↗
jstanley · · focus · HN ↗
timschmidt · · focus · HN ↗
"Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE."
Unclear? The fact that it's part of a license does not make it a legal-system-only warning.
The software might eat your dog, and feed your homework. Run it at your own risk, and be prepared to submit patches or fork it to make it behave the way one prefers.
mikestew · · focus · HN ↗
Sure, and when it does we can say “this piece of shit ate my dog, and the authors of the software have no concept of a duty of care to their users”. And no amount of “well, axually…” is going to make any difference. I have a hard believing someone is copy-pasting a license file in good faith in response.
timschmidt · · focus · HN ↗
If my neighbor mows my lawn for free, I'm not going to complain about his workmanship. If I want the job done a particular way, the solution is to do it myself, or pay someone to do it the way I like.
tikhonj · · focus · HN ↗
rdiddly · · focus · HN ↗
leoc · · focus · HN ↗
retsibsi · · focus · HN ↗
I think this is a decent analogy, but it works better the other way. If my neighbour offers to mow my lawn, I accept, and then he destroys the flower bed adjacent to the lawn, I will be upset, and I will have every right to complain about what he did. If he reacts by blithely dismissing my concern, then I certainly have the right (and arguably the obligation) to warn others that they should think twice about accepting his offers of gardening assistance.
Some expectations reasonably go without saying; "don't destroy my flower bed when mowing my lawn" is one, and IMO "don't destroy my data without a clear warning and a chance to back out" is another, though of course we might disagree about exactly where this does and doesn't apply.
jeremyjh · · focus · HN ↗
_vertigo · · focus · HN ↗
Some bit of open source software does something bad or unwanted which causes people point out that it shouldn't do that bad thing. In this case, not even "the authors of this software should be held liable for the software doing the bad thing", just, "Hey, the right thing to do would be to update the software to not do the bad thing."
Why does this always lead a zillion people to come out of the woodwork to point at licenses and warnings or whatever? Like, yes, there's a warning. Your software having a warning doesn't mean people can't criticize you and your software for doing bad thing. Your software license does not give you immunity from criticism or from people saying you should change your software.
No, you don't have to change the software. Yes, other people are within their rights to fork the software themselves. But they can also point out that they told you that your software was doing the bad thing and you didn't fix it or change it, and that as a result they don't like you or your software or both — whatever. Nothing at all wrong with that.
jeltz · · focus · HN ↗
timschmidt · · focus · HN ↗
InsideOutSanta · · focus · HN ↗
That's such an obvious category mistake that I'm not sure how to respond. It almost feels like a bad-faith interpretation of Wichary's original point.
timschmidt · · focus · HN ↗
You can't have both.
retsibsi · · focus · HN ↗
Chris2048 · · focus · HN ↗
> anyone gets to do more or less what they want with the code
so if the software had explicitly installed a root kit, you'd say the same?
If you give out free soup, you get to poison it too?
InsideOutSanta · · focus · HN ↗
nikanj · · focus · HN ↗
ryandrake · · focus · HN ↗
leoc · · focus · HN ↗
That does leave the question of why this idea has started to take off more recently. Part of the answer is certainly that Rich Hickey, disgracefully, set the ball rolling in this direction, and that many others have welcomed it as one weird trick and one pat answer for all the worsening problems of developer burnout. Unfortunately it seems hard to dismiss the idea that it's also social breakdown driven by a broader trend, as over time we move further and further from the pre-'60s "neurotic society" of people obsessed with duty and social conformity (often with oppressive or destructive results, to be sure) into the "psychopathic society" in which even people who don't themselves merit a Cluster B diagnosis have internalised narcissistic and psychopathic attitudes.
jeremyjh · · focus · HN ↗
bunderbunder · · focus · HN ↗
This is a great example of why. Most humans have a sense, deep down, that contracts often exist to bridge the gulf between the ethically defensible and the legally defensible.
It's hard to imagine that any sane person who is just looking to use a popular editor would read some broad limitation of liability language like the above, and interpret it to mean, "By the way, we intend to quietly delete certain files created by a competing fork of this project whenever we find them."
It's true that contracts with liability limitation clauses like this are an absolute necessity in this day and age. But there's also a non-legal principle of mutual respect that is absolutely necessary to a healthy open source community.
timschmidt · · focus · HN ↗
Forks of projects trodding all over each others files is one of the more common problems that has happened, historically. Prior to the major efforts around freedesktop.org around configuration standardization, it was quite common. It'd be one of the first things I looked for when switching to a fork.
bunderbunder · · focus · HN ↗
I also suspect that few people actually believe it’s ok and these legalistic defenses are more about circling the wagons. How many people would defend Microsoft if a new Office version automatically and quietly stripped edit history from documents that were originally created by other versions? Would we be hunting for limited liability clauses in their EULA to defend the design decision?
timschmidt · · focus · HN ↗
Thankfully, that's not a thing I ever did.
> I also suspect that few people actually believe it’s ok and these legalistic defenses are more about circling the wagons.
For me it's more about healthy boundaries and expectations. If I'm somehow paying for a project's development, I have higher expectations. If I'm not, I understand that I've chosen the dev/test track and there will be bugs and issues. The developer may choose to run off in an odd direction coughGnome3cough and my only recourse is to fork or hope someone else does. Disagreements as to how things should work happen pretty often.
I'm not defending anything or anyone. Just describing the system as it exists.
xigoi · · focus · HN ↗
bestouff · · focus · HN ↗
gozzoo · · focus · HN ↗
But actually there is! They didn't start from scratch. They took another very successfull and beloved project with the promise "to make it better". There is some promise here and the duty not to make it worse.
owebmaster · · focus · HN ↗
brookst · · focus · HN ↗
margalabargala · · focus · HN ↗
macintux · · focus · HN ↗
How many neovim users were made aware that the software would proactively delete their decade-long file history?
margalabargala · · focus · HN ↗
rwmj · · focus · HN ↗
Snarwin · · focus · HN ↗
JacobKfromIRC · · focus · HN ↗
boredumb · · focus · HN ↗
jeltz · · focus · HN ↗
[deleted] · · focus · HN ↗
[deleted]
LtWorf · · focus · HN ↗
boredumb · · focus · HN ↗
rlue · · focus · HN ↗
I don’t care if you’re volunteering your time; if you build something whose implied purpose and success depends on other people using it, you emphatically have a duty to those people not to silently destroy stuff that was there before your software was.
pdonis · · focus · HN ↗
goodmythical · · focus · HN ↗
If I fork chromium, I do not get to claim that I am a chromium maintainer.
Vim and Neovim are two seperate programs.
SigmundA · · focus · HN ↗
[deleted] · · focus · HN ↗
[deleted]
goodmythical · · focus · HN ↗
[deleted] · · focus · HN ↗
[deleted]
jeremyjh · · focus · HN ↗
pdonis · · focus · HN ↗
If it's going to nuke vim's undo files, it can't hide behind "another program".
jeremyjh · · focus · HN ↗
pdonis · · focus · HN ↗
If that's not your point, then I have no idea what you're trying to say.
pdonis · · focus · HN ↗
From what I can gather, you can use the same vimrc file to control both vim and neovim.
[deleted] · · focus · HN ↗
[deleted]
layer8 · · focus · HN ↗
novia · · focus · HN ↗
yipinwong · · focus · HN ↗
Yes, OSS can start with just a passion without a duty, but as the scale grows you have a duty to make sure it does not have adverse effect.
If you don't like the duty, just make it die by building it crappy like VIM does.
zbentley · · focus · HN ↗
“Ow, the gas pedal is actually a bear trap.”
“Why are you complaining? It’s free!”
dima55 · · focus · HN ↗
[deleted] · · focus · HN ↗
[deleted]
jstanley · · focus · HN ↗
WesolyKubeczek · · focus · HN ↗
InsideOutSanta · · focus · HN ↗
leoc · · focus · HN ↗
mcphage · · focus · HN ↗
Espressosaurus · · focus · HN ↗
k6hkUZtLUM · · focus · HN ↗
mindslight · · focus · HN ↗
And for what it's worth, I have flagged your comment for the inevitable pointless bickering it has precipitated. While applying reductionist frameworks and seeing where they lead is a necessary part of an individual's path to understanding, please avoid pushing ignorant assertions ("there is no duty here") as if they might constitute well reasoned truths.
sdcfgy · · focus · HN ↗
And even mentioning that results in "fork it if you're not happy" which immediately turns everyone off who's had to maintain a fork to fix a minor issue in something before. And anyone who can't fork it is being told to go to hell.
Everyone needs to quite frankly get off their high horse, crank the ego down and listen to users. Because you're damaging open source with the attitude.
30 years ago, things were better. They got a lot worse, particularly since github appeared.
xboxnolifes · · focus · HN ↗
sdcfgy · · focus · HN ↗
TheOtherHobbes · · focus · HN ↗
This is the extreme version of "I enjoy coding but I hate users."
It may be legally valid in absolute technical terms, but I'm going to take a lot of persuading that it's a healthy attitude.
diego_moita · · focus · HN ↗
By that logic, if Facebook gives away their services for free then they don't have the duty to protect their user's privacy and mental health?
ryandrake · · focus · HN ↗
jeremyjh · · focus · HN ↗