Launching a Side Project Backed by Github Sponsors

Matthias Endler

GitHub Sponsors 후원으로 사이드 프로젝트 론칭하기

원문은 Matthias Endler님이 에 게재했습니다. 이 블로그 구독하기

어제 우리는 analysis-tools.dev를 론칭했는데, 반응을 정말 과소평가했었다.

정적 코드 분석 도구를 비교하는 사이드 프로젝트다. 정적 분석은 코드를 실행하지 않고도 소스 코드에서 버그를 찾아내 코드 품질을 높이는 데 도움을 준다.

이 프로젝트에서 가장 좋은 점은 완전히 오픈소스라는 것이다. 우리는 광고를 보여주거나 사용자를 추적하는 데 의존하지 않는 제품을 만들고 싶었다. 대신 GitHub에서 스폰서를 받는 것, 그게 전부였다. 그 과정에서 많은 것을 배웠고, 당신도 같은 길을 가고 싶다면 계속 읽어보라!

먼저, 몇 가지 통계

모두가 비즈니스 지표를 좋아한다. 우리의 지표는 다음과 같다:

  • 프로젝트는 2015년 12월 GitHub의 어썸 리스트로 시작했다.
  • 현재 470개의 정적 분석 도구가 등록되어 있다.
  • 트래픽은 꾸준히 증가했다. 현재 스타 7.5k개, 기여자 190명 이상을 기록하고 있다.
  • 주당 순 방문자 500~1,000명.
  • 웹사이트를 만들어야겠다는 생각은 몇 년 전부터 하고 있었지만, 동료 Jakub가 2020년 5월에 합류하면서 마침내 현실이 됐다.
시간에 따른 GitHub 스타 수. 저 그래프는 대놓고 비즈니스 기회라고 외치고 있다.
시간에 따른 GitHub 스타 수. 저 그래프는 대놓고 비즈니스 기회라고 외치고 있다.
출처: star-history.t9t.io

“웹사이트 하나 만드는 데 왜 5년이나 걸렸지!?”라고 묻는 소리가 들린다. 아이디어가 너무 당연해 보여서 다른 누군가 이미 시도했다가 실패했을 거라고 생각했기 때문이다.

아무도 이 틈새를 메우러 나서지 않았는데도 미뤘다.
5년 동안 리스트를 꾸준히 최신 상태로 유지하며 세상에 어떤 도구들이 있는지 공부하면서도 미뤘다.
요지는 이거다. 너무 오래 미루지 마라. 아이디어가 당연해 보인다면, 아마 정말 당연한 것이기 때문이다.

수익 모델

프로젝트를 재정적으로 어떻게 뒷받침할지 고민하는 데 시간이 좀 걸렸다. 원하지 않는 것은 분명했다. AdWords로 도배된 SEO 쓰레기 매립지 같은 사이트는 되고 싶지 않았다. 사용자 데이터를 트래커에 “판매”하는 것도 원치 않았다.

GitHub의 기여자들 덕분에 모든 데이터를 모두에게 무료로 유지해야 할 책임이 있었다. 그런데도 어떻게 서비스를 만들 수 있을까? 처음에는 인프라 비용을 우리가 직접 부담할까 생각했지만, 그렇게 하면 사이트를 유지하거나 새로운 기능을 확장할 동기가 생기지 않을 것 같았다.

GitHub Sponsors는 당시만 해도 꽤 새로운 서비스였다. 하지만 그것이 선택지라는 걸 깨닫자마자 바로 감이 왔다. 경쟁사와의 비교를 두려워하지 않는 기업이라면, 그런 비교를 가능하게 하는 오픈 플랫폼을 후원할 동기가 있다는 것이다. 게다가 편향을 피하고 비교를 객관적이고 쉽게 만드는 제품을 만들 수 있었다.

후원은 영혼 없는 성장을 막는 해독제가 되어, 날렵하고 지속 가능한 사이드 비즈니스를 만들 수 있게 해줄 수 있었다. 우리는 analysis-tools.dev가 전업이 될 거라고 기대하지 않는다. 시장이 그 정도로 크지 않을 수도 있다 — 그리고 그걸로 충분하다.

기술

수익 모델이 정해지자 기술에 집중할 수 있었다. 둘 다 엔지니어라 빠르게 반복하며 개발할 수 있었다.

처음에는 Yew로 뭔가 멋진 것을 만들어보고 싶었다. Yew는 Rust/WebAssembly 프레임워크인데, 여러분이 아는 이 친구가 Rust/WebAssembly를 좋아하거든

Jakub가 다른 걸 제안해줘서 다행이었다. 바로 Gatsby였다. 이제 솔직히 말하자면, 난 Gatsby에 전혀 관심이 없었다. Jakub에게도 그렇게 말했다. “난 Gatsby에 하나도 관심 없어.” 하지만 바로 그게 핵심이었다. 특정 기술에 감정적으로 매달리지 않으니 일 자체에 집중할 수 있었고, 결과적으로 더 많은 일을 해낼 수 있었다!

그 이후로는 거의 순항이었다. 스타터 템플릿을 사용했고, Jakub가 GraphQL 연동 방법을 알려줬으며, 심지어 Rust도 쓸 수 있었다! 사이트는 Cloudflare에서 Rust 기반 엣지 워커로 돌아간다. (그래, 좀 꼼수를 부렸다.)

셋만 세면, MVP 완성!

스폰서 찾기

그렇게 프로토타입은 생겼지만 스폰서는 아직 한 명도 없었다. 그때부터 시작된 것이 지금까지도 가장 어려운 부분이었다. 사람들을 설득해 후원을 받게 하는 일이었다.

운 좋게도 콜드 메일을 보내지 않았다. 대부분 기업이 무시하기 때문이다. 대신 인맥을 돌아보았고, 예전에 개발자들이 자신들 회사의 프로젝트를 GitHub의 기존 정적 분석 리스트에 추가해달라고 연락해왔다는 걸 떠올렸다.

가장 먼저 연락한 사람들이 바로 그들이었다. 메시지는 짧고 개인적으로 쓰려고 노력했다.

가장 효과가 좋았던 건 적당한 길이의 이메일이었다. 프로젝트에 대한 맥락과 예전에 기여했던 사실을 상기시켜주는 내용을 담았다. 그리고 우리의 스폰서 페이지 링크를 첨부했다.

기업은 신뢰할 수 있는 파트너와 합리적인 가치 제안을 원한다. 그래서 스폰서 페이지를 빈틈없이 다듬는 것이 전제 조건이었다.

우리의 GitHub Sponsors 페이지
우리의 GitHub Sponsors 페이지

스타워즈 에피소드 9처럼 반응은 엇갈렸다. 많은 사람은 아예 답장을 하지 않았고, 어떤 이들은 메시지를 매니저에게 전달했지만 그 매니저 역시 답이 없었으며, 또 어떤 이들은 애초에 오픈소스 프로젝트 후원에 관심이 없었다. 모두 이해할 수 있는 일이다. 사람들은 바쁘고, 스폰서웨어는 아직 꽤 새로운 개념이니까.

잠깐 넋두리를 하자면, 내 생각에 기술 기업들은 오픈소스로부터 얻는 가치에 비해 후원을 턱없이 적게 한다. 회사가 설립될 당시 Linux 같은 무료 운영체제나 Nginx, Apache 같은 웹서버가 없었다면 당신의 회사가 존재할 수 있었을까?

하지만 드물게 관심을 보이지만 약간의 안내가 필요한 부류도 있었다. 많은 이들에게는 GitHub Sponsors / Open Collective를 통해 개발자를 후원하는 첫걸음이었다.

우리가 재정 호스트로 Open Collective를 사용한 것이 도움이 됐다. Open Collective가 청구서 발행과 기부금 전달을 처리해주기 때문이다. 그들의 문서는 시작할 때 큰 도움이 됐다.

스폰서를 찾는 일은 끝이 없지만, AI 기반 시맨틱 분석 서비스인 DeepCode로부터 우리에게 기회를 주겠다는 답을 들었을 때는 정말 든든했다.

그들 덕분에 제품을 완성 단계까지 끌고 갈 수 있었다. 그들 덕분에 사이트를 모두에게 무료로 유지할 수 있다. 그리고 웹사이트에 광고와 트래커가 없도록 유지할 수 있다는 뜻이기도 하다.

그 대가로 DeepCode는 코드 품질에 관심 많은 수많은 훌륭한 개발자들에게 노출되고, 그중 일부는 충성 고객이 될 수도 있다. 또 오픈소스에 친화적인 기술 기업으로 인정받게 되는데, 개발 도구를 판매하려는 입장에서는 그 어느 때보다 중요한 일이다. 서로에게 이득인 셈이다!

마케팅

Jakub와 나는 둘 다 이전에 사업을 해본 경험이 있었지만, 이번이 처음으로 진정으로 오픈된 제품을 만드는 일이었다.

1단계: 빨리 출시하기 🚀

소프트 론칭을 하기로 했다. 사이트를 최대한 빨리 배포하고 크롤러가 인덱싱하도록 두는 것이었다. 페이지가 정적으로 렌더링되고 기본적인 SEO 가이드라인을 따른 덕분에 시간이 지나면서 검색 엔진 순위를 높이는 데 확실히 도움이 됐다.

2단계: 타깃으로부터 피드백 받기 💬

자연 유입 트래픽과 첫 투표가 생긴 뒤, 개발자 친구들에게 연락해 페이지를 테스트하고 그들이 알고 좋아하는 도구에 투표해달라고 부탁했다. 이는 초기 검증 역할을 했고, 솔직한 피드백을 받아 가장 눈에 띄는 결함들을 잡아낼 수 있었다.

3단계: 공지 글 준비하기 📝

블로그 글 하나를 썼다. 다소 낚시성 제목이긴 했지만 할 일은 해냈다. 바로 Static Analysis is Broken — Let’s Fix It!이다. 이 글은 이 분야에 대한 우리의 답답함과 왜 오픈 플랫폼을 만드는 것이 중요한지를 잘 담고 있다. 여러 분석 도구 간의 기술적 차이를 더 잘 설명할 수도 있었겠지만, 그건 다음 기회에 하기로 했다.

4단계: 소셜 미디어에 알리기 🔥

공식 발표를 얼마 앞두고 검색 기능이 고장 난 걸 발견했다(역시나). 알고 보니 Algolia의 무료 할당량을 예상보다 쪼오금 더 일찍 초과한 것이었다. 😅 별일 아니었다. Algolia 고객 지원팀과 빠르게 연락을 주고받은 뒤, 우리가 존재조차 몰랐던 오픈소스 플랜으로 옮겨주었고, 바로 정상 궤도로 돌아올 수 있었다!

참고: Algolia 고객 지원은 최고 수준이다. 반응이 빠르고 기술적으로 능숙하며 친절하다. Algolia는 우리 제품에 아주 잘 맞았다. 응답 시간은 일관되게 수 밀리초 단위였고 Gatsby와의 연동도 빠르고 쉬웠다.

그 트윗으로 꽤 화제가 됐다: 리트윗 63회, 좋아요 86개 그리고 계속 늘어나는 중
그 트윗으로 꽤 화제가 됐다: 리트윗 63회, 좋아요 86개 그리고 계속 늘어나는 중

분명 모두가 우리가 지지를 요청하고 있다는 걸 알고 있었겠지만, 좋아요를 누르고 리트윗해준 모든 분께 감사한다. 같은 생각을 가진 사람들의 네트워크가 도움이 되는 바로 그런 상황이었다.

사이트가 완전히 고장 난 건 아니라는 확신이 들자마자 Lobste.rs(다운보트 2개), /r/SideProject(업보트 3개) 그리고 Hacker News(업보트 173개, 댓글 57개)에 공지를 올렸다. 소셜 미디어는 다소 예측 불가능하다. 다만 각 커뮤니티에 맞게 메시지를 조정하고 겸손한 태도를 유지하는 것이 도움이 된다.

그 모든 마케팅 노력에 대한 반응은 말 그대로 대박이었다:

론칭 당일 트래픽
론칭 당일 트래픽

어쩌면 당연하게도, Cloudflare 엣지 워커는 전혀 힘들어하지 않았다.

Cloudflare 엣지 워커 CPU 시간
Cloudflare 엣지 워커 CPU 시간

우리 상사인 Xoan Vilas는 간단한 성능 분석까지 해주고 합격 판정을 내렸다. (고마워요, 보스!)

모두 하이파이브!

그래서 이제는?

물론 새로운 기능을 추가할 것이고, 물론 앞으로 더 많은 계획이 있다, 뭐 그런 이야기들이다. 대신 이 이정표를 한번 돌아보자. 광고도 트래커도 없이 오직 스폰서만으로 유지되는 건강하고 작은 비즈니스다. 🎉

마지막으로, 당신도 스스로를 깊이 들여다보고 작업할 작은 제품을 찾아보길 바란다. 아마 바로 코앞에 있을 것이고, 나처럼 너무 오랫동안 미뤄왔을지도 모른다. 하지만 이제는 그만! 다음 성공 스토리의 주인공은 바로 당신이다. 나가서 만들어보자.

아, 잠깐! … 떠나기 전에 analysis-tools.dev에 들러서 마음에 드는 도구 몇 개에 업보트 버튼을 눌러주시겠어요? 그리고 오늘 유난히 마음이 넉넉하다면(혹은 오픈소스를 소중히 여기는 멋진 고용주가 있다면), 저희 스폰서십 페이지를 한번 확인해보는 건 어떨까요?

오스트리아 빈에서 Jakub와 함께. 사실 내가 그렇게 작은 건 아니다.
오스트리아 빈에서 Jakub와 함께. 사실 내가 그렇게 작은 건 아니다.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글