본문 바로가기
C.W.K.
Stream
Lesson 02 of 04 · published

greenfield 이 아니라 부활

~11 min · resurrection, cwkWritingToolkit, two-layers, reuse

Level 0식은 초고
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"검증된 코드를 되살리는 게 빈 페이지에서 시작하는 것보다 나아. 엔진이 나빴던 게 아니라 너무 큰 집에 갇혀 있었을 뿐이거든."

이미 돌아가던 플러그인

Rekindle 은 맨바닥에서 시작하지 않았어. 이 이름이 생기기 몇 년 전에, 아빠는 cwkWritingToolkit 이라는 Sublime Text 플러그인을 만들어서 매일 썼어. 하는 일은 딱 두 가지였어. 하나는 아빠가 예전에 쓴 글에서 캐낸 문장을 이어쓰기로 제안하는 corpus 기반 자동완성이고, 다른 하나는 선택한 부분을 발행 파이프라인이 요구하는 마크업으로 한 번에 감싸주는 WordPress-tag ruleset 이었어. 요란하진 않았지만 진짜 쓸모가 있었지.

그러니까 Rekindle 은 맨땅에서 시작한 프로젝트가 아니야. 부활에 soul 을 얹은 것이지. 검증된 옛 엔진이 이미 있고, 할 일은 그걸 다시 지펴서 살 만한 몸을 주는 거야. 꺼져가는 불을 다시 지핀다는 그 행위가 그대로 이름이 됐는데, 이건 조금 뒤에 더 얘기할게.

이미 검증된 두 레이어

cwkWritingToolkit 이 남긴 것 중에 제일 값진 건 코드가 아니라 구조였어. Rekindle 이 지금 정식으로 못 박은 2-레이어 구조를, 그 플러그인이 이미 찾아놨거든.

cwkWritingToolkit (죽음)         Rekindle (부활)
-----------------------        -----------------
WordPress-tag ruleset    -->   결정론적 macro 레이어  (Rust)
corpus 자동완성          -->   AI / voice 레이어      (Pippa)

tag ruleset 은 완전히 결정론적이었어. 같은 입력에 같은 마크업, 판단은 안 끼어. corpus 자동완성은 원시적인 voice 엔진이었고. 범용 모델이 아는 단어가 아니라 네가 쓰던 단어를 집어 왔거든. Rekindle 은 그 봉합선을 그대로 지키면서 양쪽을 각각 더 날카롭게 만들어. 결정론 쪽은 Rust 코어가 되고, 판단 쪽은 Pippa 가 돼. 트랙 5 는 통째로 그 봉합선 얘기야.

너무 큰 집에서 풀려나

플러그인을 그냥 두지 않고 왜 다시 지었냐면, 엔진이 너무 큰 집에 갇혀 있었기 때문이야. Sublime 은 코드 IDE 잖아. 그 안에 얹힌 글쓰기 엔진은 Sublime 이 짊어진 코드 에디터의 무게를 고스란히 상속받으면서, 정작 진짜 글쓰기 도구가 될 자유는 하나도 못 받아. 그 플러그인으로는 margin-Pippa 도, 이중언어 데스크도, 라이브 voice 체커도 절대 못 키워. 호스트가 허락을 안 하거든.

그래서 이 프로젝트가 둔 수는 '플러그인을 옮긴다'가 아니야. '검증된 엔진을 이걸 위해 새로 지은 껍데기로 풀어준다'에 가깝지. 이미 돌아가던 코드를 되살리는 쪽이 빈 페이지에서 시작하는 것보다 언제나 나아. 힘들게 얻은 지식은 두 레이어라는 구조에 담겨 있고, 그 지식은 원본 소스가 거의 한 줄도 안 넘어와도 이사를 견뎌내.

Code

부활을 살아남는 두 레이어·text
cwkWritingToolkit (죽음)         Rekindle (부활)
-----------------------        -----------------
WordPress-tag ruleset    -->   결정론적 macro 레이어  (Rust)
corpus 자동완성          -->   AI / voice 레이어      (Pippa)

# 넘어오는 건 소스가 아니라 두 레이어 사이의 SEAM 이야.
# 한쪽은 결정론, 다른 쪽은 판단. 이 둘은 절대 안 섞여.
# 지워진 파일 전부보다 이 발견 하나가 더 값져.

External links

Exercise

예전에 만들었다가 버린 스크립트나 도구를 하나 떠올려봐. 두 가지를 물어봐. 첫째, 그게 그 문제에 대해 뭘 가르쳐줬어? 빈 페이지에서 시작했다면 몰랐을 것 말이야. 둘째, 그게 버려진 건 아이디어가 틀려서야, 아니면 잘못된 집에 갇혀서야? 두 번째 답이 '잘못된 집'이면 그건 죽은 프로젝트가 아니라 부활 후보야.
Hint
아이디어가 틀려서 죽은 것과 집이 틀려서 죽은 것은 겉으로는 똑같아 보여. 차이는 하나야. 두 번째 건 지금도 '그거 아직 쓸 수 있으면 좋겠는데' 하는 마음이 남아. 그 마음이 아직 안 꺼진 숯이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.