NeoVim이 Vim의 영속 실행취소 파일을 삭제하고 자기 포맷으로 덮어썼다
- 컴퓨터과학자 David Chisnall이 2000년경부터 써 온 vim의 영속적 실행취소 기록이 NeoVim 설치 후 사라진 경험을 마스토돈에 공개함
- NeoVim은 undo 파일 포맷을 바꾸면서 기존 파일을 변환하거나 다른 이름으로 두지도 않고, vim의 undo 파일을 발견 즉시 삭제하고 vim이 읽지 못하는 자기 포맷 파일로 덮어씀
- Chisnall이 이슈로 문제를 제기하자 NeoVim 측은 persistent undo 포맷은 불안정하니 데이터 보존을 믿지 말라고 답했고, 그가 NeoVim 사용을 그만둔 계기가 됨
- 이 일화는 Jef Raskin의 저서 The Humane Interface(2000)에 나오는 제1법칙 "프로그램은 사용자의 작업을 해치거나 방관으로 해치게 해선 안 된다"를 환기시킴
- 해커뉴스 토론에선 "공짜 오픈소스에는 의무가 없다"는 주장과 "선물이라도 남의 데이터를 지우면 안 된다"는 반박이 부딪혔음
Hacker News opinions
NeoVim 초창기에 써봤는데 그때 포지셔닝이 "브레이킹 체인지 있는 Vim"이었음.
지금은 이 문제 없음. undo 포맷을 바꿔야 바이트 단위 버퍼 변경 이벤트가 제대로 잡혀서 tree-sitter 같은 게 먹혔고, 포맷에 버전이 붙어서 안 맞으면 에러를 뱉어줌.
일주일 전으로 시간 되돌리기는 :earlier 7d 치면 됨.
오픈소스 개발자는 공짜로 소프트웨어를 주는 사람들인데 무슨 의무. 호환이 필요하면 정중히 부탁하거나 PR로 도와야지.
공짜로 음식 줘도 상대를 독살하면 안 되는 거랑 같은 원리임. 안 받으면 그만이라는 논리가 안 통함.
"이 차 공짜야!" 하고 받아서 가속페달 밟았더니 곰덫이었어. 공짜라고 그냥 참으란 얘기잖아.
무료 진료하는 의사한테 진료 의무가 없다는 논리인데, 이건 말이 안 되지.
위 댓글 수정함. 기존 파일을 비호환 방식으로 변형한 부분을 빠뜨렸었는데, 그건 피했어야 했어. 이건 인정함.
NeoVim은 vim을 받아서 "더 낫게" 한다고 나온 프로젝트임. 개선하겠다는 약속이 있으니 나빠지지 않을 의무가 생김.
"해야 한다"랑 "법적 의무가 있다"를 자꾸 섞어서 말하는데, 라이선스 들먹일 필요 없이 그냥 하면 안 되는 짓을 한 거임.
진짜 문제는 NeoVim이 다른 프로그램이 만든 데이터를 지웠다는 점이야. 정면으로 반박할 수 없음.
의무라기보단 품질과 신뢰 문제임. "불만 있으면 포크해"라는 태도가 계속 나오는 순간 유저는 등을 돌리고 오픈소스만 손해임.
페이스북이 서비스를 공짜로 준다고 개인정보 보호 의무가 없어지는 건 아니잖아?
나도 NeoVim 유저인데 업그레이드 뒤에 undo가 안 먹힌 적이 있었거든. 포맷이 바뀌면 파일을 지워버리는 거라면 나도 당한 걸 수 있음. 갈아탈까 진지하게 고민 중.