표면 하나는 바깥에 남아
조수를 붙이는 이 가족의 모든 앱이 공용 껍데기를 돌려. 하나만 빼고. 브라우저 확장 하나가 완전히 다른 환경에서 같은 일을 하고, 그건 의도된 비채택이야. 구조적 이유 다섯이랑 같이 적혀 있고, 다시 논쟁이 안 열리게 명시적으로 닫혔어.
이유들은 묶음으로 읽을 값이 있어. 하나만으론 결정적이지 않은데 모이면 압도적이거든.
- 설계상 빌드가 없어. 컴포넌트 프레임워크를 채택한다는 건 콘텐츠 스크립트한테 번들러랑 런타임을 준다는 뜻이야. 채택인 척하는 재작성이지.
- 사이드 모드가 브라우저 자기 네이티브 패널이야. 컨테이너도 드래그 손잡이도 열고 닫기도 브라우저가 그려. 거기 공용 껍데기를 넣으면 껍데기 안의 껍데기야.
- 붙는 모드들은 임의의 남의 페이지에 주입돼. 거기선 클래스 기반 캐스케이드가 설계상 호스트 스타일이랑 충돌해. 확장의 전부-인라인 방식은 적대적 DOM 에 맞는 공학이지 부족한 게 아냐.
- 공용 컴포넌트를 정의하는 규칙이 거기선 불가능해. 계약 전부가 패널이 호스트 내용을 덮지 말고 옆으로 밀라는 거야. 콘텐츠 스크립트는 남의 페이지를 다시 배치 못 해.
- 기하 정보가 확장 저장소에 살아. 일부러 다른 저장 계약이야.
이유가 적혀야 하는 이유
수렴 표에서 빠진 항목은 안 끝난 일이랑 구별이 안 돼. 표는 체크 표시로 가득한데 칸 하나가 비었어. 자연스러운 독법은 누가 시간이 없었나 보다야. 결국 친절한 사람이 변환을 시작하고, 진짜 노력을 쓰고, 끝내버려. 의도된 결정을 부수면서. 아니면 중간에 네 번째 이유를 발견하고, 문단 하나가 알려줬을 걸 배운 채로 포기하거나.
이유를 적으면 수상한 빈칸이 닫힌 질문이 돼. 그 기록은 닫힌 채로 있게 하려고 적었다고 소리 내어 말하고, 그건 사실을 문서화하는 것과 다른 발화 행위야. 미래를 향한 결정이거든.
그래도 뭘 나눠 갖는지 봐
기록에서 제일 센 부분은 마지막 줄이야. 그 확장은 이미 중요한 부분을 나눠 갖고 있어. 얘 패널은 다른 모든 앱이 싣는 그 임베드 표면을 그대로 실어. 그러니까 그 표면의 개선은 확장을 하나도 안 고쳐도 거기 닿아. 내비게이션 컨트롤 하나가 공짜로 내려앉았을 때 확인됐고.
그게 제외를 완전히 다시 짜. "얘만 뒤에 남겨졌다"가 아냐. 나눔이 다른 층에서 벌어지고 있고, 안 나누는 층은 애초에 나눠도 도움이 안 될 층이었다는 거야. 그 문장이 붙은 비채택은 경계고, 없으면 구멍처럼 보여.