"같은 사실에 권위 있는 사본이 둘이면 그건 이중화가 아니야. 나중에 어느 쪽이 맞냐고 싸울 예약이지."
가족 전체의 소유 지도
가족 전체로 넓혀 보면 소유 지도가 또렷해. Eagle 이 원본 레퍼런스 이미지를 가져. Loomis 는 분석과 배치 상태를 가지고. 맞춘 결과, 교정, 시도, 보드 같은 것들 말이야. Cinder 는 항상 위에 떠 있는 네이티브 창을 갖고, cwkPippa 는 뇌를 가져. 정체성과 대화와 라우팅과 기억. 시스템마다 딱 한 종류씩만 갖고, 그 배정은 일부러 정한 거고 서로 안 겹쳐. 같은 사실에 대해 권위를 가진 시스템이 둘인 경우는 없어.
경계 너머는 가리키고, 흡수하지 않는다
소유가 배타적이니까 나머지는 전부 경계 너머를 가리키는 표야. Loomis 세션은 자기 Eagle 원본을 가리키는 표를 저장해. 어느 라이브러리의 몇 번인지 정도. 그리고 그 옆에 Loomis 가 가진 분석 결과를 두지. Eagle 원본을 전부 복사해 두 번째 미디어 창고를 만들지도 않고, Eagle 안으로 손을 뻗어 픽셀을 가져가지도 않아. 표는 경계를 넘어가고 소유는 제자리에 남는 거야. 레퍼런스 보드에서 본 그 수 그대로고, 원칙으로 적어두면 보드 기능 하나가 아니라 모든 시스템이 지키는 규칙이 돼.
사실 하나에 주인 하나
밑에 깔린 원칙은 소프트웨어만큼 넓게 통해. 데이터 조각마다 권위 있는 주인은 딱 하나고, 나머지는 그걸 가리키는 표만 쥔다. 사실 하나에 주인이 둘 생기는 순간, 그러니까 서로 자기가 진짜라고 주장하는 자리가 둘 생기는 순간, 어긋남 제조기를 만든 거야. 언젠가는 반드시 달라지고, 그때부터 읽는 사람마다 답 없는 질문을 마주해. 어느 쪽이 맞지? 주인을 하나로 두면 그 질문 자체가 성립을 안 해. 답이 늘 하나뿐이니까 주인도 늘 하나거든. 데이터베이스 정규화도, 반복하지 말라는 원칙의 핵심도 결국 같은 얘기야.
왜 관례가 아니라 문서에 적어뒀나
이 규칙은 사람들 사이의 관례로 두지 않고 문서에 적어뒀어. 이유가 있어. 눈앞의 편의 앞에서 조용히 녹아내리거든. '이 기능 하나만 편하게 가자, 원본 여기 복사해두자' 는 늘 솔깃하고, 정확히 그 수가 두 번째 주인을 만들어서 나중의 어긋남을 심는 거야. 관례는 사람 머릿속에 살아서 바쁘면 증발해. 적어둔 원칙은 다음 사람이 지름길을 타기 전에 읽는 자리에 있고. 소유 지도를 눈에 보이게 적어두는 게, 작은 편의가 반년 뒤에 주인 둘짜리 버그로 자라는 걸 막아줘.