"WYSIWYG 은 마크업이 절대 안 보여야 할 때만 값을 해. 마크다운으로 사는 사람한텐 그럴 일이 없고."
WYSIWYG 이 실제로 치르는 비용
Tiptap 이나 ProseMirror, Lexical 같은 WYSIWYG 에디터는 진짜 강력한 물건이야. 다만 정해진 비용이 붙어. 소스 문자열을 rich-text 문서 모델로 갈아치우거든. 이제 bold 도 schema 노드고 헤딩도 노드야. 원래 있던 마크다운은 로드할 때 트리로 파싱됐다가 저장할 때 다시 마크다운으로 serialize 돼야 하고. 표현 하나로 끝나던 걸 셋으로 늘린 셈이지. 트리, 렌더된 뷰, 그리고 오가는 마크다운.
그걸 정당화하는 유일한 조건
이 거래가 값을 하는 조건은 딱 하나야. 마크업 문자가 절대 안 보여야 한다. # 나 ** 를 절대 보면 안 되는 사람들을 위한 워드프로세서를 만든다면, 그러니까 Bold 버튼 누르면 bold 로 보이고 그걸로 끝이길 바라는 사람들이라면, rich-text 모델이 맞고 표현 셋을 유지하는 비용이 그 경험의 값이야. 그것도 충분히 유효한 제품이지. 다만 이 제품이 아닐 뿐이고.
조건: "마크업이 절대 안 보여야 함" -> WYSIWYG 정당 (rich-text 모델)
조건: "마크업이 의미 있음, 유지" -> source 모델 + Live Preview
# Rekindle 을 쓰는 사람은 둘째 줄이야. 그래서 무거운 모델이 얻어주는 게 없어.
아빠는 그 조건에 안 걸려
아빠는 마크다운으로 사는 사람이야. vault 도 에세이도 사이트 콘텐츠도, 몇 년씩 써온 Sublime 과 Obsidian 과 iA 도 전부 source 모드였어. 마크업이 보이는 쪽을 스스로 골랐고, # 를 보고 싶어 해. 그런 사용자한테 WYSIWYG 모델은 매 순간 워크플로와 부딪혀. 의지하는 문자를 숨겨버리고, 직접 편집하면 그만인 파일에 파싱과 serialize 왕복을 강제하고, 순수한 소스를 읽고 싶어 하는 soul 기능들을 죄다 복잡하게 만들거든.
그래서 Rekindle 은 가벼운 길로 가. 소스가 모델이고, decoration 으로 만든 Live Preview 가 렌더된 모델 없이 렌더된 모습만 만들어줘. 커서 없는 줄에선 bold 가 bold 로 보이고, 편집 중인 줄에선 raw ** 가 보여. WYSIWYG 만큼 읽기 좋으면서 표현 셋을 유지하는 세금은 한 푼도 안 내는 거야. WYSIWYG 을 거부한 건 그게 나빠서가 아니야. 그걸 값어치 하게 만드는 유일한 조건이 여기선 안 맞아서지.