“They had no concept of a duty of care to their users.”

Marcin Wichary

그들은 사용자에 대한 주의 의무라는 개념 자체가 없었다.

원문은 Marcin Wichary님이 에 게재했습니다. 이 블로그 구독하기

컴퓨터 과학자 데이비드 치스널의 마스토돈 게시물은 아주 Unsung다운 도입부로 시작한다:

나는 2000년 즈음부터 vim을 써왔다. 이걸로 책 다섯 권, 박사 학위 논문 한 편, 수십 편의 논문과 150편이 넘는 글을 썼다. 이제는 흔한 vim 명령어들을 쓸 때 고차원적인 뇌 기능이 전혀 개입되지 않는다. 그냥 손이 알아서 움직인다. 다른 프로그램으로 쓴 문서에는 중간중간에 :w가 랜덤하게 끼어 있다.

치스널은 이어서 vim의 특정 기능 하나에 대해 이야기한다:

Persistent undo는 내가 가장 좋아하는 vim 기능 중 하나다. […]

나는 persistent undo를 자주 쓸 필요는 없다. 하지만 필요했던 몇 번의 경우, 그 가치는 이루 말할 수 없었다. 이런 식이다. 어라, 이 파일에서 뭔가를 지웠는데, 아마 지난주였고 그사이 재부팅도 한 번 했는데, 뭐였더라? 찾을 때까지 undo를 하고, 복사해서 현재 버전에 붙여 넣으면 된다. 혹은 조금 더 흔한 경우로는, 분명 동작하고 있었는데 커밋하려고 정리 좀 했더니 이제 동작하지 않는다. 내가 뭘 건드린 거지?

Vim은 약 20년에 걸쳐 메이저 버전 업그레이드를 거치면서도 이 기능을 계속 유지해 왔다. 나는 이제 이걸 의식조차 하지 않는다. 그저 래스킨의 제1법칙의 일부일 뿐이다. 프로그램은 사용자의 데이터를 해쳐서는 안 되며, 아무것도 하지 않음으로써 사용자의 데이터가 해를 입도록 방치해서도 안 된다. vim이나 컴퓨터가 충돌하더라도, 혹은 파일을 닫고 6개월 뒤에 다시 열더라도, 나의 undo 기록은 그대로 남아 있다.

NeoVim은 vim의 포크다(다른 이유로 화제가 된 바 있다):

그래서 NeoVim이 꽤 초기였을 때 써봤다. 익숙한 vim인데 더 좋다니? 훌륭하잖아!

NeoVim에서 가장 먼저 알아차린 건 undo가 동작하지 않는다는 것이었다. vim에서 파일을 다시 열어 보니 거기서도 undo가 역시 동작하지 않았다.

Neovim은 undo 파일의 형식을 바꿔 놓았다. 기존 파일을 업그레이드하지도 않았다. undo 파일에 다른 이름을 쓰지도 않았다. 그저 vim undo 파일이 존재한다는 것을 알아채고는 그것을 삭제해 버리고(그 안에 있던 모든 데이터를 날려버리고) vim이 읽을 수 없는 파일로 교체해 버린 것이다.

나는 이에 대해 이슈를 제기했고, persistent undo 형식이 불안정하니 persistent라는 이름이 명시된 기능에 데이터가 보존될 거라고 기대해서는 안 된다는 답변을 받았다. 이미 한 번 바뀌었고 앞으로도 또 바뀔 가능성이 높다는 것이었다.

그걸로 나의 NeoVim 경험은 끝났다. 개발자들은 내 데이터를 전혀 믿고 맡길 수 없는 사람들이라는 걸 즉시 보여줬다. persistent undo가 깨진 것 자체는 버그로 보고 용서할 수 있다. 하지만 파일시스템에 있는 영구 파일이고, 그 안에 사용자가 필요로 할 수도 있는 데이터가 들어 있다는 사실만으로는 자신들의 프로그램이 그 파일을 삭제하지 않을 이유가 되지 않는다는 태도는, 그들에게 사용자에 대한 주의 의무라는 개념 자체가 없다는 뜻이었다.

나는 이 글이 좋았다(거의 전문을 인용했을 정도다). 몇 가지 중요한 점을 다루고 있기 때문이다:

  • 나는 저런 식의 persistent undo에 대해 들어본 적이 없는데, 꽤나 놀라워 보인다.
  • 사람들은 소프트웨어가 자신의 노고를 날려버리거나 자신을 무시했을 때 그걸 기억한다.
  • “이미 한 번 바뀌었고 앞으로도 또 바뀔 것이다”라는 말이 얼마나 강한 감정을 불러일으킬 수 있는지 알 것 같다.

나는 또 이 글에 래스킨의 제1법칙이 등장하는 점이 마음에 들었다. 매킨토시와 Canon Cat으로 유명한 제프 래스킨은 2000년 저서 The Humane Interface에서 세 가지 법칙을 정리했는데, 내용은 다음과 같다:

  • 컴퓨터는 당신의 작업을 해쳐서는 안 되며, 아무것도 하지 않음으로써 당신의 작업이 해를 입도록 내버려 두어서도 안 된다.
  • 컴퓨터는 당신의 시간을 낭비해서는 안 되며, 꼭 필요한 것 이상으로 더 많은 작업을 요구해서는 안 된다.
  • 인터페이스는 인간의 필요에 반응하고 인간의 취약함을 배려할 때 인간적이다.

이 책은 젊은 디자이너 시절의 나에게 매우 중요하고 나를 형성하는 데 큰 영향을 준 책이었다. 이 법칙들이 지금까지 Unsung에 등장하지 않았다는 게 믿기지 않을 정도다.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글