141: tweet overflow

제 3세대 마크다운 에디터의 조건: 텍스트 번들과 하이브리드 에디터

이전 글에서는 플레인 텍스트로서 마크다운의 한계와 제 2세대 마크다운 에디터의 한계에 대해서 이야기했다.

하지만 마크다운은 실패하지 않았다. 한계는 분명했지만, 매력이 있었기 때문이다. 마크다운 생태계는 시간이 흐름에 따라 확장세를 넓혀갔다. 나는 원래 제 1세대 텍스트 에디터인 이맥스(Emacs)의 오래된 팬이었다. 나는 이맥스의 편집 경험을 사랑했지만, 이맥스가 본질적으로 내 요구사항들을 해결할 수 없는 도구라는 것을 알고 있었다. 그래서 (이맥스의 편집 경험과는 거리가 멀지만) 그 이후에 등장한 에디터들에도 많은 관심을 가지고 있었다.

그 중에 하나가 바로 율리시스(Ulysses)였다. 율리시스가 2010년 이전에도 있었던 걸 생각해보면 상당한 역사를 가지고 있다. 하지만 처음부터 마크다운을 지원했던 것은 아닌 것으로 보인다. 율리시스가 마크다운 에디터도 본격적으로 자리잡기 시작한 시점은 율리시스III가 릴리즈된 2013년부터이다.1 나는 율리시스를 처음 등장한 제 3세대 마크다운 에디터로 정의한다. 이는 제 2세대 마크다운 에디터와는 현저한 차이와 함께 진전이 있기 때문이다.

우선은 차이부터 살펴보자. 율리시스는 텍스트 에디터가 아니라 에버노트에 더 가까운 노트 애플리케이션이다. 텍스트 에디터와 노트 애플리케이션의 경계는 미묘하지만 파일 기반이 아니라는 점이 결정적이다. 두 번째로 율리시스의 문법은 마크다운과 상당히 다르다. 특히 링크, 미디어, 주석 같은 것들은 텍스트가 아니다. 그래서 율리시스 에디터에서 작성한 문서는 플레인 텍스트의 흐릿한 경계에 있다. 이 문서는 마크다운이 아니고, 율리시스는 마크다운 형식으로 복사하기(Copy as Markdown)나 마크다운 형식으로부터 붙여넣기(Paste as Markdown) 기능을 제공한다. 마크다운이 아니라는 이보다 더 선언적인 고백이 있을 수 있을까?

제 2세대 마크다운 에디터들은 플레인 텍스트의 원칙을 지키기 위한 노력을 품고있었다. 그런데 율리시스는 노트 애플리케이션이라 파일 형식도 아니고, 심지어 완전한 플레인 텍스트를 지향하지도 않는다. 율리시스는 앞선 글에서 제시했던 플레인 텍스트 제 1원칙2도, 제 2원칙3도 지키지 않는다. 그저 마크다운 문법만을 빌려왔을 뿐 플레인 텍스트의 원칙이나 철학 같은 데는 별로 관심이 없어보인다. 나는 앞선 글에서 “플레인 텍스트의 철학은 곧 마크다운 에디터의 한계가 되었다”고 이야기했다.

그리고 율리시스는 플레인 텍스트의 철학을 무시했기 때문에 앞으로 나아갈 수 있었다. 율리시스는 훌륭한 글쓰기 애플리케이션이지만, 마크다운 에디터로만 평가해도 2가지 면에서 혁신적이었다.

첫 번째 혁신은 에디터다. 율리시스 에디터의 서식 표현 능력은 발군이다. 율리시스는 1세대나 2세대의 에디터들은 코드 하이라이팅에 기반해 서식 문법을 강조해주었다. 하지만 율리시스는 에디터 위에서 서식을 직접 표현한다. 율리시스 에디터 위에서 제목은 제목이고, 강조는 강조이고, 목록은 목록이다.4 또한 링크, 이미지, 주석 같이 인위적인 기호들의 집합처럼 보이는 마크다운 문법들은 에디터 상에서 특수한 요소로 대체되었다. 그래서 율리시스 문서는 마크다운 문서가 아니라 온전한 글처럼 보인다. 율리시스의 에디터는 프리뷰와의 간극을 최소화한다. 이를 증명이라도 하듯이 율리시스는 많은 제 2세대 마크다운 에디터가 제공하던 라이브 프리뷰 기능을 지원하지 않았다. 이러한 서식을 표현하는 리치 텍스트 에디터의 고질적인 문제는 서식이 글쓰기를 방해한다는 점이었다. 율리시스는 텍스트 에디터에서 마크다운 문서를 작성하는 경험을 전혀 해치지 않았다. 이런 점에서 율리시스의 에디터는 플레인 텍스트 에디터도 아니고 리치 텍스트 에디터도 아닌 하이브리드 에디터였다.

율리시스에서 글은 진짜 글처럼 보인다.

율리시스에서 글은 진짜 글처럼 보인다.

두 번째 혁신은 텍스트 번들(TextBundle) 포맷이다. 2014년 하반기에 율리시스에서는 공식적으로 텍스트번들(TextBundle) 포맷을 만들었다고 발표한다. 텍스트번들 포맷은 textbundle.org에서 공개되었으며, 율리시스 1.2.2, 마크드(Marked) 2.3.4부터 지원을 시작한다. 텍스트번들 포맷은 아주 단순하다. 단순히 다음 파일들을 포함한 .textbundle 확장자를 가진 디렉터리이다.

  • info.json: TextBundle 문서의 메타데이터를 저장한 json 형식의 파일이다.
  • text.*:: 플레인 텍스트 파일. 마크다운이면 text.md와 같이 저장하면 된다.
  • assets/: text.* 파일에서 참조하는 첨부 파일을 저장하는 디렉터리.

이게 전부다. 스펙도 아주 짧고 2014년 발표 이후에 변경된 내용도 거의 없다. 그럼에도 불구하고 TextBundle에 주목할 필요가 있다. 이는 명백히 플레인 텍스트 파일의 한계를 극복하기 위해 만들어진 구조였고, 사소하지만 발상의 전환이었다.

이전 글에서 마크다운 에디터에서 미디어(혹은 첨부)를 처리하는 두 층위의 문제점에 대해서 지적한 바 있다. 첫 번째 층는 에디터 상에서 이미지 표현하는 문제였고, 두 번째 층은 이미지를 참조만 할 수 있다는 점이었다. assets/ 디렉터리를 도입함으로써 TextBundle은 두 번째 층의 문제를 직접적으로 해결한다. text.*assets/의 위치가 고정되어있기 때문에 text.* 파일에서는 마음 놓고 assets/ 디렉터리 아래에 있는 파일을 참조할 수 있다. 이를 통해 플레인 텍스트가 아닌, 문서로서의 완결성이 유지된다. 이 포맷은 단순한 만큼, 단순한 진리를 깨우쳐준다. 문서는 플레인 텍스트 파일 하나가 아니다. 첨부파일과 메타 데이터를 모두를 포함해야만 완전한 문서인 것이다.

율리시스는 텍스트번들을 지원함으로써, 내부적으로는 플레인 텍스트의 제약에서 벗어난 진전을 이룰 수 있었고, 외부적으로는 여전히 플레인 텍스트의 가치를 지킬 수 있었다. 특히 명세를 통해 안정적인 구조로 율리시스에서 작성한 구조를 내보내거나 읽어올 수 있었다. 율리시스는 더 이상 플레인 순결한 텍스트 에디터가 아니다. 단지 텍스트번들 포맷으로 플레인 텍스트의 가치를 간접적으로 지키고 있을 뿐이다.

이러한 기반 위에서 율리시스는 이미지를 훨씬 더 과감하게 다룬다. 대부분의 마크다운 에디터들은 원칙적으로 이미지 참조만을 지원했다. 하지만 율리시스는 문서에 직접 이미지를 첨부하는 방식을 지원한다. 율리시스 사용자들은 이미지가 어디에 있는지 참조 문제에 대해서 신경쓸 필요가 없다. 이 뿐만이 아니다. 이미지를 드래그앤드롭하거나 이미지 바이너리를 복사해서 율리시스 에디터에 붙여넣는 것도 가능하다. 워드프로세서나 리치 텍스트 에디터에서는 당연히 지원하는 기능이다. 마크다운을 사용하는 사람들은 플레인 텍스트를 좋아한다는 이유만으로 이러한 기능을 포기해야 했다. 하지만 율리시스에서는 아니다. 앞서 이야기한 것처럼 여기서 율리시스는 플레인 텍스트 에디터로서의 장점과 리치 텍스트 에디터의 장점 모두 취하고 있다.

아쉬운 점이 있다면 첫 번째 층을 (아마도 의도적으로) 회피했다는 점이다.5 율리시스 에디터는 여전히 이미지를 보여주지 않는다. 어떤 면에서는 플레인 텍스트에서 이미지를 표현하는 방식보다도 더 퇴화한 것처럼 보인다. 율리시스에서 (IMG) 텍스트랑 같은 높이의 작은 이미지 상자가 생성된다. 그리고 이미지를 첨부할 수 있는 팝업이 뜨는데, 이는 플레인 텍스트의 편집 경험을 사랑하는 사람들에게는 꽤 치명적인 단점일 수 있다. 또한 이미지는 아무런 설명도 없이 (IMG) 상자로 보인다. 이 요소를 클릭하면 그제서야 이미지를 보여준다. 이 문제를 해결하는 방법으로 율리시스 자체의 코멘트 문법 ++ Comment ++로 이미지의 설명을 붙여두는 방법이 있지만, 미묘한 해결책이다.

율리시스를 사용해보면 율리시스의 글쓰기 경험에 대한 집착을 느낄 수 있다. 어쩌면 율리시스 에디터가 다양한 면에서 발전을 했음에도 불구하고, 이미지를 보여주지 않는 건 글쓰기 경험에 이질적인 요소를 배제하고자 하는 율리시스의 철학 때문이었는지도 모른다는 생각이 든다. 하지만 아쉬움은 남는다.

율리시스로 본 제 3세대 마크다운 에디터의 조건은 이렇다.

  • 하이브리드 에디터: 플레인 텍스트 에디터의 경험과 리치 텍스트 에디터의 편리함을 모두 취한 새로운 에디터
  • 텍스트 번들(TextBundle): 외부에 소통할 때 플레인 텍스트의 형식을 안정적으로 지원하는 중간 구조, 포맷.

정확히 이와 같지는 않더라도 이에 준하는 대안에 있어야한다.

내가 아는 한 두 번째로 등장한 3세대 마크다운 에디터는 바로 베어(Bear)였다. 베어는 2016년 말에 혜성 같이 등장한 노트 애플리케이션이다. 이제 1년 남짓 되어가는 베어는 율리시스와 같이 플레인 텍스트에 구속받지 않으면서 플레인 텍스트로 글을 쓰는 경험을 제공하는 하이브리드 에디터를 탑재하고 있다. 베어 역시 율리시스와 마찬가지라 순수한 마크다운을 지원하는 에디터는 아니다. 베어의 기본 언어는 북극곰 마크업 언어라는 마크다운의 변종이다. 마크다운 호환 모드를 지원하지만 여전히 마크다운과는 조금 차이가 있다. 베어 역시 이런 사소한 문제에 게의치 않는다. 그 대신 율리시스처럼 마크다운 형식으로 복사하기(Copy as Markdown)를 지원하고, 텍스트번들 형식을 지원한다.

베어는 율리시스보다 한 걸음 더 나아갔다. 글쓰기 경험이라는 면에서 율리시스에게 더 후한 점수를 주고 싶지만, 플레인 텍스트를 편집하는 경험에 있어서는 베어가 발군이다. 또한 베어는 이미지 첨부를 둘러싼 두 겹의 문제를 모두 해결했다. 이미지는 문서에 포함 된다.6 그리고 이미지를 에디터에서 보여준다. 유레카!

순수한 플레인 텍스트를 신봉하고, 커먼마크(CommonMark)나 판독(Pandoc)과 같은 플레인 텍스트 기반의 파이프라인들을 더 선호하는 사람이라면, 율리시스나 베어를 마크다운 에디터라고 부를 때 의심스러운 눈으로 쳐다볼 지도 모른다. 나는 율리시스나 베어가 플레인 텍스트 철학의 수호자였다기보다는 자신들이 해결하고 싶은 문제에 플레인 텍스트의 경험을 빌려다 사용한 애플리케이션들이라고 생각한다.7 그리고 이 접근은 좋았다. 적어도 나는 율리시스와 베어 덕분에 행복하다. 율리시스 덕분에 글쓰기가 다시 즐거워졌고, 베어 덕분에 개인 위키의 꿈을 다시 꾸고 있다. 그리고 무엇보다 플레인 텍스트로 글을 쓰는 경험을 만끽하고 있다.

더 이상 아무것도 할 게 없을 것 같은 2017년에도 여전히 글쓰기 애플리케이션들은 발전하고 있다. 많은 공백이 남아있다. 베어는 이제 등장한 지 1년 남짓 지났을 뿐이고, 새로운 경쟁자들은 앞으로 더 많이 등장할 것이다. 앞선 글에서 이야기했지만, 같은 문장으로 글을 마친다.

플레인 텍스트 기반 글쓰기 도구들은 이제 여명을 맞이했을 뿐이다. 🐻


  1. 현재 내가 사용하는 버전은 율리시스 2.8.3인데 정확히는 율리시스III 2.8.3이라고 봐야할 것 같다. 나중에 이름에서 III가 빠진 것으로 보인다. 
  2. 플레인 텍스트의 제 1 원칙은 문자들로만 구성된다는 점이다. 
  3. 플레인 텍스트의 제 2 원칙은 플레인 텍스트를 다루는 애플리케이션은 플레인 텍스트로 입력으로 받고 플레인 텍스트로 출력해야한다는 점이다. 
  4. 안타깝게도 이미지는 이미지처럼 보이지 않는다. 
  5. 이 글은 2017년 10월에 처음 작성되었다. 율리시스도 2017년 10월에 출시된 버전 12(37233)부터 에디터 상에서 이미지 프리뷰를 지원한다. 
  6. 심지어 마크다운의 이미지 참조 문법은 아예 지원하지 않는다. 
  7. 실제로 율리시스나 베어는 자신들의 메인 페이지에서 마크다운 기반 노트 애플리케이션이라는 점을 언급조차 하지 않는다. 
, nacyot.

블로그nacyot이 운영합니다.