1 of 53

토스 오픈소스 이야기:�이 중 하나는 터지겠지

박서진 ・ Open Source Conference 2024

2 of 53

발표자 소개

박서진

토스 Head of Frontend Engineering

오픈소스 “es-toolkit” 운영자

GitHub: raon0211

Email: raon0211@gmail.com

sojin.dev

3 of 53

오픈소스를 만드는 이야기

4 of 53

5 of 53

es-toolkit

  • 가볍고 현대적인 JavaScript 유틸리티 라이브러리
  • 2024년 6월 공개
  • 6,900+ 스타, 130,000+ 주간 다운로드 (한국에서 손꼽히는 오픈소스 라이브러리)
  • 미국, 중국, 일본 등 다양한 개발자 생태계에서 사용

6 of 53

es-hangul

  • 한글을 쉽게 다루기 위한 JavaScript 라이브러리
  • 2024년 5월 공개
  • 1,300+ 스타, 6,000+ 주간 다운로드

7 of 53

오늘의 발표: 오픈소스를 만드는 이야기

[1] 왜 오픈소스를 만드는가?

[2] 오픈소스 라이브러리를 성공시키는 방법

[3] 한국에서 오픈소스

8 of 53

왜 오픈소스를 만드는가?

9 of 53

왜 오픈소스를 해요?

10 of 53

왜 오픈소스를 해요?

11 of 53

왜 오픈소스를 해요?

12 of 53

왜 오픈소스를 해요?

아무것도 없으니까

오픈소스를 한다.

13 of 53

왜 오픈소스를 해요?

… 토스도 처음에는

실용적인 목적으로 오픈소스를 시작

14 of 53

2022년 첫 오픈소스 공개, Slash libraries

FEConf 발표

있어 보이려고

언젠가 하고 싶었어서

15 of 53

2022년 첫 오픈소스 공개, Slash libraries

꽃단장

문서화

리팩토링

16 of 53

완성하고 공개하니까 알게 된 것들

오히려 잘 만들어서 공개하니까

힘들었다

17 of 53

공개하고 관심을

가져 주시는 기여자 분들

18 of 53

사공이 많으면 배가 산으로 간다

가지각색의

기능 추가 요청

Pull Request

리뷰 비용

커뮤니케이션

19 of 53

…사공이 많으면 배가 산으로도’ 간다

생각지도 못했던

버그 픽스, 최적화

생각지도 못했던

새 기능 추가

생각지도 못했던

문서 개선

20 of 53

오픈소스의 기쁨과 슬픔

생각 이상의

프로젝트 발전

유지보수 비용

21 of 53

Slash libraries

이미 완성된 라이브러리를 공개하니까

오픈소스의 재미가 적음

22 of 53

완성된 것을 자랑하기 위해 내놓는 것이 아니다

사공이 많으면 배가 산으로 간다

23 of 53

아무것도 없으니까 오픈소스를 한다

내가 만들고 싶은 것을,

뜻하지 않은 영웅들의 도움을 얻어가며

만들기 위해서 오픈소스를 한다

24 of 53

es-toolkit

lodash 대체

약 280개 함수 구현 필요

es-toolkit

25 of 53

es-toolkit

es-toolkit

토스 구현50~60개

외부 기여140~150

미구현

호환성 71%

26 of 53

Pull Request 리뷰만으로 완성되어가는 라이브러리

27 of 53

es-toolkit

문서 작성 자동화

상호작용할 수 있는

데모

오타 수정,

일본어, 중국어 번역

28 of 53

es-toolkit 팬클럽

SNS 홍보

오픈소스 기여�(Storybook, Yarn)

플러그인 구현

29 of 53

es-toolkit

어차피 만들어야 할 것을,

도와주는 기여자 분들 덕분에

2년 걸릴 것을 6개월 안에 끝내 감

(+그리고 재밌음)

30 of 53

es-toolkit에서 배웠던 것들

  • 완성하지 않은 것을 공개해도 반응은 뜨거울 수 있다.
  • 반응이 뜨거우면, 도와주러 사람이 몰려온다.
  • 힘겹게 완성해야 하던 것들이 순식간에 완성된다.
  • 내가 훨씬 더 재밌게 일할 수 있다.
  • 내가 할 수 있던 것보다 훨씬 더 큰 것을 이룰 수 있다.

31 of 53

아무것도 없으니까 오픈소스를 한다

  • 내가 무엇인가를 만들고 싶다
  • 이걸 만들면 모두가 좋아할 것 같다
  • 그런데 내가 혼자서 만들기에는 버겁다
  • 일단 시험삼아 1%만큼만 만들어서 공개한다
  • 사람들과 함께 재밌게 1,000%까지 완성한다

32 of 53

오픈소스 라이브러리를

성공시키는 방법

33 of 53

귀여웠던 es-toolkit

토스 안에서는

4~5명 내외의 기여자

뜨뜻미지근한

외부 반응

34 of 53

오픈소스 라이브러리 성공 방정식

관심

=

가치

×

홍보

35 of 53

✨ 라이브러리 가치

사람들이 얼마나 라이브러리를 알아봐줄 것인가?

  • 라이브러리를 썼을 때 얻는 것이 무엇인가
  • 라이브러리를 안 쓰면 불편하거나 힘든 것은 무엇인가

36 of 53

✨ 라이브러리 가치

내가 불편하다고 느끼는 그 지점에서 시작한다

  • 사람들은 크게 다르지 않다

37 of 53

✨ 라이브러리 가치

es-toolkit

lodash를 쓸 때

낡은 느낌, 찜찜함

lodash를 쓸 때

느려지는 성능

38 of 53

🔊 홍보

메시지가 얼마나 강력한가

  • 라이브러리의 가치가 얼마나 직관적으로 드러나는가?
  • 얼마나 있어 보이고 좋아 보이는가?
  • 정확한 영어로 작성되어 있는가?
  • 다른 라이브러리의 유명세에 올라타기도

39 of 53

🔊 홍보

es-toolkit

A modern JavaScript utility library that’s 2-3 times faster�and up to 97% smaller – a major upgrade to lodash.

40 of 53

🔊 홍보

마케팅 채널의 다양성

  • 개발자들이 자주 지나다니는 길목
  • Reddit, SNS (Twitter), Best of JS 등

41 of 53

오픈소스 라이브러리 성공 방정식

관심

=

가치

×

홍보

42 of 53

오픈소스 라이브러리 성공 방정식

관심

=

가치

×

홍보

×

43 of 53

🍀 운

내재적 가치가 있어도,

홍보와 마케팅에 신경 써도,

오픈소스 라이브러리가 관심을 덜 받을 수 있다

44 of 53

🍀 운

가치를 느끼는 사람이 지금은 충분히 많지 않아서

내가 아직 후킹하게 표현하지 못해서

시기가 좋지 않아서

45 of 53

🍀 운

토스 오픈소스

  • 잘 될 것이라고 생각했던 것이 잘 안됨 (use-funnel, overlay-kit)
  • 시험삼아 올린 것이 잘 됨 (es-toolkit, es-hangul)
  • 꾸준히 올라가고 있는 것도 (suspensive)

46 of 53

오픈소스 라이브러리 성공 방정식

관심

=

가치

×

홍보

×

47 of 53

한국에서 오픈소스

48 of 53

왜 오픈소스는 미국에서 보통 시작할까

  • 그냥 사람이 많으니까
  • 유명한 오픈소스 메인테이너들이 많으니까
  • 서로 당겨주고 끌어주니까
  • 영어가 모국어니까

49 of 53

왜 오픈소스는 미국에서 보통 시작할까

완벽하지 않아도 지식을 개방하고 공유하는

Geek 스러운 문화가 있으니까

50 of 53

오픈소스의 매력

내 문제에 관심

자동으로 풀린다

빨리 푼다

재밌게 푼다

51 of 53

언제 오픈소스를 시작해야 하는가

뭔가 불편할 때

그 불편함을

탁월하게

그 불편함을

빨리 풀고싶을 때

그 불편함을

재밌게 풀고싶을 때

52 of 53

토스에서 오픈소스를 계속하는 이유

멋진 기여자들과 함께

근사한 배를 산으로 보내려고 하니까

53 of 53

감사합니다