! This post is also available in the following languages. 영어, 일어, 중국어 번체

LINE Open Source Sprint 2021: 오픈소스에 잘 기여하는 문화 만들기

안녕하세요. Open Source Program Office TF입니다. 저희 팀은 LINE의 개발 문화가 오픈소스 문화와 더욱 가까워지도록 많은 노력을 하고 있습니다. LINE은 오픈소스에 많이 의존하고 있는데요. 이런 환경에서 근무하는 개발자들이라면 단연 한 번쯤은 다음과 같은 생각을 합니다.

‘아… 나도 시간 내서 언젠가 오픈소스에 기여해 봐야 하는데…’

그리고 이어서 다음과 같은 생각이 듭니다.

‘그런데 뭘 어디서부터 해야 할지 엄두가 안 난다 ㅠㅠ’

이런 고민을 많은 사람이 하고 있다는 것을 알기 때문에, 저희 팀은 오픈소스 기여를 위한 사내 이벤트를 기획하고 진행해 보았습니다. 이번 글에서는 지난 2021년 연말에 진행했던 오픈소스 스프린트 행사에 대해 소개 드리겠습니다. 

 

어떤 행사였나요?

오픈소스 스프린트는 짧은 기간 동안 사람들이 모여 오픈소스에 기여하는 행사입니다. LINE에서는 다수의 오픈소스를 공개하고 있는데요. 2019년에는 그중 Armeria 프로젝트를 대상으로 단기 오픈소스 기여 멘토링(Armeria Sprint)을 진행했었습니다. 당시 현장의 모습을 요약하자면, Armeria에 기여하고 싶은 사람들이 한자리에 모여 해결할 이슈에 대해 이야기하고, 개발하고, 질문하고, PR(pull request)을 제출했습니다. 이후 3년이(시간이 참 빨리 가네요!) 지난 오늘날까지도 그때를 계기로 꾸준히 기여하는 개발자분들이 계십니다. 처음에는 초심자의 입장으로 시작했지만 이제는 거뜬히 남을 도와줄 수 있는 역할을 할 수 있게 된 것입니다.

이런 모습을 보면서 이벤트를 기획하고 진행했던 필자로서는 뿌듯하기도 하면서, 한편으로는 마음 한곳이 콕콕 찔리는 느낌을 받았습니다. 앞서 이야기 드렸듯이 LINE에서는 ‘다수’의 오픈소스를 공개하고 있는데, 다른 여러 프로젝트에서도 기여자를 필요로 한다는 것을 알고 있기 때문이었죠.

그래서 이번에는 참가 대상을 LINE의 오픈소스 프로젝트 전체로 확대했습니다. LINE에서 공개한 오픈소스들은 대부분 내부 수요에 맞춰 개발한 뒤 필요에 따라 오픈소스로 공개하게 된 것인데요. 자연스럽게 제1사용자는 사내 직원들입니다. 따라서 여러 팀에서 각기 다른 서비스를 개발하면서 오픈소스를 사용하다 보면 추가하고 싶은 기능이 생기거나 버그를 발견하는 등 기여할 일감을 쉽게 접할 수 있습니다. 또한 LINE의 오픈소스 프로젝트는 메인테이너가 바로 옆에! (물론 지금은 가상의 옆자리이지만요) 있으면서 많은 도움을 줄 수 있다는 특장점이 있습니다. 

결과적으로는 다음과 같이 행사가 진행되었습니다. 

기간
  • 프로젝트 모집: 1주일
  • 일감 준비: 2주일
  • 참가 모집: 1주일
  • 개발: 3주
참가 대상
  • 프로젝트: LINE에서 공개한 오픈소스 프로젝트
  • 참가자: LINE 그룹 내 개발자라면 누구나

 

어떻게 진행했나요? 

 

프로젝트 모집

참가 대상은 프로젝트와 개발자로 나누어 볼 수 있으며, 행사의 규모를 파악하기 위해 프로젝트를 먼저 모집하기 시작했습니다. 이런 행사에 참가하는 게 처음인 분들이 계시기 때문에 전체 오픈소스 메인테이너 분들을 모시고 이번 행사의 개요와 취지, 어떤 역할이 필요한지 등을 소개하는 시간을 마련했습니다. 이후 어떤 오픈소스 프로젝트에서 기여자가 필요한지, 또 지금 상황에서 신규 기여자를 받아들일 수 있는 여유가 있는지 수요를 조사했는데요. 결과적으로 총 4개의 프로젝트 – ArmeriaCentral DogmaDecatonLINE FIDO2 Server 프로젝트가 참가하게 되었습니다.

 

일감 준비

행사에 앞서 참가자들이 어떻게든 단 1회라도 PR을 제출할 수 있도록 준비했습니다. 아무리 오픈소스 기여에 관심이 많은 사람이라고 하더라도, 또 아무리 그 오픈소스를 사용해 본 경험이 많다고 하더라도 실제로 기여에 뛰어들기까지는 허들이 높을 수 있습니다. 이를 위해 메인테이너들은 초심자를 위한 이슈를 미리 만들어두어 진입 장벽을 낮추는 작업을 먼저 진행했습니다. 이렇게 초심자를 위해 미리 준비한 이슈는 ‘good-first-issue’, 또는 ‘first-timers-only’ 등의 라벨을 붙여 알아보기 쉽게 표시합니다. 준비해 둔 일감의 규모에 따라 최대 참가자 수도 결정할 수 있었습니다.

여담이지만, ‘good-first-issue’와 관련해서 흥미로운 사건이 있었는데요. 스프린트 행사를 위해 미리 만들어 두었더니 호시탐탐 기회만을 엿보던 외부 기여자들이 먼저 하겠다고 나서면서 일감이 빠르게 고갈되는 해프닝이 벌어지기도 했습니다. 그래서 개발이 시작된 뒤에 다시 일감을 만든 뒤 이슈로는 등록하지 않고 참가자에게 따로 설명해 주는 방식으로 일감 나누기가 진행되기도 했습니다.

 

참가자 모집

프로젝트를 모집할 때와 마찬가지로 일반 참가자들이 행사에 대한 설명을 들을 수 있는 설명회를 진행했습니다. 여러 나라에 개발 조직이 분포되어 있다 보니 한국어, 일본어, 중국어, 영어로 통역이 섭외되었습니다. 이 자리를 빌려 통역을 섭외해 주신 우리 서포트 조직, 그리고 통역사님께 감사 인사를 드립니다! (다음에도 잘 부탁드려요!  🙂 ) 설명회에서는 이 행사의 개요에 대해, 그리고 참가자들에게 기대하는 역할과 결과에 대해 이야기하고 또 지난 Armeria Sprint에 참가했던 분의 소감도 들어보며 참가를 독려하는 시간도 마련했습니다. 설명회 이후에는 각 프로젝트별로 선착순으로 참가 신청을 받았습니다. 행사는 3주 동안 업무 중에 시간을 내어 진행할 예정이었으므로 각 참가자의 조직장님들께도 행사의 취지와 진행 내용에 대해 사전에 안내를 드렸습니다. 

 

개발

이제 드디어 개발이 시작됐습니다. 먼저 각 프로젝트별로 참가자들과 메인테이너들이 모여 자신을 소개하고, 프로젝트에 대해, 그리고 일감에 대해 이야기하는 시간을 마련했습니다. 다만 COVID-19 상황이라서 어쩔 수 없이 서로의 얼굴을 화면으로만 보아야 했습니다. 물론 저희들은 재택근무에 완벽히 적응했기 때문에 소통에는 별문제가 없을 것이라고 생각했지만, 행사의 취지가 ‘혼자서는 어디서부터 어떻게 해야 할지 모르겠는 사람들을 돕는다’였기 때문에 고민이 많았습니다. 그래서 저희는 다음과 같은 규칙을 만들었습니다.

  1. 개발은 최대한 업무 시간 내에 한다. → 참가자들의 조직장님께 미리 공지드린다.
  2. 가능하면 정해진 시간에 가상의 공간에 모인다.
  3. 메인테이너는 가상의 공간에서 대기하며 자신의 업무를 한다.
  4. 참가자는 대기 중인 메인테이너에게 자유롭게 말을 걸고 질문과 토론을 한다. 
  5. 이외의 커뮤니케이션은 Slack 채널에서 한다. 

처음 전면 재택근무가 시행됐을 때에는 화상 회의가 조금 어색하던 시절이 있었는데요. 이번에도 그때처럼 가상 공간이 조금 어색하게 느껴지진 않을까? 하는 생각이 들었습니다. 그렇지만 역시 하나의 관심사로 모인 사람들이라 그런지 금방 적응하고 활발하게 토론의 장을 만드는 모습을 볼 수 있었습니다. 

활발한 토론이 진행되는 모습. ‘우리들의 친근한 이웃’도 자리해 주셨네요!
가상 공간에서도 각자 의자나 책상을 차지하고 앉아서 개발하시는 모습이 인상 깊었습니다. 🙂

 

마무리

4주간의 개발 기간을 마쳤습니다. 각 프로젝트에서는 이번 스프린트에서 가장 활발하게, 그리고 적극적으로 활동해 주신 멤버 한 분을 MVP로 선정했는데요. 참가자 전원이 모여 MVP를 시상하고 서로의 소감과 짧은 회고를 나누며 마무리했습니다. 

아래는 다같이 모여 성과를 공유하고 참가 소감과 행사 진행에 대한 의견을 나누는 모습입니다.

힘써주신 메인테이너 분들, 그리고 MVP분들께는 트로피를 전달드렸습니다. 또한 참가 기념품으로 2022년 달력을 제작해 전달했습니다.

 

왜 이런 행사를 진행하게 되었을까요?

이번 행사는 크게 세 가지 목표를 두고 기획을 시작했습니다.

1. 일상적인 업무 진행 과정에서 오픈소스를 개발하고 기여할 수 있는 환경을 마련한다.

LINE에서는 다양한 분야에서 오픈소스를 많이 활용하고 있습니다. 그렇기 때문에 저희는 오픈소스 개발과 기여가 필히 일상적인 업무 과정 속에서 발생해야 한다고 생각합니다. 오픈소스를 수정해서, 사용하고, 업스트림에 기여하지 않는다면, 해당 버전에 발이 묶이면서 결국 개발한 게 레거시로 남게 될 수도 있습니다. 사용하기만 하고 기여하지 않는다면 오픈소스의 개발 방향에 아무런 영향력을 끼칠 수 없습니다.

현실적인 문제로는 이와 같은 것들이 있고요. 이와 더불어 일상 업무에서 오픈소스를 개발하고 기여하는 것은 개발 문화를 형성하는 측면에서도 중요합니다. LINE에서 강조하는 개발 문화 키워드가 바로 ‘성장’인데요. 개발자의 성장에 대해서 이야기할 때 빠지지 않는 것이 바로 오픈소스입니다. 개발자들이 성장할 수 있는 개발 문화를 만들기 위해서는 업무에서 자연스럽게 오픈소스를 활용하고, 또 자연스럽게 오픈소스를 개발하고 기여하는 분위기를 만들어야 한다고 생각합니다. 

2. 오픈소스 기여 정책을 알리고 직접 체험한다.

저희 팀은 오픈소스와 관련된 다양한 정책과 프로세스를 만들고 운영합니다. 하지만 아무리 좋은 정책이 있다고 하더라도 사람들이 알지 못하면 전혀 효과를 볼 수가 없는데요. 저희는 이번 행사를 통해 참가자들에게 오픈소스 정책을 알리고 직접 체험해 볼 수 있는 기회를 만들고 싶었습니다. 전체 임직원수에 비하면 많지 않은 수의 참가자들만 정책을 익히게 되는 것이라고 생각할 수도 있지만, 이 참가자들이 주변 동료에게 알리는 중요한 역할을 할 수 있을 것이라고 기대합니다(믿어요, 여러분!).

3. LINE의 오픈소스 개발에 필요한 리소스를 보충한다.

오픈소스 개발은 외로운 싸움이 되기 쉽습니다. 주변의 기대는 크고, 참여하는 인원은 적으며(혼자일 수도 있고), 해야 할 일은 쌓여 있죠. 이런 상황에서 메인테이너들에게 힘이 되는 것은 한마음 한뜻을 가진 동료가 힘을 보태 주는 것이 아닐까 생각했습니다. 이번 행사는 초심자로 시작해서 꾸준히 기여해 줄 수 있는 동료를 만드는 것을 또 하나의 목표로 삼았습니다.

또한 생각해 보면 언젠가는 옆자리 동료가 아닌 외부 기여자를 맞이하게 될 수도 있을 텐데요. 이번 행사를 통해서 메인테이너들은 기여자를 위해 신경 써야 할 부분은 무엇인지, 문서에서 제공하지 못하고 있었던 부분이 있었는지 등 현 상태를 점검할 수 있었습니다. 이렇게 준비해 두면 잠재 기여자들이 쉽게 일감을 고르고 뛰어들 수 있는 기반이 됩니다.

 

행사 결과는?

이번 행사의 성과입니다.

25명의 참가자가 총 24개의 PR을 제출했고, 행사 종료 시점까지 그중 12개가 머지됐습니다! 또한 행사가 종료된 후에도 꾸준히 진행되면서 제가 이 글을 쓰고 있는 2월 중순까지 총 20개가 머지된 것을 확인했습니다. 행사가 종료된 뒤에도 끝까지 포기하지 않은 참가자분들과 여전히 도전 중인 참가자분들께 다시 한 번 박수를 보냅니다. 

다음으로 참가자분들이 진행한 기여의 종류를 한 번 살펴보겠습니다(하나의 PR에는 여러 종류의 기여가 포함될 수 있습니다).

New featureDefectBreaking changeImprovementDeprecation
175221

역시 새 기능을 추가하는 ‘new feature’ 관련 기여가 가장 많았고, 문제를 해결하는 ‘defect’ 관련 기여가 뒤를 이었습니다. 성능을 개선하는 ‘improvement’와 호환성이 변경되는 ‘breaking change’, 그리고 기존의 것을 퇴화시키는 ‘deprecation’ 관련 기여는 프로젝트의 구조를 조금 더 깊이 파악해야 진행할 수 있기 때문에 신규 기여자에게는 조금 도전적일 수 있었는데요. 이번 기회에 여기까지 정복한 분들도 계셨습니다. 

아래는 행사를 마치고 진행했던 설문조사의 결과입니다(상위 3개 응답). 

만족도만족스러웠던 부분아쉬웠던 부분
매우 만족43.8%사람들과의 교류, 관계62.5%업무 시간에 참여함25%
만족56.3%업무 시간에 참여함37.5%본인의 결과물이 아쉬움25%

본인의 결과물에 만족37.5%

같은 요소에서도 참가자들마다 만족도가 달랐다는 부분이 흥미로웠습니다. 누군가는 업무 시간에 참여하는 것이 좋았지만, 누군가는 그 점을 아쉽게 느꼈다는 것을 알 수 있었는데요. 역시 모든 사람을 만족시키는 것은 어렵다는 것을 느낄 수 있었네요.

 

마치며

이번 행사를 마치며 참가자들과 함께 회고를 진행했습니다. 첫 설명회 때와는 달리 서로 돈독한 모습이 보여 진행자로서 보기에 뿌듯했습니다. 회고에서 나온 이야기들을 공유합니다. 

  • 행사를 통해 오픈소스 기여에 도전해 볼 수 있었다. 매년 이런 행사가 진행되었으면 좋겠다.
  • 한 번 성공하고 나니 다른 이슈에도 도전해 보고 싶은 마음이 들기도 했다. 
  • 직접 사용하고 있는 오픈소스는 아니었지만, 평소에 관심을 많이 가지고 있었던 기술이었다. 이번 기회에 관련 기술에 대해 알게 되어 업무에 도움이 많이 되었다.
  • 메인테이너 분들께서 친절히 도와주셔서 가능했던 것 같다. 매우 좋은 경험이었고 앞으로도 또 기회가 있었으면 좋겠다.
  • 업무에서 아주 작은 부분을 사용하고 있었는데 이번 기회에 다른 중요한 기능에 대해 많이 이해하게 되었다. 앞으로 업무에서 더 잘 쓸 수 있는 계기가 되었고, 오픈소스 기여에도 자신감을 얻었다.
  • 업무 중에 사용만 했던 소스코드를 한 번 읽어보자는 동기로 참여하게 되었다. 작업하던 것이 아직 마무리되지 않아서 앞으로도 계속 노력해 보고 싶다.
  • 커뮤니케이션과 관련해서, 화면 공유를 많이 했기 때문에 소스코드를 직접 보여줄 수 있어서 언어의 장벽이 많이 느껴지지 않았다. 
  • 지난번 Armeria sprint를 할 때에는 오프라인으로 행사가 진행됐는데 그때는 한 회의실 공간에 갇혀서 오랜 기간 진행됐다. 그래서 한 번에 집중해야 해서 힘들었는데 이번에는 비대면으로 조금 천천히 진행할 수 있어서 조금 더 수월한 느낌이었다. 
  • 커뮤니케이션을 위해 가상의 공간을 활용하게 된 점이 흥미로웠다. 실제로 그 공간에 머물면서 시간을 많이 쓰긴 했는데 또 개별적으로 할 이야기가 있으면 따로 시간을 잡기도 하고 채팅도 하는 등 이야기를 최대한 많이 나눌 수 있도록 노력했다. 
  • 업무를 하면서 부담이 있었을 텐데도 다들 열심히 참석했고, 최종적으로 PR을 머지할 수 있는 경우도 있어서 다들 대단하다고 생각했다. 
  • 초보 오픈소스 메인테이너인데 이번 기회를 통해 오픈소스 운영에 대해 더 경험해 볼 수 있어서 좋았다. 
  • 일회성으로 끝나는 이벤트가 아닌 꾸준히 기여하는 계기가 되었으면 좋겠다. 메인테이너 입장이더라도 모든 것을 다 알지는 못할 수 있는데, 이렇게 기여를 받아보면 미처 고려하지 못했던 부분을 알아차릴 수 있다. 그래서 도움을 참 많이 받았다. 
  • VR로도 해보면 재밌지 않을까? 🙂

이렇게 되돌아보니 2022년에도 꼭! 알찬 행사를 준비해야겠다고 다짐하게 됩니다. 오픈소스 관련 업무를 하면서 가장 추진력을 많이 받을 때가 바로 이런 순간들이 아닐까 싶습니다. 서로 응원하고, 격려하고, 또 열심히 해보려는 눈빛들이 가득한 순간이었습니다. 지켜보는 저희도 즐거웠습니다. 앞으로 더 많은 분들과 함께 할 수 있는 환경을 만들기 위해 노력하겠습니다. 모두들 수고 많으셨습니다!