"문법을 빌려. DB는 절대 빌리지 마. 통합은 흡수가 아냐."
모든 재사용 아래 깔린 규칙
이 트랙의 모든 재사용이 한 문장에 놓여 있어. 통합은 소유권을 절대 안 넘긴다. Waystone은 Pippa랑 Rekindle이랑 Recall이랑 Lantern이랑 깊이 통합해. 그 통합 전부 뒤에도, 그 형제들 각자는 여전히 전에 소유하던 걸 정확히 소유해. 재사용은 이미 배운 계약을 이어가되 canonical 소유자가 canonical로 남아. 실패 모드엔 이름이 있어. 흡수. 'X랑 통합했다'가 조용히 '이제 X의 데이터를 우리가 갖는다'나 'X 코드를 복사했고 이제 우리 거다'가 되는 거.
제일 깔끔한 예, 저장 없는 문법
Waystone의 breadcrumb 스트림은 가족의 기존 소셜형 스트림에서 영감받았어. interaction 문법을 재사용해. compact composer, 스캔 가능한 타임라인의 짧은 포스트, 후속 조각용 reply, thread, 미디어 preview, draft 보존. 근데 자기 여행 semantics를 부여해. 포스트는 Breadcrumb, reply는 같은 발전 중인 순간의 또 다른 조각, thread는 후보 event 클러스터(소셜 대화가 아니라), pin은 Important Moment. 그리고 결정적 나머지 절반이 여기 있어. 스트림의 emotion이랑 visibility랑 moderation이랑 likes랑 공개 authorship이랑 저장을 하나도 상속 안 해. Waystone은 형태를 재사용하고 자기 데이터는 집에 둬. 기능 하나에 담긴 구별 전부야.
Extract는 허용, Clone은 안 돼
정당한 중간 길이 있어. 두 형제가 진짜 같은 UI primitive가 필요하면, 명시적 소유자를 가진 진짜 generic 공유 조각으로 refactor해. 그게 ledger의 Extract고, 건강해. 금지된 건 게으른 버전이야. 구현을 네 repo에 복사하고 로컬에서 편집하는 거. 그건 소유자 없는 fork를 만들고, 어느 쪽이든 개선되는 날 drift해. 제대로 하는 비용은 그 능력을 소유한 형제가 아니라 필요한 형제가 흡수해. 재사용이 재사용인 건 그 후에도 그것의 canonical 구현이 정확히 하나 남아 있을 때뿐이야.