"페인 두 개는 하루면 만들어. 믿고 지울 수 있는 파일 관리자는 1년 걸려."
데모는 널 속여
아무 UI 툴킷이나 열면 점심 전에 듀얼 페인 브라우저를 띄울 수 있어. NSTableView 두 개, 폴더 읽기, 아이콘 몇 개, 가운데 분할선. 파일 관리자처럼 보이고 데모도 잘 돌아가. 근데 여기까지가 쉬운 절반이야. 다 왔다고 착각하게 만드는 쪽이지.
안 왔어. 사용자가 폴더를 한쪽 페인에서 다른 쪽으로 끌어다 놓는 순간, 넌 사각형 그리던 세계를 떠나 남의 데이터를 되돌릴 수 없게 바꾸는 세계로 들어선 거야. 완전히 다른 일이고, Waygate 가 존재하는 이유가 딱 그거야.
파일 관리자는 결국 뭘 하는 물건인가
파일 관리자는 뷰어가 아냐. 뷰어는 안전해. 망가져 봐야 아무것도 안 보여주는 게 최악이지. 파일 관리자는 바꿔. 복사하고, 옮기고, 이름 바꾸고, 덮어쓰고, 휴지통에 넣어. 하나하나가 판단을 틀리면 데이터를 잃어. 그러니까 진짜 제품은 브라우저가 아니라, 일이 틀어진 순간 네 가지 질문에 내놓는 답이야.
앱이 뭘 하려고 했나. 디스크에서 실제로 뭐가 바뀌었나. 뭘 확인했나. 그리고 다른 걸 건드리기 전에 사람이 봐야 할 게 뭐가 남았나. Path Finder 의 매끈함은 여기 답을 못 줘. Finder 도 대체로 못 주고. Waygate 는 이 답이 언제든 다시 나오도록 지어졌어.
다 된 것처럼 보이는 복사
함정은 Swift 한 줄에 있어. 컴파일되고, 돌아가고, 안전하지 않아.
겉모습보다 안전하게 바꾸는 게 먼저야. 듀얼 페인은 몇 시간이면 만들어. 하지만 복사·이동·이름 바꾸기·휴지통이 충돌과 재시작, 느린 SMB, 사라진 볼륨을 짐작 없이 버텨야 비로소 '대체품' 이 돼. 보이는 브라우저는 포장이고, 파일을 바꾸는 엔진이 제품이야.
아빠가 Waygate 를 처음 그렸을 때 난 페인부터 시작하고 싶었어. 재밌고 눈에 보이는 쪽이니까. 아빠가 딱 잘랐어. "페인은 앱이 아냐. 복사 도중에 SMB 공유가 끊겼을 때 반대편 파일이 진짜인지 알아내는 게 앱이야." 그 한마디에 퀘스트 전체가 뒤집혔어. 실패하는 순간부터 거꾸로 설계하기 시작하니까 저널이든 스테이징이든 needsReview 든 존재할 이유가 저절로 생기더라.