위키위키가 불안한 시스템이라는 건 그런 의미로 받아 들이지는 않았습니다. 저장하라고 했는데 지워버렸다거나 하는, 기능적으로 불안한 시스템은 아니잖아요. 저장하랬으면 저장하는 것이고, merge하랬으면 머지하는 것이고! 여기까지는 맞지요. 이 흐름을 끊었으면 좋겠다는 게
맑은이의 의견이었습니다. 아무튼 여기서 분명한 것은 "
merge 직후에는 반드시 다시 편집해야 한다는 것"입니다. 글이 온전치 않기 때문입니다. 따라서 <저장>단추만 주지 않는다면, 지금 이대로라도, 차이가 나는 부분에 대한 DIFF 메세지를 보여준 것까지라도, 사용자는 얼마든지 고맙게 유용하게 쓸 수가 있습니다.
프로그램이 어떤 구체적인 기능을 사용자에게 주었을 때, 사용자는 그 기능을 믿고 씁니다. 거기에서 실패 가능성을 염두에 두지는 않고 믿고 쓴다는 말입니다. 쓰다고 실패하는 경우가 생기기도 하지만 그것은 뻔히 아는 상황은 아니지요. 아무튼 어떤 작업이 실패를 하더라도, 실패의 흐름 속에서 데이타에 손상이 가해질 수 있음을 고려하지 않습니다. 만약 어떤 작업이 실패했다면 그 트랜잭션은 끝을 내야지 연속하게 되면 문제가 발생할 소지가 크다고 생각합니다. 아는 사람은 쓰던가 안쓰던가 하겠지만, 처음 접하는 사람이 실패한 내용을 그대로 저장해 버린다면 일이 너무 커져 버릴 수가 있는데 이건 사용자의 잘못인가요?
맑은이가 merge를 처음 만났을 때 이런 행동을 보였답니다.
편집 -> 저장 -> 충돌! -> merge -> 저장 이 게 처음 접하는 사람들의 일반적인 흐름 아닐까요? (크흐,
일반화오류다!) 그랬더니 저장된 내용이 엉터리가 되어 버린 거에요. 설마, 뭔가 잘못되었다면 문제상황을 알려줬겠지, 그랬으면 더 이상 진행하지 않았을텐데. 페이지의 글은 여기 저기가 중복되어 있고 내가 쓰지 않은 글자까지 마구 들어가 있고. 처음엔 누군가가 같이 편집하고 있는 줄 알고 속으로 그랬죠. "당신, 누구요! 왜 남의 글을 쓰는 도중에 건드리냐!" 그런 다음 내가 쓰지 않은 부분, 나의 동작과는 전혀 관련이 없다고 생각되는 부분을, 지워야 하나 말아야 하나."까지 한참을 고민했습니다. "그래! 지우기로 하자, 지금은 한가지만 생각해." 이러면서 다시 편집창을 열어 손으로 일일이 다 지웠다는 것 아닙니까. 우습죠?
맑은이는 얼마나 심각했다고요.
맑은이가 [맑은] 손으로 분명하게 <merge 단추>를 눌렀지만, merge가 그런 것이라고, 상상이나 했겠어요? 사용자는 프로그래머가 만들어준 기능을 믿고 씁니다. 이 문제는 정말이지 한 번 더 생각해 봐 주신다면 고맙겠어요. --
맑은
MoniWiki는 개인위키를 목표로 만들어졌습니다. 당연히 개인위키에서는 merge할 일도 없고 문제점도 잘 드러나지 않겠지요.
FreeFeel, TheBrightsKorea에서도 쓰고 있는데 그곳에서는 이 merge의 잠재적 문제점을 지적하지 않더군요. 암튼, 맑은님이 지적했지만 merge의 충돌문제를 제대로 피해갈 방법은 없습니다. 강제로 저장하지 못하게 하는것은 해결법이 아닙니다.
merge에 실패한 부분은 고치전과 고친 후의 정보를 모두 가지고 있으므로 그것을 저장한다고 정보가 소실되는 것이 아니며, 다른 사람이 좀 더 세심하게 고칠 수 있게 됩니다. 그걸 꼭 고쳐서 저장해야 하는 제한이 있게되면 다른 사람과의 협업을 오히려 제한하게 된다는것이죠. merge에 실패했을 경우에 경고를 좀 더 분명하게 보여줘야 하겠고, 어떻게 고쳐야 하는지를 좀 더 설명적으로 보여줘야 하겠군요. --고무신
타협안을 내놓습니다. 먼저 merge를 시도하고, 그 시도가 실패하면 Conflict났다는 경고를 보여주고 merge하지 않습니다. 어디가 바뀌었는지 어디가 conflict났는지만 보여주고, 그 내용은 그대로 둡니다. 이때 "Force merge"라는 버튼이 보이게 됩니다. 이 Force merge를 누르면 강제로 merge하고 예전에 처럼 "<<<<<<" 표시가 textarea에 나타나게 됩니다. 이 경우는 사용자가 무얼 하는지 알고 있고 그걸 수정하려 한다는 것을 전제로 합니다. http://chemie.skku.ac.kr/wiki/wiki.php에서 테스트해보세요. --고무신
좋은 아이디어로군요. 고맙습니다. 뎡말뎡말 고맙습니다. 그렇게만 하면
안전해서 좋고, merge의 장점도 그대로 쓰고가 될 것 같은 걸요. 물론 그 상황에 직면해 봐야 제대로 알겠지만, 지금은 일단
고무신님의 새로운 제안을 고맙게 받아들이고, 에,또,지금은 만들어 준 merge기능을 실전에서 충분히 써 보면서 <만든 이의 이상과 쓰는 이의 현실>이 아름답게 조화를 이루도록 꾸준히 노력해 보겠습니다. 이상! [맑은] 소리에 귀기울여듣기 해 줘서 뎡말뎡말 고맙심데이. (감동의눈물질질) --맑은