마크다운 에디터를 하나 더 만든 이유
마크다운 에디터는 이미 많은데 왜 하나 더 만드나요. 기능이 모자라서가 아니라, 열어두는 값과 저장이 남기는 흔적과 손끝의 느낌이 한 제품 안에서 같이 맞은 적이 없어서예요.

마크다운 에디터를 고를 때마다 하나씩 포기해야 했어요.
인라인 편집이 편한 앱은 저장할 때 파일을 바꿨어요. 파일을 그대로 보존하는 앱은 편집 경험이 아쉬웠고요. 노트 기능이 풍부한 앱은 문서 하나를 열기에도 무거웠어요.
결국 에디터를 두 개씩 열어 뒀어요.
그래서 mote를 만들기 시작했어요. 세 가지를 모두 지키는 에디터예요.
- 마크다운 기호를 숨기고 바로 편집할 것
- 내가 쓴 파일을 그대로 저장할 것
- 웹엔진 없이 가볍게 동작할 것
각각을 해내는 제품은 이미 많아요. 하지만 셋을 동시에 만족하는 제품은 찾지 못했어요.
가벼움은 숫자로 말할게요
인라인 편집을 지원하는 마크다운 에디터는 대부분 WebKitGTK이나 Chromium 같은 웹엔진을 사용해요. 마크다운을 HTML로 바꿔 브라우저에 그리는 방식이죠.
구현은 쉬워지지만 비용이 생겨요. 문서 옆에 브라우저 하나가 함께 떠 있는 셈이니까요. 프로세스와 메모리가 늘고, 키 입력도 여러 단계를 거쳐요.
그런데 이 비용을 공개하는 제품은 드물어요. 제품 페이지에는 유휴 CPU나 키 입력 지연 대신 ‘가볍다’는 말만 남아요.
mote는 다르게 해요.
유휴 CPU, 메모리, 키 입력 지연, 시작 시간을 같은 컴퓨터에서 같은 방식으로 재요. 재는 스크립트와 원자료도 저장소에 있어요. 정한 성능 예산을 넘긴 빌드는 출시하지 않아요.
비교할 때도 같은 시점에 잰 값만 사용해요. 측정하지 못한 값은 0으로 쓰지 않고, 측정하지 못했다고 표시하고요.
가벼움은 느낌이 아니라 측정값이어야 하니까요.
저장할 때 파일을 고치지 않아요
git으로 문서를 관리하다 보면 이상한 diff를 만날 때가 있어요.
표의 셀 하나만 고쳤는데, 다음 커밋에는 바꾸지 않은 줄까지 잔뜩 올라와요. 에디터가 저장하면서 표의 공백이나 정렬을 다시 맞췄기 때문이에요. 내가 고친 한 줄과 에디터가 고친 스무 줄이 섞이는 거죠.
모든 내용이 바뀌는 건 아니에요. 줄바꿈이나 연속 공백을 잘 보존하는 에디터도 있어요. 주로 표와 정렬에서 차이가 생겨요. 파일을 그대로 저장하는 기능도 mote만의 것은 아니고요.
그래도 꼭 지켜야 할 조건이라고 생각했어요.
mote에서는 텍스트가 기준이에요. 파일의 바이트를 그대로 버퍼에 담고, 굵게 표시한 글자나 표, 수식은 그 위에 그려요. 저장할 때는 버퍼를 그대로 디스크에 써요.
화면은 보기 좋게 바뀌어도 파일은 몰래 바뀌지 않아요.

한글 입력부터 제대로 만들어요
웹 기반 에디터의 미묘한 불편은 손끝에서 느껴져요. 스크롤과 블러, 움직임이 비슷해 보여도 운영체제의 기본 앱과는 조금씩 달라요.
한글을 입력할 때는 차이가 더 커져요.
조합 중인 글자가 갈라지거나, 커서가 튀거나, 줄 끝에서 입력이 빠지는 문제가 생기기도 해요. 웹 에디터가 한글 조합 이벤트를 처리하는 과정에서 나타나는 문제예요.
mote는 글자와 효과를 운영체제가 직접 그리게 했어요. 한글 조합도 플랫폼 입력기에서 바로 받아요. 대신 운영체제마다 입력 방식을 따로 구현하고 실제 기기에서 확인해야 해요. 지금은 Linux이고, macOS와 Windows는 개발 중이에요.
더 어려운 길이지만, 긴 글을 쓰는 사람에게는 이 차이가 중요해요.

#가 흐리게 드러나고, 위쪽의 굵게·기울임·인라인 코드는 기호 없이 그려져 있어요.mote가 필요한 사람은 많지 않을 수 있어요.
git으로 README와 설계 문서를 관리하는 개발자. 한국어로 긴 글을 쓰는 사람. 노트북에서 하루 종일 에디터를 켜 두는 사람.
하지만 이들이 에디터를 떠나는 이유는 분명해요.
지저분한 diff. 끊기는 한글 입력. 계속 도는 팬.
하지 않을 것도 정했어요
mote에는 동기화, 플러그인, 백링크, AI, 협업 기능이 없어요.
자체 동기화를 만들지 않아요. 계정도 서버도 두지 않고요. 문서 폴더에는 별도의 설정 파일조차 만들지 않아요. 마크다운으로 표현할 수 없는 상태가 필요한 기능은 넣지 않았어요.
그래서 폴더에는 .md 파일만 남아요. iCloud나 Syncthing, git은 mote의 존재를 몰라도 그대로 작동해요.
플러그인 API도 열지 않아요. 플러그인이 타이머 하나만 실행해도 성능 약속이 깨질 수 있기 때문이에요. 대신 테마와 스니펫, 내보내기 템플릿은 열어 둬요. 편집 중의 성능에 영향을 주지 않으면서 결과물의 모양을 바꿀 수 있어요.
백링크와 그래프 뷰도 만들지 않아요. 노트 데이터베이스와 경쟁하려는 제품이 아니니까요. 폴더 트리와 표준 상대 링크까지만 지원해요.
AI도 넣지 않아요. 요약하거나 이어 쓰지 않고, 문서 폴더를 읽어 외부로 보내지도 않아요. 편집기가 내 문서를 어디에도 보내지 않는 것 역시 중요한 기능이라고 생각해요.
실시간 협업도 지원하지 않아요. 공동 편집을 하려면 서버의 문서 모델이 기준이 돼야 해요. 그러면 디스크의 파일을 그대로 지킨다는 원칙과 충돌해요.
둘 중에서 mote는 파일을 골랐어요.
Obsidian의 생태계가 필요하다면 Obsidian이 더 나아요. Typora의 오랜 안정성이 중요하다면 Typora가 맞고요. iA Writer의 타이포그래피도 아직 우리가 따라가야 할 목표예요.
mote가 모든 마크다운 에디터를 대신하려는 건 아니에요.
마크다운 에디터가 하나 더 필요했던 것도 아니고요.
파일과 노트북을 함께 존중하는 에디터가 하나 필요했어요.