"기능 목록을 쓰지 마. 그게 다시 범용 에디터가 되는 길이야."
기능 목록을 쓰지 마
아키텍처 문서가 대놓고 적어놨고, 프로젝트 전체를 마무리하는 규율이기도 해. 기능 목록을 쓰지 마. 목록은 완결성을 위한 완결성을 불러오거든. 목록에 있다는 이유만으로 체크박스를 치기 시작하고, 어느 날 고개를 들면 도망쳤던 그 최대공약수 에디터를 다시 만들어놨을 거야. 이번엔 네 이름을 달고. 기능 목록은 계획이 아니야. 계획 옷을 입은 병이지.
벽돌을 쌓되 가장 작은 마법부터
목록 대신 놓은 게 벽돌이야. 가장 작은 마법부터 하나씩 쌓는 거지. 벽돌 0 은 브레인이 아예 없는, 그래도 진짜 쓸 만한 로컬 에디터였어. 창 하나, 빌려 온 CM6 코어, 파일 열고 고치고 저장하기, 그리고 Live Preview. 제일 위험한 변수부터 먼저 증명하고 혼자 설 수 있게 만든 거야. 코어가 한국어 IME 를 버티나, 파일 왕복이 되나, decoration 으로 Live Preview 가 나오나. 그다음에야 벽돌 1, soul 이 올라갔어. 대화 하나를 bind 하고 CMD+K 로 줄을 제자리에서 다시 쓰는 것. 그 순간에 이게 마크다운 에디터가 아니라 Rekindle 이 됐지.
벽돌 0 쓸 만한 로컬 에디터, 브레인 없음
창 + 빌린 CM6 코어 + 열기/편집/저장 + Live Preview
-> 가장 위험한 미지수 증명 (IME, 파일 왕복, decoration)
벽돌 1 soul
cwkPippa 대화 하나 bind + CMD+K inline 재작성
-> 그냥 에디터가 아니라 Rekindle 이 되는 순간
이후 유기적으로 자람. 그 한 명의 진짜 사용자가 손 뻗은 것만
이후에 붙은 것들도 전부 같은 방식으로 자랐어. voice underline, 3-tier 연결, 스냅샷, corpus 자동완성, evidence 패널. 로드맵에서 나온 건 하나도 없어. 전부 아빠가 실제로 글을 쓰다가 벽에 부딪혔고, 그 벽이 치울 만한 가치가 있어서 만들어진 거야. '구체적인 것부터, 미리 일반화하지 말 것' 이 실전에서 이런 모양이야. Loomis 가 실험 하나에서 완전한 스튜디오로, 진짜 필요를 하나씩 채우며 자란 그 방식 그대로고.
네 걸 지어
이제 네 차례야. Rekindle 코드는 private 이라서, 여기서 나눈 건 clone 할 repo 가 아니라 결정의 모양이야. 한 사람을 위해 짓기, 이미 상품이 된 코어는 빌리기, 소스를 모델로 붙들기, 네 기능들이 공유하는 원시 요소 하나를 찾기, 결정론과 판단을 갈라놓기, 브레인은 fork 하지 말고 bind 하기, 파일을 정본으로 지키기, soul 을 중심에 두기. 이건 어떤 스택으로도, 어떤 에디터로도, 어떤 매체로도 옮겨가. 이 레슨 끝에 git clone 은 없고 애초에 있을 수도 없었어. 가져갈 가치가 있던 게 소스가 아니었으니까. 가져갈 건 그 추론이고, 몇 년을 쌓는 건 네 몫이야.