GitHub 한국 1위 개발자가 말하는 오픈소스 해야 하는 이유 5가지

Ted Park
박상권의 삽질블로그
10 min readMar 26, 2020

제목은 사실 어그로입니다. Java에서 대한민국 1위입니다.
2015년부터 GitHub에서 오픈소스를 시작했습니다.
지금까지 오픈소스 활동을 해오면서 경험한 것들과 장점,단점에 대해 공유합니다.

이 글은 작년 10월에 있었던 GitHub 개발자 행사에서 제가 발표했던 내용을 기반해서 작성한 글 입니다.

누구냐, 넌

저는 Star개수 기준 GitHub 대한민국 Java 1위개발자입니다.
(Kotlin은 4위)

http://git-awards.com/users?country=south+korea&language=java

주로 안드로이드 관련 오픈소스들을 배포하고 운영해오고 있습니다.

  • TedPermission : 안드로이드 권한 요청 라이브러리
  • TedImagePicker : 이미지 선택 라이브러리
  • TedNaverMapClustering : 네이버지도SDK에 없어서 직접 만든 안드로이드용 네이버 지도 클러스터링 라이브러리
  • 기타 등등
(TedImagePicker)
(TedNaverMapClustering)

TedPermission은 Google에서 진행한 세미나에서 잘 만든 사례로 소개되기도 했었습니다.

그 외에도 블로그에 작성하는 팁들을 실제로 확인해볼 수 있도록 각종 데모 프로젝트들을 GitHub에 공유하기도 합니다.

저에 대한 자세한 소개는 Introduce를 확인해주세요
https://github.com/ParkSangGwon/Introduce
(심지어 자기소개도 GitHub으로 작성해서 관리하고 있습니다)

오픈소스 해보니까 어때요?

돈이 안됩니다

  • 오픈소스 열심히 한다고 돈이 들어오는 것은 아닙니다.
  • 심지어 내 개인적인 시간도 많이 들여야 합니다.

귀찮습니다

  • 오픈소스를 만들고 배포하면 오픈소스에 대한 설명이나 사용 방법에 대한 README문서를 작성해야 합니다.
  • 나혼자 쓸때는 나한테 필요한 함수나 기능들만 만들면 됐었는데 많은 사람들이 사용하다 보니 커스텀할 수 있는 여러 기능과 방법을 제공해줘야 합니다.

너무 귀찮습니다

  • 오픈소스에 질문들이 올라오면 하나하나 다 답변해줘야 합니다.
    (요즘에 많이 답변 못해드리고 있습니다ㅜ)
  • 기능추가 요청에도 답변 달면서 실제 해당 기능들을 추가해줘야 합니다.
  • 다른 컨트리뷰터들이 올려주는 PR들을 리뷰하고 버그들도 수정해줘야 합니다.

아..그럼 오픈소스 안해야 되나요?

보람이 있습니다..?

  • 왠지 모를 보람과 사명감이 생깁니다.
  • 누군가가 나의 오픈소스를 유용하게 활용해서 도움이 되었다는 마음에 가슴속 어딘가에서 솟구치는 감동(이 있을리 없잖아..)
  • 저도 라이브러리를 많이 활용해서 앱을 개발해오고 있기 때문에 ‘받은만큼 돌려준다' 라는 마음에 뿌듯함이 있습니다.

인지도가 올라갑니다

  • 안드로이드 개발자라면 ‘박상권의 삽질블로그'는 들어보셨을겁니다.
    (한번도 들어온 적은 없어도 한번만 들어온 적은 없다는 그 블로그 지옥)
  • 오픈소스 활동을 하면서 블로그에도 글을 올리고 여러 커뮤니티에도 공유하면서 ‘박상권’ 혹은 ‘테드박' 이라는 사람을 아는 사람들이 많이 생겼습니다.
  • 페이스북 생활코딩 에 많은 개발관련 이야기를 공유하다보니
    인기 게시물 작성 멤버 칭호(?)도 받게 되었습니다.

겪어보지 못했던 경험을 하게 됩니다

  • PR을 올리고 리뷰를 하면서 협업에 대한 경험을 하게되고
    마치 팀으로 일하는 것처럼 간접 경험들을 하게 됩니다.
  • 나혼자 사용했다면 알 수 없었을 오류나 다양한 이슈들에 대해서 알게 됩니다.
    많은 사람들이 오픈소스를 사용하게 되므로 자연스럽게 다양한 환경에서 테스트가 되고 좀더 발전된 오픈소스가 됩니다.

개발 실력이 올라갑니다

  • 나 혼자 코딩하면 코드는 항상 개판입니다
    (이건 1년차 개발자든 10년차 개발자든 똑같습니다)
  • 나의 오픈소스 코드를 누군가가 지켜보고 있다고 생각하면 나도 모르게 코드 퀄리티가 향상 됩니다.
  • 또한 나 스스로가 해당 코드들에 대해서 개념을 정립하게 되는 개념이 됩니다.
    머리속에 어렴풋이 있던 알고리즘이나 개념들을 실제 오픈소스에 적용하면서 내 스스로의 지식이 향상되는것을 느낄 수 있습니다.
    (이는 블로그를 하면 자기 자신이 제일 많이 도움받는걸 느끼는 것과 같습니다)

돈을 더 많이 벌게 됩니다

  • 오픈소스 활동한다고 돈을 받지는 않지만, 오픈소스로 인해 돈을 더 많이 벌게 됩니다.(엥?)
  • 회사에서 일하기 위해서 구직을 한다면, 이미 합격입니다.
    나에 대한 인지도가 있기 때문에 면접관이 나에 대해서 잘 알고 있거나 쉽게 찾아볼 수 있습니다.
    나 또한 구구절절하게 나에 대해서 소개할 필요 없이 이미 내가 만든 여러 오픈소스와 오픈소스 활동들에 대해서 공유하고 이야기할 수 있습니다.
    위에서 언급했던 다양한 경험과 코드퀄리티 향상으로 다른 구직자보다 더 많은 이야기를 할 수 있습니다.
  • 프리랜서로 외주를 맡게 되신다면, 클라이언트가 믿고 맡길것입니다.
    클라이언트는 제가 먹튀할리 없다는 신뢰를 합니다.
    오픈소스들을 통해 제가 만든 개발 결과물들을 미리 확인할 수도 있습니다.
    맡기는 입장에서는 조금 더 비용을 지불하더라도 쌩판 모르는 사람보다는 어느정도 알려진 사람에게 외주를 맡기는것을 선호합니다.
  • 창업을 하신다면, 좋은 팀원들을 만날 수 있습니다.
    좋은 사람 곁에는 좋은 사람들이 모입니다.
    외주와 마찬가지로 처음 시작하는 사람들에게는 무언가 불안감이 있기 마련인데, 이때도 쌩판 모르는 사람보다는 어느정도 알려진 사람과 함께 일하는것을 선호합니다.

오픈소스 해볼래요! 뭐부터 해야하죠?

  • 시작이 반입니다. GitHub 계정을 만드세요.
    (반이나 했으니 이제 쉽시다)

다른 오픈소스들에 기여해보세요

  • 내가 사용중인 오픈소스에 문제가 있거나 이슈가 있다면 issue에 글을 작성해서 해결되도록 해보세요
    Google에서 만든 코드에도 오류는 발생합니다.
    제가 Google의 라이브러리를 사용하면서 발생하는 아주 심각한 버그를 찾게 되었고 이를 공유해서 문제가 해결되는데 기여 했습니다.
    https://github.com/googleads/googleads-mobile-android-mediation/issues/75
  • 내가 평소에 쓰고 있는 라이브러리에 추가되었으면 하는 기능이 있다면 기능을 추가하고 해당 Repository에 PR을 올려보세요

나의 코드를 오픈소스로 만들어 보세요

  • 내가 사용하고 있는 코드중에서 유용하게 사용되고 있는 아키텍쳐나 컴포넌트등을 찾아서 오픈소스를 만들어 보세요
  • 아주 거창한 프로젝트일 필요는 없습니다. 단 몇줄짜리 코드여도 되고 파일 1개여도 됩니다.
    제가 제일 처음 공유한 오픈소스는 44줄짜리 파일1개였습니다.
    https://github.com/ParkSangGwon/DLog
  • TedPermission도 안드로이드 마시멜로우 권한대응을 하기 위해서 만들었다가 다른 사람들도 편하게 사용했으면 하는 마음으로 오픈소스로 만들었습니다.
  • TedNaverMapClustering도 안드로이드용 네이버 지도 SDK를 사용하던중 클러스터링이 필요한데 SDK자체에 없어서 제가 직접 만들고 오픈소스로 풀었습니다.
  • 내가 필요한건 누군가도 필요합니다. 오픈소스로 공유해보세요

나의 노하우를 오픈소스로 설명해보세요

  • 코드 작성하는 노하우나 효율적으로 작성하는 방법에 대한 설명을 할때 sample 프로젝트로 만들어서 오픈소스로 공유해보세요

이상한 개발자들의 문화

  • 개발자들의 세계는 다른 업종에서는 이해할 수 없을 만큼 이상합니다.
  • 개발자들은 자신만의 노하우를 공개하고 공유합니다.
  • 마케팅이나 다른 업종이었다면 어떻게든 자신만의 노하우를 지키고 강점으로 가져가려고 하는데 말이죠..
  • 이것이 바로 ‘받은만큼 돌려준다'라는 아주 좋은 오픈소스의 선순환인것 같습니다.

물론, 가끔 오픈소스 생태계를 혼란시키는 일들도 일어나긴 합니다

항상 오픈소스 생태계에 참여하고 활성화 시키기 위해서 노력하는 많은 개발자분들을 응원합니다.

개인뿐만 아니라 많은 기업에서도 오픈소스에 참여해서 개발자들의 생태계가 더욱더 활발해졌으면 하는 바램입니다.

이 글이 재밌으셨다면 좋아요! 구독…아니..박수 버튼 힘껏 눌러주세요

(뭐, 갈때 가더라도 유튜브 홍보 한번정도는 괜찮잖아?)

모두 행복한 개발하시기 바랍니다.

안드로이드 개발자들이 모여있는 오픈채팅방에 참여해보세요.
Q&A 및 팁을 공유하는 방입니다.

--

--