알람은 스크립트가 아니야
복사본 결정엔 이미 본 뒤집기 조건이 붙어 있었어. 소비자 수가 대충 다섯을 넘으면 패키징을 다시 보고, 본 걸 적어라. 수는 다섯을 넘었어. 열다섯도 넘고. 서른도 넘고. 여섯 주 동안 그 재검토를 적은 사람은 없었어.
그 침묵이 첫 레슨이고, 꾸중이 아냐. 눈에 보이는 조건도 누가 봐야 해. 문서에 앉아 있는 숫자가 아키텍처 파일로 걸어가서 문단을 추가하진 않거든. 조건이 할 일은 누가 질문을 던지는 순간에 끝나는 거야. 질문이 무엇에 관한 건지를 이름 붙여 주니까, 대화가 기분이 아니라 사실을 보게 돼. 늦은 건 제때보다 못해. 그래도 안 하는 것보단 훨씬 낫고, 안 적힌 조건이 만드는 결과가 바로 그 "안 함"이야.
옮기지 않은 재검토
질문이 마침내 열렸을 때, 끌리는 답은 트리거가 시키는 것처럼 보이는 그거였어. 수가 울렸으니 패키지로. 그건 알람을 결정으로 취급하는 거야. 처음 근거는 "소비자가 적다"가 아니었어. 처음 근거는 살 만한 격리가 없다는 거였어. 주인 하나, 기계 하나, 같이 배포되는 형제들, 그리고 이 저장소가 없애려고 존재하는 결함인 버전 어긋남.
그 사실들은 파이썬이랑 타입스크립트 표면에선 그대로였어. 기계 하나 위의 루프백 형제 서른다섯이 네 개일 때보다 격리를 더 필요로 하진 않아. 발행된 패키지는 여전히 변경마다 발행 단계를 넣고, 버전 번호를 만들고, 소비자 둘이 다른 코드를 돌릴 가능성을 열어. 소비자 수만으로는 트리거가 틀린 거야. 파이썬이랑 타입스크립트 답을 진짜로 뒤집으려면 자기 체크아웃만으로 빌드가 안 되는 소비자가 나타나야 해. 그때도 없었고, 지금도 없어.
첫 기록에 칸이 없던 사실
스위프트가 예외였고, 이유는 스위프트 소비자가 더 많아서가 아니야. 이유는 첫 결정 기록에 칸이 없던 사실, 컴파일러야.
벤더된 파이썬 파일은 소스로 임포트돼. 벤더된 타입스크립트 파일은 소비자에서 컴파일되지만, 서로 정합을 맞춰야 하는 키트 타입 그래프를 안 만들어. 각 파일이 잎이거나, 싱크의 파일 대 파일 맵이 맞는 모양일 만큼 잎에 가깝거나. 벤더된 스위프트 파일은 소비자마다 따로 컴파일되는 단위야. 한 번만 테스트할 수가 없어. 그리고 이 가족의 스위프트 소비자는 이미 로컬 경로를 받을 패키지 매니페스트를 갖고 있었어. 첫 기록이 피하려던 설치 의식은 그 쪽에선 원래 없었어.
그래서 재검토는 메커니즘 둘을 냈고, 언어로 갈랐어. 어느 한쪽으로 안 몰린 결과가 나왔어. 다음 레슨 셋이 그 조각이야. 경로 패키지가 진짜 뭔지, 파일 복사본이 왜 기대는 타입을 맞추지 못하는지, 소비자가 키트 트리를 앉은 그대로 컴파일할 때 이빨이 어떻게 생겼는지.