141: tweet overflow

블로그와 검색 유입 전략

작년부터 44bits.io라는 팀 블로그를 운영하고 있다. 몇 년을 벼르고만 있다가 이렇게 해서는 도저히 시작할 수 없겠다는 생각이 들어서 작년 중순에 급하게 프로젝트를 축소하고 바로 공개했다. 이 때의 고민은 이 블로그의 미래에 대한 상상력과 지금 해야할 일에 남아있다. 블로그를 공개한 이후 지인 몇 명이 참여하면서 지금은 팀 블로그로 작성되고 있다.

이 글에서는 44bits와 검색 유입을 통한 성장 전략에 대해 이야기해보려고한다. 먼저 올 해 1월까지의 성과를 먼저 살펴보자. 올 해 11월에 공개한 44bits.io의 2018년, 그리고 2019년 새해인사에서 그간의 성과를 간략히 공개하고 있다.

작년 12월 검색 유입은 약 1500명 정도이다. 이는 하루 50명 정도인 셈이다. 44bits는 처음부터 검색 유입으로 성장해야한다는 분명한 목적을 가지고 있었다. 이 다음 글에서는 ‘기술 블로그’라는 주제로 글을 하나 썼다. 좋은 기술 블로그를 만들어 나가기 위한 8가지 제언, 이 글은 사실 44bits에서 의식적으로 추구하는 바에 대해서 기록한 글이다. 이 문서의 제목을 ‘기술 블로그의 검색 유입을 어떻게 늘릴 것인가’로 바꾼다고 해도 큰 무리는 없다.

그리고 4월에는 블로그를 주제로한 Write the Docs 모임에서 기술 블로그 생존 전략 – 구글 시대의 글쓰기 – Speaker Deck라는 제목으로 발표를 했다. 이 발표의 내용은 앞서 공개한 글을 조금 더 가다듬은 내용이었다. 추가적으로 3월까지의 성과를 포함시켰는데, 그래프에서 수치는 보이지 않지만 3월 기준 검색 유입은 약 6000명이었다.

월 기준 12월에 1500명이던 것이 6000명까지 늘었다. 월복리로 계산해보면 약 58% 씩 성장한 수치이다. 9월에 500명 이던 것이 12월에는 1500명, 3월에는 6000명까지 늘어났다. 중간 중간 정체기가 보이는데, 이 기간에는 글을 거의 작성하지 못 했다. 시차가 있기는 하지만 글을 지속적으로 작성하는 동안에는 검색 유입이 지속적으로 증가하는 것을 확인할 수 있다. 그렇다면 지금은 어떨까? 다음은 올해 8월까지의 그래프다.

최근에 공개한 글이 없어서 8월에 약간의 역성장이 보이지만, 3월 이후에도 지속적으로 성장하고 있는 것을 확인할 수 있다. 8월 기준 약 12000명 정도이고, 9월에는 7월 유입을 넘어설 것으로 보인다. 작년 8월과 비교하면 33배 성장한 수치이고, 작년 12월과 비교하면 8배 성장한 수치이다. 초기 방문자가 극단적으로 적었기 때문에 가능한 수치이며, 아직 44bits가 방문자가 많은 사이트는 아니다. 그럼에도 여기에는 중요한 교훈이 있다.

  • 전문성을 가진 분야의 블로그에서 가장 중요한 유입 경로는 검색이다.
  • 검색 유입을 확보하는 가장 중요한 방법은 좋은 글을 작성하는 것이다.
  • 컨텐츠가 쌓이면서 검색 유입은 줄어들기보다 지속적으로 상승하는 경향이 있다.

블로그를 지속적으로 성장시키고 싶다면 이러한 사실을 의식할 필요가 있다.


하지만 이것만으로는 부족하다. 이와 더불어 (구글) 검색엔진에 대한 이해도 필요하다. 몇 가지 실전 팁을 더해보자.

  • 편법으로 검색엔진을 이기려고 하지 말 것. 주제와 키워드가 명확하고 충분한 길이를 가진 좋은 글을 쓴다. 검색 엔진은 좋은 글을 이해할 정도로 똑똑하다.
  • 적절한 제목을 짓는 것은 100번 강조해도 지나치지 않는다. 위트있는 제목이 아닌 주제를 적절히 표현하는 키워드가 포함된 제목을 지어야한다.
  • 복합 키워드가 아닌 적절한 경쟁이 과도하지 않은 단일 키워드를 찾는다.
  • 그렇게 찾은 키워드에 대해서 압도적으로 좋을 글을 쓴다. 이렇게하면 검색 결과 상위에 노출될 가능성이 거의 100%까지 올라간다. 그리고 이는 오랜시간 유지된다.
  • 같은 키워드에 대한 여러 글을 쓰지 말고, 하나의 완성도 높은 글을 작성한다. 검색엔진은 첫 페이지에 하나의 사이트에 속한 다수의 검색 결과를 노출시키지 않는다.
  • SEO에 집착하지 않는다. 컨텐츠에서 메타데이터와 제목 태그를 붙이는 이상의 노력을 쏟을 필요는 없다.

세부적인 지침에 대해서도 조금 신경쓸 필요가 있지만 결론은 심플하다. 웹이라는 맥락에서 좋은 글을 작성하는 것, 흥미롭게도 그것을 가장 잘 알아보고 평가해주는 것도 검색엔진이라는 점이다.

뜻밖의 발견과 데본씽크(Devonthink), 그리고 예감

개인적인 뜻밖의 발견은 기술에 의해서도 배양할 수 있다. 10년 이상 전부터 나는 흥미롭다고 느낀 글들을 디지털 기록보관소에 모아왔다. 21세기 버전의 비망록이라 할 수 있다. 그중 일부는 구체적 프로젝트들과 관련된 내용이고, 다른 글들은 무언가와 연결되기를 기다리는 예감들이다. 일부는 내가 책이나 기사에서 옮겨 적은 것들이고, 일부는 웹에서 직접 복사한 것들이다(지난 몇 년간 구글북스(Google Books)와 킨들(Kindle) 덕분에 책에서 흥미로운 부분을 복사하고 저장하는 것이 훨씬 간단해졌다).

나는 그 글들을 모두 데본씽크(DEVONthink)라는 프로그램을 이용해 데이터베이스에 모아둔다. 거기에는 책, 에세이, 블로그 포스트, 메모 등 내가 쓴 글들도 있다. 그렇게 내가 쓴 글과 다른 사람들의 글을 결합함으로써 단순한 파일 저장 시스템 이상이 되었다. 그것은 나의 불완전한 기억력을 디지털 기구를 이용해 저장하게 해주며, 내가 예전에 떠올렸던 아이디어와 나에게 영향을 준 아이디어를 모두 모아놓은 보관소다. 현재 그 데이터베이스에는 5천 항목, 3백만 단어 이상의 글이 들어 있다. 내가 개별적으로 수집한 대략 6권에 해당하는 인용문들과 예감들이 하나의 데이터베이스에 저장되어 있는 것이다.

그 모든 정보를 언제든 이용할 수 있는 것은 단지 내가 메모한 내용을 더 빨리 찾을 수 있다는 편리함만은 아니다. 물론 이 방법 덕분에 오래전에 내가 썼던 글을 찾는 일이 훨씬 쉬워졌다. 그러나 질적인 변화가 더 많다. 오래된 서류를 찾다가 전혀 뜻밖의 문서를 찾게 되는 것이다. 그 시스템이 진정 효과적인 것은 이렇게 뜻밖의 발견을 촉진하기 때문이다.

데본씽크의 특징은 서로 다른 글들 사이에서 미묘한 연관성을 발견하는 똑똑한 알고리즘이다. 이러한 도구는 고전적인 검색엔진의 단점을 보완할 수 있다. 예를 들어, 고전적 검색엔진에서 ‘dog’을 검색하면 ‘dog’이라는 단어는 들어 있지 않고 ‘canine(개)’라는 단어만 들어 있는 글은 찾지 못한다. 데본씽크는 ‘어떤 단어들이 함께 등장하는 경우가 많은가’를 추적함으로써 개별적 단어 사이의 연관성을 찾아낸다. 이 덕분에 아이디어 사이에 연결을 만들 수 있다.

수년 전에 런던에서 콜레라에 대한 책을 쓰고 있을 때였다. 나는 데본씽크에게 빅토리아 시대의 하수시스템에 대해 물었다. 데본씽크는 ‘노폐물(waste)’이라는 단어가 ‘하수(sewage)’라는 단어와 흔히 함께 사용된다는 것을 발견했기 때문에 척추동물의 몸에서 뼈가 진화한 방식을 설명하는 인용문도 찾아냈다. 즉 세포의 신진대사에 의해 만들어진 칼슘 노폐물을 다른 용도에 맞게 만들면서 뼈가 진화했다는 이야기였다. 처음에 그 인용문은 잘못된 검색 결과처럼 보일 수 있다. 그러나 그 글은 복잡한 시스템들이 ─도시든, 신체든─ 자신이 만들어내는 쓰레기를 생산적으로 사용하는 방법을 보여주었다. 결국 그 아이디어는 콜레라에 대한 책에서 한 장의 중심 주제가 되었다.

엄밀히 말해 그 최초의 아이디어는 누구의 것인가? 내 아이디어였나 아니면 소프트웨어의 아이디어였나? 말장난처럼 들릴지 모르지만 진지하게 묻는 것이다. 분명 컴퓨터는 아이디어가 형성되는 것을 인식하지 못했고, 런던의 하수구와 세포의 신진대사를 연결하는 개념적 고리를 제공한 것은 나였다. 그러나 그 소프트웨어의 도움 없이 내가 그런 연결을 할 수 있었을까. 그 아이디어는, 하나는 탄소에 기초하고 다른 하나는 규소에 기초한 2개의 아주 다른 정보가 싸우며 서로에게 이익을 준 진정한 공동작업이었다. 처음에 칼슘과 뼈의 구조에 대한 글을 보았을 때 나는 그 글이 런던의 하수시스템과 연결될 것이라고는 생각하지 못했다. 그러나 그 개념이 나의 관심을 끌었기 때문에 그 글을 데이터베이스에 넣었다. 그렇게 느린 예감으로서 소프트웨어의 원시수프 속에서 몇 년을 머무르며 연결을 기다리고 있었던 것이다.

나는 데본씽크를 즉흥적인 도구로도 사용한다. 무언가에 대한 글을 한 단락 쓴다고 가정해보자. 예를 들어, 얼굴 표정을 해석하는 인간 두뇌에 대해 글을 쓴다. 그 글을 데본씽크에 넣은 후 비슷한 글을 찾아달라고 요청한다. 그러면 즉시 화면에 인용문 목록이 나타난다. 그중에는 얼굴 표정을 촉발하는 신경구조를 분석한 글도 있고, 미소의 진화적 역사를 탐구한 글도 있으며, 인간의 친척인 침팬지의 풍부한 표정에 대한 글도 있다. 그 글들 가운데 한두 개는 반드시 내 머릿속에서 새로운 연상을 불러일으킨다. 그리고 머지않아 더 큰 아이디어가 형태를 갖게 된다.

위의 방법을 전통적으로 파일을 탐색하는 방법과 비교해보자. 컴퓨터는 순종적이지만 멍청한 집사와도 같다. “침팬지에 대한 서류를 찾아줘!” 그것은 그냥 검색이다. 반면 데본씽크 방식은 탐구다. 잘못된 시작도 있고 간혹 주제와 관계없는 것을 찾아내기도 하지만 행복한 우연과 예상치 못한 발견이 있다. 사실, 결과의 불분명함이 그 소프트웨어의 강점 중 하나다. 그 시스템을 통한 뜻밖의 발견은 2가지 다른 힘에서 나온다. 첫째, 의미적 알고리즘의 연결하는 힘이다. 이는 똑똑하지만 예측할 수 없기에 잡음을 만들어낸다. 그러나 검색 결과를 더욱 놀랍게 만든다. 그 사실은 어떤 면에서는 개별적 연결들이 나에게 쓸모 있을 가능성을 훨씬 더 높인다.

데본씽크에서 검색하고 결과를 처음 보면 언뜻 보기에 무질서하게 보인다. 하지만 자세히 읽어보면 눈길이 가는 대목이 분명 있다. ‘무질서하다’는 것과 ‘연결이 안 된다’는 것은 꿈속의 탐험을 묘사할 때 쓰는 표현이기도 하지만 적절한 비유다. 데본씽크는 꿈을 꾸는 상태에서 뭔가를 만들어내는 소프트웨어다.’

탁월한 아이디어는 어디에서 오는가, Chapter 4 뜻밖의 발견 중, 스티븐 존슨

얼마 전에 문득 “체계적인 학습”을 하고 싶어서 관심있는 분야의 자격증 시험을 봐야겠다고 생각한 적이 있는데, “그게 정말로 내가 바라는 것인가?”라는 질문이 들자마자 시들해졌다. 구조화되어 있는 정보를 체계적으로 학습하는 것은 매력적으로 느껴지지만, 사람들이 정보를 다루는 방식이 “아주 많이 다르다”는 걸 생각해보면, 체계적인 학습이라는 것은 어떤 집단의 전문성을 같은 수준까지 끌어올릴 수는 있지만 다른 가능성들을 질식시켜버리는 방식일지도 모른다. (물론 그건 그것대로 필요한 일이지만 모든 사람들에게 필요한 것은 아니다.)

내가 정보를 정리하는 아주 좋아했던 방식은 위키위키였다. 10년 전쯤에 위키에 푹 빠져있었다. 위키위키는 모든 정보를 느슨하고 그리고 긴밀하게 연결할 수 있을 것 같다는 생각이 들게 만드는 도구이다. 그리고 Graphviz와 같은 도구를 사용하면 이러한 연결들을 다시 추적하고 정보 간의 새로운 관계를 드러내게 할 것이라는 생각도 들게 만든다. 나는 내가 사용하던 위키 시스템을 개선하기 위해서 프로그래밍을 처음으로 배우기 시작했다. 당시에는 자동으로 생성하는 페이지들을 포함해 몇 천 페이지의 정보를 위키에 집적해두었다. 하지만 웹 기반 위키위키는 접근성이 떨어지고, 사용하던 애플리케이션의 한계로 금방 흥미가 시들해졌다. 지금은 베어를 위키로 사용하고 있다. 베어는 위키위키로 만들어진 애플리케이션은 아니지만, 바로가기 기능과 베어의 내부 링크 기능을 활용하면 훌륭한 개인 위키위키 시스템이 된다. 그래서 내 베어 앱은 노트가 아니라 주제어를 기반으로 작성된다. 생각날 때마다 주제어들을 검색하고 내용을 채워나간다. 여기도 이미 몇 천 페이지가 쌓여있다(대부분의 페이지는 비어있다). 베어는 이제 내 기억의 외부 캐시 메모리에 해당한다.

나는 베어를 축적의 목적으로 사용해가지만, 반대로 베어를 정보를 조각하는 용도로 사용한다는 이야기를 들은 적이 있다. 외부에서 받아들이는 수많은 정보가 있는데 자신이 충분히 이해한 내용을 다시 압축된 형식으로 베어 노트에 저장해 놓는 것이다. 내가 베어를 사용하는 방법도 일반적이지 않을 수는 있긴하지만, 나는 이 이야기에 상당한 충격을 받았었다. 이런 방식은 스티븐 존슨이 같은 책의 3장에서 이야기해주는 비망록의 방식을 떠올리게 한다.

완전히 다른 방식이지만 베어는 두 가지 방식을 포용하기에 충분히 매력적인 도구이다. 스티븐 존슨의 이야기하는 세렌디피티로서의 역할은 중간 쯤에 해당한다. 최근에는 노션이 유행하고 있지만 노션은 세렌디피티보다는 구조화를 충동질하는 도구이다. 정보를 조직화하는 데는 매력적이지만 글을 쓰기에는 너무 불편하고, 검색 기능은 💩이다. 노션은 정보에 대한 주도권을 확실하게 잡고 있지 않다면 사용하기 어려운 도구이다. 이와는 반대로 스티븐 존슨이 이야기하듯이 데본씽크는 세렌디피티의 끝판왕이지만 잘 다루기는 너무 어려워서 나는 포기한 상태다.

인용에서도 드러나지만 데본씽크는 세렌디피티라는 관점에서 너무나도 매력적이다. 데본씽크를 처음 본다면 스크리브너와 비슷하게 세련미는 떨어지고, 아마추어적인 모습을 군데군데서 발견할 수 있다. 무엇보다 이 도구를 도대체 어떻게 써야하는지 감도 오지 않는다. 하지만 곧 데본씽크는 세상의 모든 정보나 내가 가진 모든 정보를 집어넣으면 뭔가가 자동적으로 만들어져 나올 것 같은 착각마저 들게 한다. 어떤 면에서 이는 위키위키 이상의 가능성을 가지고 있다. 하지만 이런 기분은 곧 좌절하고 마는데 확장성 면에서 제약이 아주 크다. 이는 마치 위키위키의 데이터를 원시적인 파일 시스템 기반의 CVS에서 어떻게 데이터베이스나 클라우드 환경으로 옮길 것인가 하는 문제를 떠올리게 한다. 데본씽크는 자체적인 웹 서버 기능이나 싱크 기능을 제공하지만 이에 만족하며 사용하는 사용자는 많지 않은 걸로 알고 있다. 나도 몇 번 시도하다가 지금은 두 손 두 발 다 든 상태이다.

하지만 조금 생각을 바꿔보면 데본씽크는 모든 것을 부어 녹일 수 있는 용광로가 아니라, 적절한 정보들을 쌓아두고 활용할 수 있는 아주 두꺼운 스크랩북 같은 도구이다. 데본씽크는 “예감”이 드는 그런 도구이다. 확실하진 않은데, 이건 뭔가 굉장한 것 같다. 어쩌면 내 삶을 바꿔놓을 지도 모를 만큼 말이다. 나는 위대한 소프트웨어는 언제나 근본적인 아이디어의 탁월함을 가지고 있다고 생각한다. 내가 좋아하는 예를 들어보자면 위키위키, 베어, 율리시스, 스크리브너, 후잉 이런 도구들은 유사한 도구들로 대체할 수 없는 독보적인 아이디어들을 품고있다. 여기에 예감이 있다. 위키위키를 처음 봤을 때 너무 황당했지만, 여기에는 뭔가 있다는 예감을 가지고 이 시스템에 매료되기까지 3년 이상의 시간이 걸렸다. 최근에 팟캐스트에서 후잉 이야기를 다뤘는데, 다들 이야기하는 게 후잉을 이해하고 제대로 활용하기까지 몇 년의 시간이 걸렸다고 한다. 그렇게 몇 번을 재시도하면서까지 이 도구를 도전하고 매료되는 동력에는 분명 어떤 예감이 있을 것이다.

데본씽크도 그런 도구지만, 아직은 예감만 가지고 있는 단계이다. 주변에서 잘 쓰고 있는 경우도 아직은 거의 못 본 것 같다. 위키위키, 베어, 스크리브너, 데본씽크 같은 도구들은 단순히 도구가 그 자체로 가치를 가지는 도구가 아니다. 도구, 사용자의 맥락, 그리고 사용자가 적절하게 결합되었을 때 (사용자에게) 가장 큰 가치를 만들어낸다. 이런 도구들의 가장 열렬한 지지자들은 애플리케이션 개발자의 의도를 벗어나서 애플리케이션을 사용하고 있을 가능성이 매우 높다. 스티븐 존슨은 데본씽크를 예감을 넘어 활용의 단계에 있는 것 같은데, 다시 한 번 도전해봐야하는 건가 하는 생각이 들었다.


마침 9월 12일 Devonthink 3가 출시되었다. 요즘 관심을 가지지 못 해서 모르고 있었는데 상당히 긴 시간 동안 베타 테스트를 거친 것으로 보인다. Devonthink 2와 근본적으로 달라진 점은 없는데 기본 기능들을 개선하고 메인 윈도우 기반으로 인터페이스를 통합하고 있는 것으로 보인다.

기록은 되어야하며, 그리고 활용되어야한다

기록은 자산이다. 기록이 그 자체로서 큰 의미를 가지는 것은 아니다. 기록은 되어야하며, 그리고 활용되어야한다. 예를 들어 온라인 상에는 어마하게 많은 정보가 있고, 이것 자체만으로도 인류의 집단 지성 그 자체라고 말할 수 있을 것이다. 여기서 기록은 각자의 몫이다. 그리고 서로 다른 목적을 가진 개인들이 이러한 공개된 기록에 접근하고 가치있게 사용할 수 있도록 돕는 것이 바로 검색엔진의 몫이다. 그래서 기록은 되어야하며, 활용되어야한다.

일반적으로 구글과 같은 범용적인 검색엔진은 사용자의 맥락까지 염두에 두진 않는다. 하지만 모든 기록이 범용적인 것은 아니다. 기록은 방대하며, 검색엔진은 범용적이다. 이를 보완하기 위한 기법 중 하나는 개인화된 기록이다. 이는 개개인이 자신을 위해서나 국소적인 맥락에서 일부 사람들과 공유하기 위해서 만들어내는 것이다. 인간의 기억은 한계를 가지고 우리가 보고 들은 것, 그리고 검색하고 탐구한 것을 전부 기억하지는 못 한다. 개인화된 기록은 이를 보완하는 장치이며, 컴퓨터에 기반한 개인화된 기록 장치는 일반적으로 무한에 가까운 저장용량을 제공한다. 위키위키, 블로그, 노트 애플리케이션, 서지 애플리케이션, 웹 스크랩 도구와 같은 것들은 모두 기록을 돕고, 이를 활용하기 위한 다양한 기능들을 제공하는 도구이다. 여전히 많은 사람들이 개인의 내제적인 능력을 중요하게 여기지만, 나는 기록을 대하는 태도가 궁극적으로는 개인의 경쟁력에 있어서 더 큰 의미있는 차이를 만들어 낼 것이라고 믿는 쪽이다.

그리고 이는 법인에 있어서도 마찬가지이다. 나는 오래된 기업이 신생 기업에 비해서 가질 수 있는 거의 유일한 장점은 기록이라고 믿는다. 직원으로서 개인의 신체에 축적되는 경험은 개인에게 귀속된다. 이 때 이 경험을 법인과 개인이 공유할 수 있는 방법은 기록밖에 없다. 만약에 이 경험에 대한 어떠한 기록도 남기지 않는다면, 개인은 회사에 다니면서 얻은 수많은 신체에 각인된 능력(혹은 기록)들을 가지고 회사를 떠날 수 있지만, 기업은 그 사람이 떠난 이후에 아무런 가치도 얻지 못 할 것이다. 이런 일은 현실에서 빈번하게 일어나는 것처럼 보인다. 전임자가 떠나고 나면, 후임자는 마치 백지에서 일을 시작하는 것처럼 보이기도 한다. 아니면 전임자가 떠날 때야 비로소 인수인계를 하라고 이야기하지만 이 역시 빈틈이 많고 문서화 되기보다는 구전되는 경우가 많다. 하지만 기업 내에 기록을 위한 충분한 시스템이 갖추어져있다면, 인수인계라는 것은 업무에 대한 것이 아니라, 권한에 대한 것만으로도 충분해질 것이다.

법인은 어떤 면에서 개인보다도 이러한 가치를 인지하는데 무능할 수 있다. 왜냐면 법인으로서 살아남기 위해서는 장기적인 맥락에서 가치를 축적하는 것보다 당장 돈을 보는 것이 급급하기 때문이고, 법인은 스스로 기록의 가치를 인지하지 못 하고, 항상 법인을 운영하는 주체들에 의해서 기록의 가치를 인지할 수 있기 때문이다. 법인이라고 본질이 달라지는 것은 아니다. 개인보다 나은 점도 있다. 그 가치를 이해하기만 한다면, 시스템으로 잘 갖추기만 한다면 기록은 자동적으로 이루어지고 또한 오랜 시간 남아 법인의 가치를 높여갈 것이다.

제 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. 실제로 율리시스나 베어는 자신들의 메인 페이지에서 마크다운 기반 노트 애플리케이션이라는 점을 언급조차 하지 않는다. 

미래에 대한 상상력과 지금 해야할 일

모터사이클을 타고 코너를 돌 때에도 그렇습니다. 핸들을 꺾어 코너에 진입했을 때는 ‘이미 코너를 빠져나가 가속으로 달리는 자신’을 떠올리고 그것에 상상적으로 ‘신체를 던져넣는 식으로 운전해야합니다.’ 코너를 계속 돌고 있는 리얼타임의 자신에게 동화되어 있으면, 모터사이클의 뒷바퀴 타이어는 미끌미끌 미끄러지기 시작해 운이 나쁘면 넘어집니다. 이상한 일이지만 ‘미래의 어느 시점에 이미 일을 끝낸 자신’이라는 전미래적인 환상에 동화되지 않으면 ‘지금 해야 할 일’을 할 수 없습니다.
— 제 5강 아직 쓰이지 않은 글이 나를 이끈다, 어떤 글이 살아남는가, 우치다 다쓰루

경제 활동은 ‘미래를 향해 전 세계 사람들이 자유자재로 움직여가는 역동성’이라고 할 수 있다. 이른바 주관적 행동의 집합이다. 그런데 모든 주관적 행동의 출발점은 가격이라는 객관적 사실을 기초로 하고있다. 즉 경제 활동 이란 되돌아보면 모두 객관의 집합인 것이다. 주관적 행동이 속속 객관적 사실을 만들어내고, 그것이 다음의 주관적인 행동으로 이어져 간다. 이 되풀이가 경제 활동이다.
— 143p, 제 5장 장기투자자에게 정보란 무엇인가, 불황에도 승리하는 사와카미 투자법, 사와카미 아쓰토

프로그래밍 이야기의 마지막 글은 2015년 12월에 작성되었다. 이 블로그는 루비의 정적 웹사이트 생성기 미들맨으로 만들어져있다. 2014년 초에는 정적 웹사이트 생성기를 지지하는 글을 썼다. 하지만 2015년 말에는 이미 이러한 도구들에서 마음이 떠나있었다. 이제는 그 방법이 매력이 있지만 좋은 방법은 아니라고 생각한다. 문서들을 조직하고 관리한다는 면에서는 차라리 워드프레스가 낫다. 컨텐츠가 오랜 시간 지속적으로 관리가 되기 위해서 파일보다는 데이터베이스가 사용되어야한다. 하지만 여전히 나는 워드프레스를 좋아하지 않는다.

그 이후로 몇 년간 대안을 고민하고 구현도 하고 있다. 하지만 나는 구현보다는 몽상을 한다. 완성되지 않은 몽상에는 끝이 없다. 몽상은 표현과 비슷하다. 혀끝에서 맴도는 말은 그 말이 내뱉어지기 전에는 결코 사라지지 않는다. 그런 면에서 나에게 적절한 대안은 트위터였다. 충분하지는 않지만, 생각들을 내뱉기에 나쁘지 않다. 하지만 이상적으로 완성된 세계는 결코 완성된 채로 도래하지 않는다.

우츠다 다쓰루의 표현을 빌리자면 몽상이란 이미 코너를 빠져나가 가속으로 달리는 자신을 상상하는 일과 같다. 이러한 미래를 상상하는 능력이 결여되어있다면 결코 현재 시점에서 코너를 빠져나갈 수 없다. 하지만 문제는 이런 거다. 너무 몽상만을 하고 있는 나머지, 바이크에 시동을 거는 것조차 시작하지 못 한 것이다. 이래서는 결코 코너를 돌고 있는 현재 시점이 도래하지 않는다. 사와카드 아쓰토의 표현을 빌린다면 주관적 행동이 속속 객관적 사실을 만들어내고, 이 객관적 사실이 다시 다음 주관적 행동에 영향을 주는 역동성이 결여되어있다.

미래는 추론의 영역이자, 상상의 영역이다. 그래서 객관적 사실들로부터 합리적인 추론을 해야하고, 그 위에서 다양한 가능성들을 상상할 줄 알아야한다. 상상력이 없다면 미래를 만드는 데 동참할 수가 없다. 하지만 미래를 만드는 데 동참하려면 상상력으로부터 지금 해야하는 일을 결정하고 실행해야만 한다. 일단 모터사이클을 타고 앞으로 나아가고자 한다면 코너를 돌기 전에 시동은 걸어야하는 것이다. 그래서 지금은 완벽하기보다는 행동하는 편이 낫다고 생각한다.

블로그 만들기
블로그가 필요하다는 말에 이제는 공감하는가? 그렇다면 다행이다. 여기까지 공감했다면 시작하는 방법도 궁금할 것이다. 시작은 무척 쉽다. 워드프레스 호스팅이나 블로거 같은 무료 서비스를 활용하면 5분 내에 블로그를 만들 수 있다.
— 21장 블로그 성공적으로 운영하기, 소프트 스킬, 존 손메즈

(그렇게 생각하지 않았지만) 시작하는 것완성하는 것을 착각하고 있던 걸지도 모른다. 시작하는 데는 어쩌면 생각보다 많은 노력이 필요하진 않다.

블로그nacyot이 운영합니다.