3년 된 오픈소스가 1주일 만에 3,000 GitHub 스타를 받다


image

# 시작하며

TOAST UI Editor는 2015년 3월에 첫 커밋이 이루어진, 대략 3년이 된 프로젝트이다. 2017년 12월 30일 이 프로젝트의 버전을 1.0으로 올리고 npm에 배포하기 위해 연말에 출근을 했었고, 당시 이 프로젝트의 저장소는 연말 사무실의 풍경만큼이나 한산했다. 3년간 정확히 160개의 GitHub 스타를 받았었으며, PR은 기대하기 힘들었다. 이슈는 몇 달에 한 번씩 나타나 "이 프로젝트는 오픈소스야"라는 정체를 희미하게 알리는 정도의 역할을 하였다.

하지만 이러한 오픈소스의 모습은 특별한 것이 아니다. Google이나 Facebook에서 하는 오픈소스조차 한적한 프로젝트는 얼마든지 있다. 우리 모두 GitHub를 무료로 사용할 수 있는 저장소 정도로 사용하는 일은 익숙하지 않은가? 물론 혹자는 부푼 마음으로 소스를 공개했으나 무관심에 좌절한 경험이 있을지도 모르겠다.

이 글은 내 지난 한 달간의 경험을 토대로 여러분의 가치 있는 프로젝트를 알리는 데 도움이 되기를 바라는 마음으로 써 내렸다.

# TOAST UI Editor의 시작. 그리고 Dooray!

image

이 글의 시작으로 TOAST UI Editor를 만들도록 한 Dooray! 얘기를 잠시 하겠다. Dooray우리 회사의 서비스 중인 협업 도구이다. 협업 도구를 사용하는데 사용자 경험의 큰 부분을 차지하는 부분이 바로 에디터다. 빠르고 편하게 문서를 작성하면서도 개발자에게 익숙한 Markdown 모드. 그리고, Markdown이 익숙하지 않은 사람들과의 협업을 위한 WYSIWYG 모드가 필요했다. 추가적으로 셀 병합이 가능한 테이블과 Code Block을 통한 차트와 UML 등. 이미 훌륭한 에디터는 많이 있으나, 우리의 요구사항을 충족시켜줄 확장 가능한 Markdown WYSIWYG Editor를 염두에 두고 만든 것은 없었다. 이것이 TOAST UI Editor의 시작이다. 만약 여러분이 이 글을 읽는 동안 TOAST UI Editor에 흥미가 생긴다면, Dooray도 분명 당신의 마음에 들 것이니 한번 둘러보는 것도 좋겠다. :)

우리가 한번 개발을 시작한 에디터는 곧 사내의 여러 서비스에 사용되게 되었고, 추상화하여 하나의 개별 프로젝트로의 모습을 갖추게 되었다. 우리는 GitHub를 저장소로 사용하므로 GitHub에 공개해 놓았고, 오픈소스의 모습을 가지기 시작하게 된다.

# 오픈소스로의 시작. README

이후로 TOAST UI Editor를 꾸준히 개발해 오면서 에디터는 모양을 갖춰나가게 되었다. 그러나 에디터 개발을 시작한 지 거의 3년의 시간이 흘렀지만, 이슈도 PR도 거의 없었다. 그럴 수밖에 없는 것이 문서도 빈약하고(여전히 빈약하다) README 도 전혀 매력적이지 않았다. 추가할 기능들의 로드맵은 정해져 있고, 버그 리스트는 쌓여있는데 문서 추가할 겨를은 없다. 그나마 사내에서 필요로 하는 개발자들을 위해 간단한 Tutorial과 API 문서를 조금 만들어 놓았을 뿐이다.

여러분은 어떠한 프로젝트를 이어받게 되면, 아마도 전임자에게 다양한 문서를 요구할 것이다. 만약 여러분께 전임자가 소스만 달랑 던져준다면 어떨까? 여러분의 표정은 보지 않아도 충분히 상상이 간다. 오픈소스도 마찬가지이다 오히려 여러 개발자에게 온라인으로만 많은 내용을 충분히 전달할 수 있어야 하기에 더욱 힘든 일이 된다. 핵심을 잘 나타내 줄 README, 바로 확인해 볼 수 있는 DEMO, 방문한 개발자들이 자신의 요구사항에 맞는지 확인해 볼 수 있는 다양한 예제들, 첫 시작을 도와줄 Tutorial 등. 다양한 문서 중 어느 것이라도 모자라면 여러분의 오픈소스는 외면받게 된다. TOAST UI Editor 프로젝트의 PR탭이 잠잠했던 이유는 설명하지 않아도 될 것이라 생각한다.

그저 소스를 공개했다고 오픈소스가 되지는 않는다.

다양한 문서 중에도 표지 역할을 하는 README 는 가장 중요한 역할을 한다. 여러분의 저장소를 방문한 개발자들에게 왜 여러분의 오픈소스를 써야 하는지 핵심을 짚어 표현할 수 있어야 한다. 여러 개의 문서를 나열하는 것으로는 충분치 못하다. 나도, 여러분도, 저장소를 방문한 개발자도 모두 게으르다. 여러분은 공들여 여러 문서를 작성했겠지만, 방문자가 처음보는 프로젝트의 모든 링크를 다 방문해줄 것이라 기대하지 말아야 한다. 대부분의 방문자는 스크롤 2번쯤 내리고 흥미가 생기지 않으면 돌아갈 것이다. 그러니 여러분의 저장소에 방문한 개발자가 관심을 가지길 원한다면 REAME는 특별히 힘을 쏟아 작성을 해야한다.

image

여러분의 오픈소스에 얼마나 다른 개발자들의 관심을 끌게 되었는지 확인할 수 있는 대표적인 수치는 스타의 개수이다. GitHub 스타는 사실 북마크 기능정도 이외에는 별 역할을 하지 않는다. 그러나 스타의 개수는 여러분의 오픈소스가 얼마나 유용한지 그리고 믿을만한지 가늠할 수 있는 지수가 된다. 아래는 내가 TOAST UI Editor 1.0을 배포하기 전과 후 기록한 스타 개수와 방문자의 기록이다. TOAST UI Editor1.0 배포 에는 새로운 기능이 전혀 추가되지 않았다. 문서의이 업데이트 이외에는 리팩토링이 주를 이루고 있었으므로, 아래의 수치는 전적으로 문서와 데모의 변화에서 얻어진 것이라 간주하여도 된다.

image

image

프로젝트가 시작될 때 부터 기록을 했더라면 좋았겠지만, 이번 업데이트를 진행하면서 사용자들의 방문 및 활동 추이를 확인하기 위해 개인적으로 기록한 자료이므로 자료의 수집 기간이 짧음을 양해해 주기 바란다. 이들 수치를 확인해보면, 문서 업데이트 이전에는 대략 4%의 방문자가 스타를 주었다. 그런데 놀랍게도 문서 업데이트 이후에는 대략 20%의 방문자가 스타를 주었다. 이것은 어마어마한 차이이다. READMEDEMO를 업데이트한 것으로 거의 5배의 방문자가 관심을 보였다. 많은 이들이 README 가 중요하다 말하지만 이 정도의 차이를 보일줄은 몰랐을 것이다. 나 역시 수치를 기록하며 많이 놀랐다. 여러분의 프로젝트에 Contributor가 생기기 원한다면, 무엇보다도 README 를 충실하고 예쁘게 작성해야 한다. README 를 잘 작성하는 방법은 검색을 해보면 여러 좋은 글들이 나온다. 대표적으로 Awesome Readme같은 것들이 있다. 잘 쓰여진 README 를 찾아 참고하자.

# 커뮤니티

열심히 문서를 작성하였다면 이제 사람들에게 알릴 차례이다. 물론 여러분의 프로젝트를 마음에 들어 하는 누군가가 다른 사람들에게 전파해주는 것이 가장 좋은 시나리오일 것이다. 그러나 여러분이 가만히 있는다면 어느 누구도 여러분이 무엇을 하는지 알 수가 없다. 스타도 별로 없고, 인터넷 어디에도 링크되어 있지 않은 여러분의 프로젝트가 google 검색 상단에 갑자기 등장 할리도 없다.

나는 좋은 상품을 얻고자 한다면, 여기 저기 발품을 많이 팔아야 한다고 생각한다. 기회가 있을 때마다 여러분의 오픈소스를 알리려는 노력을 해야한다. StackOverflow, Quora에 답변을 달고, Facebook Group활동을 해야 한다. HackerNews, Reddit에도 알리고, 여러분이 구독하고 있는 Weekly에도 메일을 보내자. 하지만 큰 준비 없이 이런 활동을 갑작스레 시작하는 것은 힘만 빠지는 일이 될수도 있다. 위에 언급한 커뮤니티들은 각각 다른 성격을 가지고 있다. 커뮤니티를 이해하지 않고 글을 쓰면 즉시 홍보성 글로 삭제당하거나, 사람들로 부터 외면받게 될 것이다. 더 나쁜 경우는 밴을 당하거나 프로젝트의 이미지를 떨어뜨릴지도 모를 일이다. 시간을 두고 관련 커뮤니티에서 열심히 활동하는 것은 홍보를 위한 것만은 아니다. 커뮤니티 활동을 통해 여러분이 얻은 지식은 오픈소스를 더 좋은 프로젝트로 만드는 것에도 도움이 된다.

당신의 일에 고객이 참여하게 하는 것이 충성도 높은 고객을 얻는 가장 좋은 영업방법입니다.

내가 알고 지내던 세일즈맨이 나에게 해주었던 말이다. 나는 이 말에 100% 동감한다. 그리고 우리의 오픈소스에도 훌륭히 적용할 수 있는 말이라고 생각한다. 커뮤니티를 홍보 목적으로만 사용할 필요는 없다. 커뮤니티에서 여러분의 오픈소스의 문제점을 공유하고 도움을 얻을 수도 있다. 나는 이번 문서를 업데이트하면서 커뮤니티에 README 문서를 검토해달라고 요청했다. 그리고 2명의 커뮤니티 사용자들은 기꺼이 TOAST UI EditorREADME 를 수정해 주었다. 나는 스타를 주고 지나쳐간 다른 어떤 방문자들보다 그 2명이 우리 오픈소스에 더 큰 관심이 있을 것이라 확신한다.

image

# GitHub 알아보기

여러분의 오픈소스 Contributor를 얻는데 최적의 장소는 GitHub이다. 여러분의 오픈소스가 GitHub에 있다면 멀리서 찾지 말고, 이곳에 대해서 먼저 알아보자. GitHub 상단에는 항상 귀여운 옥토캣과 함께 여러분을 따라다니는 메뉴가 있다. 그 중 우리가 주목할 것은 Explore 메뉴이다. 아직 GitHub Explore를 둘러본적이 없다면 이번에 한번 둘러보기를 권한다. Explore는 여러분께 유용한 그리고 여러분의 흥미를 끌 만한 프로젝트를 소개해주고 있다. 여러분이 만들고 있는 오픈소스와 비슷한 것은 어떤 것이 있는지, 어떤 장점을 가졌는지, 최근의 경향은 어떻게 흐르고 있는지 이곳에서 배울 수 있다.

image

이곳은 또한 2천 4백만 GitHub 사용자에게 여러분의 프로젝트를 소개할 기회를 주기도 한다. 여러분이 오픈소스를 다른 곳(GitLab, BitBucket 등)이 아니라 GitHub에 배포해야 하는 이유가 여기에 있다. 다른 서비스 역시 훌륭한 것들이니 오해 말기 바란다. 나는 아주 오랫동안 개인 프로젝트를 비공개로 관리하기 위해 BitBucket을 사용해 왔고, GitLab은 최근 몇 년 어떠한 점들은 GitHub보다도 더 만족하는 서비스다. 그러나 오픈소스는 GitHub에 배포해야 한다. Explore를 통해 압도적으로 많은 개발자에게 여러분의 오픈소스를 소개하기 위해서 말이다.

이 페이지를 둘러보면 Collections, Topics 그리고 Trending 부분에서 오픈소스들을 소개하고 있다. CollectionsGitHub에서 큐레이팅해서 관리하는 오픈소스 리스트이다. Topics는 주제별 총 스타의 개수가 많은 오픈소스를, Trending은 전체 스타 개수와는 상관없이 언어/기간별 인기 있는 오픈소스를 소개한다. 이 중 눈여겨보아야 할 곳은 TrendingTopics이다.

Trending은 전체 스타 개수와는 상관없이 언어/기간별 인기 있는 오픈소스를 소개한다. Explore 메인에 소개되는 오픈소스들은 이번 주에 모든 언어를 통틀어 가장 많은 스타를 받은 것들이다. 이곳에 오르는 일은 매우 힘든 일이 될 것이다. 하지만 포기할 필요는 없다. See more trending repositories를 눌러보면, 기간과 언어를 선택하여 Trending 프로젝트들을 확인할 수도 있다. 이곳에 노출이 되는 것만으로도 충분히 많은 GitHub 사용자들에게 소개될 수 있다. Date rangeToday로, 언어를 여러분 오픈소스의 언어로 변경하여 리스트를 확인해보자. 상위에는 여전히 많은 스타를 받은 프로젝트들이 있지만, 하위에는 여러분의 프로젝트도 충분히 받을 수 있는 스타의 개수가 있을 것이다. 즉 여러분의 프로젝트를 GitHub에 소개하고자 한다면 우선 적어도 하루 동안은 Trending 리스트에 들어갈 수 있는 스타를 받아야 한다. 여기에서 여러분들이 열심히 활동해온 커뮤니티의 힘을 빌려보자. 새로이 오픈소스를 출시한다거나 커뮤니티에서 관심이 있을 기능을 업데이트했다면, 여러분이 활동하는 커뮤니티를 총동원해 Trending에 리스트 될 수 있도록 하자. 만일 Trending 리스트에 노출된다면, 여러분이 발품을 팔아 글을 쓴 것 이상의 효과를 볼 수도 있다.

image

위의 차트는 TOAST UI Editor 1.0을 배포한 이후, 1월 10일 오후 관련 커뮤니티들에 글을 올리고 GitHub Insight에서 방문자를 분석한 것이다. (GitHub Insight에서 보여주는 Referring sites는 2주간의 합계를 보여주는 것이므로 적절히 계산해야 원하는 값을 얻을 수 있다) 글을 올린 첫날 1월 10일을 보면 당연히 거의 모든 트래픽이 직접 글을 올린 커뮤니티에서 발생했다. GitHub이 16%를 차지하고 있는데, 이는 다행스럽게도 첫날부터 Trending에 오르면서 나타난 것이다. 다음날인 1월 11일을 보면 이미 GitHub이 절반을 차지하고 있다. 이만큼 Trending에 오르는 것이 중요하다.

image

다음날인 1월 12일에는 Trending Today에서 1위를 했다. 이때 부터는 직접 올린 커뮤니티의 글에서 들어오는 방문자가 거의 힘을 잃어가는 것이 보인다. GitHub에서 들어오는 것이 대부분이고, 노출되면서 직접 올리지 않은 곳에서도 방문자가 생겨나고 있다.

image

그 다음 날인 1월 14일을 보면 이 전날과 비슷한 추세로 GitHub이 열일하는 모습을 볼 수 있다. TOAST UI Editor는 운이 좋게도 커뮤니티에 알린 4일만인 이날 2,000 스타를 넘길 수 있었다. 이 이후 증가 추세는 줄었지만 한 달이 지난 지금도 여전히 GitHub Trending 에서 새로운 방문자를 얻고 있다. 여러분의 오픈소스가 정말 가치 있는 것이라고 믿고 널리 알리고 싶다면 GitHub Trending에는 반드시 들어가야 한다.

## GitHub Topics

image

Topics는 주제별로 전체 스타 개수가 많은 프로젝트를 보여주고 있다. Explore 메인에서는 몇 개의 토픽을 번갈아 가며 보여주고 있고, 그 이외의 토픽은 See more topics를 누르면 확인할 수 있다. 그리고 하나의 토픽을 선택하여 들어가면 해당 토픽에서 스타 개수가 많은 프로젝트를 순서대로 보여주고 있다. 즉, 여러분의 오픈소스가 스타를 충분히 받게 된다면, Trending에서 내려가게 된다 해도, 꾸준히 Topics를 통해 GitHub사용자들에게 소개될 수 있다.

Topics는 쓰임새를 잘 모르기 때문에 방치하고 있는 프로젝트를 많이 보게 된다. Topics는 아래의 캡처 이미지에서 위치를 확인하자. 토픽은 여러분이 자유롭게 여러 가지를 써넣을 수 있다. 그런데, GitHubFeatured, Popular 토픽을 선정하여 리스트 해주고 있다. Topics에 어떠한 것을 적어놓아도 문제될 리 없지만, 되도록이면 GitHub이 리스트 해주고 있는 Featured Topics를 선정하여 넣는 것이 도움이 된다. 또한, Topic에 따라 프로젝트들의 스타 개수는 천차만별이다. 인기 있는 javascript topic 을 들어가 보면 무려 292k 스타를 가진 프로젝트가 있고 한참을 리스트 내려봐도 20k 이상의 프로젝트들이 즐비하다. 여러분의 프로젝트 역시 훌륭하겠지만 이 토픽에서는 vue, react 같은 공룡 프로젝트들과 싸워 이겨야 리스트 될 수 있다는 뜻이다. 그런가 하면 비교적 한산한 Topic도 있다. Markdown Topic에 가면 1위가 21k로, TOAST UI Editor도 5.1k로 10위에 노출되어 있다. 여러분의 프로젝트가 어느 정도 스타를 얻었다면, 적절하면서도 한산한 Topic를 선정하는 것이 도움이 될 것이라 본다.

image

## Project Description

위의 이미지에서Description이 보이는가? 여러분의 대다수는 큰 의미를 두지 않고 있었을 것이로 생각한다. 나 역시 제목의 긴 버전쯤으로 대강 몇 글자 적어두고 있었을 뿐인 공간이다.

그리고 이제 아래의 이미지를 보자. 아래의 이미지는 Trending그리고 Topics에 리스팅 된 우리 프로젝트를 캡처한 것이다. 이것을 살펴보면 여러분 프로젝트의 아이콘, 조직, 프로젝트 이름 등이 보인다. 그리고 이 화면을 보는 사람들은 이 정보만으로 여러분의 프로젝트가 그들에게 유용한지 판단하게 된다. 우리가 매일 보는 Repository에서 보는 Description은 별 뜻 없는 설명 한줄일 뿐이지만 말이다. Trending, Topics에 노출되는 Description은 여러분들이 GitHub 사용자들에게 줄 수 있는 최고의 한줄 소개가 되어야 한다.

image

마치며

이 글에 공유한 팁들(문서를 충실히 작성하는 것, 커뮤니티에서 활동하는 것, GitHub이 제공하는 도구를 적극적으로 활용하는 것) 모두 여러분들이 관리하는 프로젝트를 오픈소스로서의 가치를 높이는 데 도움이 된다. 가치가 떨어지는 프로젝트라도 이 팁들을 사용한다면 인기있는 오픈소스가 될 수 있다는 말은 절대 아니다. 아무리 README를 예쁘게 꾸며도, 커뮤니티에 글을 얼마나 쓰더라도, 사람들은 여러분의 오픈소스에서 가치를 찾을 수 있어야 스타를 줄 것이다. 부디 여러분들의 보석같은 오픈소스가 여러 개발자들에게 공유되어 빛을 볼 수 있기를 바란다.

마지막으로 지금 내가 이 글을 쓸 수 있게 된 이유도 역시 훌륭한 팀원들(Shiren, JungHwan)이 개발한 프로젝트를 이어받았기 때문이라고 믿는다. 또한 우리 FE 개발랩에서 개발하는 오픈소스들은 모두 우리 팀원들의 리뷰로 탄생한 것이기에, 개발자로서 특별한 경험을 할 수 있게해준 FE 개발랩 식구들, 그리고, 오픈소스로서 자리를 잡을 수 있도록 지원을 아끼지 않은 Dooray! 개발팀에게도 감사의 말을 전한다.

ps1. TOAST UI Editor를 아직 몰랐다면 꼭 방문하여 둘러보기 바란다. 마음에 든다면 스타도 잊지 말기를 ;) ps2. Dooray!는 현재 100인(무려) 이하의 조직은 무료로 사용해 볼 수 있다. TOAST UI Editor로 업무를 할 수 있는 가장 빠른 방법이다.