"투영은 복사도 아니고 가둬 두는 것도 아냐. 대화가 뭔지는 안 건드리고 어디서 태어났는지만 말해 주는 이름표야."
폰에서 태어난 대화가 어디에 나타나나
Pippa Go 대화는 태어날 때부터 canonical 이야. 그렇다고 백엔드가 출처를 몰라도 되는 건 아니고. 정리하고, 걸러 보고, 뭔가 판단하려면 폰에서 왔다는 걸 알아야 하거든. Pippa Go 는 가볍게 두 가지만 해. 대화마다 origin surface 태그를 붙여. '이건 Pippa Go 에서 만들어짐' 하고. 그리고 서버가 소유한 시스템 폴더로 투영해서 폰에서 태어난 대화를 한군데 모아 두고. 둘 다 대화의 본질은 안 건드려. 여전히 평범한 canonical 대화야. 어디서 시작했는지 도장 하나 찍힌 채로 깔끔한 서랍에 들어가 있을 뿐이지.
투영이랑 fork 랑 복사
'투영' 이라는 단어가 꽤 정확하게 일하고 있으니까, 그게 아닌 것들이랑 나란히 놓고 봐.
- 복사가 아냐. canonical 저장소엔 대화가 하나뿐이야. 시스템 폴더는 복제본을 쥐는 게 아니라 그 대화를 참조로 담은 뷰를 쥐고 있어.
- fork 도 아냐. 폰이 따로 혈통을 낳은 게 아니거든. 시스템의 나머지가 보는 것과 똑같은 객체고, 역사도 같고 앞날도 같아.
- 투영이야. canonical 대화 하나를 정리하고 이름표 붙여서 드러낸 거. 폴더가 자기 소유도 아닌 파일들을 묶어 보여주는 거랑 같아. 폴더를 옮겨도 진실이 이사 가는 게 아니라 참조가 움직이는 거고.
도장이랑 폴더가 왜 밥값을 하나
origin surface 태그랑 시스템 폴더는 형식주의가 아냐. 진짜로 뭔가를 또렷하게 만들어 줘. 백엔드가 '어느 대화가 폰에서 왔지?' 에 추측 없이 답할 수 있고, 폰에서 태어난 대화가 다른 뷰를 어지르지 않고, 폰 전용 동작을 걸 깨끗한 이음매가 생기거든. 이 표면들이 쓰는 첫 턴 뒤 자동 제목 규칙 같은 거. 그리고 중요한 건, 이걸 다 하면서도 코어에서 폰 대화를 이등 시민이나 특수 케이스로 만들지 않는다는 거야. 이름표 달고 라벨 붙은 서랍에 들어간 평범한 대화일 뿐이거든. 예외가 아니라 정리인 거지. 그 절제가 투영을 정직하게 지켜. 폰은 대화가 어디에 정리되는지까진 건드려도, 그게 근본적으로 뭐냐는 절대 못 건드려.