LINE Corporation이 2023년 10월 1일부로 LY Corporation이 되었습니다. LY Corporation의 새로운 기술 블로그를 소개합니다. LY Corporation Tech Blog

Blog


GitHub Contributions 그래프를 푸릇푸릇하게 만들어보아요(feat. Armeria Sprint)

들어가며

안녕하세요. 혹시 독자분들 중에서 GitHub contribution graph에 가뭄이 온 분들이 계신가요? 이번 글에서는 가뭄을 물러가게 할 Armeria Sprint 행사를 소개하고 그 후기를 공유하겠습니다.

종종 기술 컨퍼런스의 스케줄에서 '스프린트(sprint)'라는 일정을 보신 적이 있을 겁니다(예를 들면, PYCON Development Sprint). 혹은 애자일(agile) 개발 방법론에 등장하는 단어라서 스프린트라는 단어를 친숙하게 느끼는 분들도 많을 거라고 생각하는데요. 그럼 오픈소스 스프린트란 무엇인지, 그리고 오픈소스 스프린트인 'Armeria Sprint'에서는 어떤 활동이 진행되었는지 소개해보겠습니다.

오픈소스 스프린트가 뭐죠?

오픈소스 스프린트란 오픈소스에 관심있는 사람들이 모여서 오픈소스에 기여해 보는 것이라고 정의할 수 있습니다(오픈소스 기여에 대해서는 지난 포스팅에서 더욱 자세히 다루고 있으니 참고해주세요). 행사마다 편차가 있겠지만 보통 진행 기간을 하루 정도로 잡고 오전에는 다같이 모여서 각자 할 일(어떤 이슈를 맡아서 할지)을 정하고 오후에는 집중해서 코딩을 합니다.

참여하는 사람은 크게 멘토와 멘티로 나눌 수 있는데요. 멘토는 주로 스프린트에서 다루기로 한 오픈소스에 직접 기여해본 경험이 있는 사람이 맡고, 아직 경험은 없지만 이번 기회에 기여해 보기로 마음먹고 참가 신청한 사람이 멘티가 됩니다. 이번 오픈소스 스프린트에서는 메인테이너 세 분께서 직접 멘토로 나섰습니다. 

왜 하는 거예요?

오픈소스에 기여해 보고 싶어도 개인 시간을 따로 내어 작업하는 게 사실 쉬운 일은 아닙니다. 또한 질문거리들이 많은데 오픈소스는 질문을 어디에 해야 할지 몰라 망설이는 경우도 있고, 혼자서 하는 것보다는 여럿이 모였을 때 조금 더 열심히 해볼 수 있는 힘이 생기는 경우도 많습니다. 오픈소스 스프린트는 이렇게 평소에 마음은 있었지만 혼자서는 오픈소스에 기여할 시간을 내지 못했거나, 오픈소스 기여를 처음 시도해보는 사람들을 돕기 위해 열리는 행사입니다. 

새로운 기여자들의 참여는 오픈소스 커뮤니티를 더욱 풍성하게 만듭니다. 멘토들의 입장에서도 여러 사람들을 직접 만나 그들의 질문에 답하면서 그동안 새로운 기여자들이 참여하기 어려웠던 장벽이 무엇이었는지 확인해 볼 수 있는 소중한 기회가 됩니다.

Armeria Sprint 정리

이번 행사는 LINE 개발자를 대상으로 참가자를 모집했습니다. 멘토와 멘티의 비율을 고려해 소수의 인원만 참가신청을 받았는데요. 금방 마감되고 추가로 대기 줄을 서는 모습에 깜짝 놀랐습니다. 참가 신청을 하는 것부터 알 수 있듯이 모두들 열정이 가득하셨습니다. 행사는 이틀에 나누어서 첫째 날에는 환영 세션이 2시간 동안 진행되었고, 둘째 날에는 스프린트가 4시간 동안 진행되었습니다.

Welcome Session

환영 세션에선 참가자들이 각자 자기 소개를 한 뒤, 아래의 내용을 가볍게 다루었습니다.

오픈소스에 기여하기 전에 읽어보아야 할 것

  • Contributing
    • 프로젝트에 기여하는 방법이나 기여할 때 지켜야 할 규칙이 설명되어 있는 문서입니다.
    • Armeria에서는 이런 사항들을 Checklist for your pull request로 정리해 놓았습니다. 잘 확인해두면 코드 리뷰에 걸리는 시간을 단축할 수 있습니다.
  • Contributor License Agreement
    • 평소에는 그냥 지나쳤을 법한 문서입니다. 오픈소스에서는 보통 기여를 받기 전에 서명을 요구합니다.
    • 서명 내용을 짧게 세 줄로 요약해보았습니다(프로젝트마다 내용은 다를 수 있습니다).
      • 서명의 목적은 기여자와 프로젝트, 유저를 보호하기 위함입니다.
      • 서명을 완료하면 여러분은 각자가 기여한 부분을 Armeria 프로젝트와 동일한 조건으로 공개하는 것에 동의하게 됩니다.
      • 여러분의 기여는 현재 상태 그대로 Armeria 프로젝트에 반영될 것이며 어떤 버그나 결함이 있어도 그에 대한 책임은 지지 않아도 됩니다.
  • Code of Conduct
    • 커뮤니티에서 준수해야 할 행동 규범입니다. 오픈소스의 기본 정신인 '자유'를 추구하기 위해서 꼭 지켜야 하는 행동 규범을 설명하는 문서입니다.

할 일 정하기

첫날 모이는 가장 큰 이유가 바로 각자 할 일을 정하기 위해서였는데요. 다같이 모여 초심자를 기다리는 이슈들(good-first-issues)을 함께 확인해 보았습니다. 이슈마다 각각 설명이 쓰여있긴 하지만, 어떤 배경이나 흐름에서 이런 이슈가 발견되었는지 또는 해당 이슈를 해결하기 위해 어떤 기술 배경지식이 필요하고 어떤 부분을 봐야하는지 등 조금 더 자세한 설명을 들을 수 있었습니다.

어떤 이슈를 맡을지 마음을 정했다면, 재빨리 해당 이슈에 'I am working on this.' 또는 'I'll handle this issue.' 등의 댓글을 남겨 다른 사람과 이슈가 겹치지 않도록 표시합니다.

개발 환경 설정하기

모두가 이슈를 고른 뒤, 다 함께 차근차근 개발 환경을 설정했습니다(개발 환경 설정 방법).

개발 환경을 설정할 때 'fork&clone이 다 된 사람은 물병을 눕혀서 표시해주세요.'라는 소소한 활동까지 더해졌습니다.

스프린트 결과

이번 스프린트를 통해 새로 open한 pull request들입니다.

  • #1742 Allow using wildcards with RequestContextExportingAppender
  • #1743 Provide a way to create a client with an Endpoint rather than with a URI
  • #1744 Show armeria version in doc service
  • #1745 Enable to convert JSON format request to String
  • #1747 Introduce 'export-as-curl' button to a debug request window
부끄럼 많은 참가자들의 초상권은 저희가 지켜 드리겠습니다.
내 랩탑은 내가 지킨다! 서있는 한이 있더라도 피자는 랩탑과 멀리멀리~

후기

참가자들의 후기

  • 편하게 물어볼 수 있는 멘토가 함께 있다는 점, 그리고 서로 배려해주는 모습이 좋았습니다. 오픈소스에 대한 막연한 두려움을 줄일 수 있는 이런 기회가 앞으로는 더 많았으면 좋겠습니다. 
  • 설명으로는 분명 쉬워 보여서 이슈를 골랐는데 아무래도 멘토의 꾀임에 넘어간 것 같습니다(ㅋㅋ). 그렇지만 오픈소스에 기여해보는 시간을 가질 수 있다는 점이 굉장히 좋았습니다.
  • 개발자라면 누구나 한 번쯤은 '오픈소스에 기여해봐야지'하고 생각해 봤을텐데요. 이렇게 시작해볼 수 있는 기회가 있어서 좋았습니다. 
  • 막상 해결하고 보니 실제 코딩한 건 몇 줄 안된 것 같아요. 그렇지만 생각해 볼 거리가 많은 이슈였습니다.  
  • 이슈에 대한 설명은 쉬웠는데요. 기존 코드를 이해하는데 시간이 오래 걸린 것 같습니다. Armeria의 코드나 구조를 전반적으로 훑어보는 시간이 먼저 있으면 조금 더 쉽게 접근할 수 있을 것 같습니다.
  • 그동안 다른 오픈소스에 기여해보려고 몇 번 시도를 한 적이 있는데 매번 실패했습니다. 이번에는 멘토가 옆에 있으니 쉽게 기여할 수 있었습니다. 
  • 팀에서 Armeria를 사용 중입니다. 개발하다가 뭔가 필요한 것이 있을 때가 있는데요. 그럴 때 앞으로는 직접 기여해서 고쳐보면 좋겠다고 생각해서 참여하게 되었습니다. 코드를 읽으면서 공부를 조금 더 해보겠습니다.
  • 저에게는 이슈에 접근하는 것이 조금 어렵게 느껴졌습니다. 그렇지만 이번 기회에 기본기를 다지게 된 것 같아 좋았습니다.
  • 어느 정도 기능 구현은 다 된 것 같은데 pull request를 열기 전에 시간이 끝나서 아쉽습니다. 정리해서 조만간 pull request 열겠습니다. 

멘토들의 후기

  • 오픈소스 개발을 어려워하시는 분들에게 - 어떤 이슈를 보고 어떻게 해결할 수 있을지 잘 모르겠다면, 어떻게 해결하면 좋을지 그 이슈에 댓글을 남기는 것부터가 오픈소스 기여의 시작입니다. 너무 걱정하지 말고 마구 물어보세요. 그런 질문들이 저희에게는 많은 도움이 됩니다. 
  • 이번 기회로 오픈소스에 관심이 있는 개발자 동료들이 이렇게나 많았다는 것을 알 수 있었습니다. 함께 같은 공간에서 서로 도울 수 있어서 뿌듯했습니다(Star는 모두 잊지 않으셨죠?).
  • 처음 해보는 행사라서 조금 걱정을 했는데 참가자 모두 굉장히 진지하게 임해주셔서 감사하다는 말씀을 드리고 싶습니다. 행사 시간은 끝났지만 질문이 있을 때는 언제든지 GitHub이나 Slack에 남겨주세요. 
  • 물론 오늘 pull request를 여는 것만으로도 큰 진전이었지만, 시작은 지금부터라고 말씀드리고 싶습니다. 특히 코드 리뷰를 통해서 개발 실력이 많이 성장하기 때문에 포기하지 말고 머지(merge)되기까지 열심히 따라와 주시면 좋겠습니다.
  • 기여자를 직접 만나 함께 문제를 해결하는 시간이 굉장히 뜻깊었습니다. 앞으로도 이런 행사를 자주하면 좋겠습니다.  

정리하며

참가자 여러분들 모두 고생 많으셨습니다. 이번 행사가 함께 성장하는 시간이 되었길 바랍니다. 모두들 즐겁게 참여해주셔서 감사드리며, 다음에 더욱 알찬 행사로 돌아오겠습니다.

저는 이런 종류의 행사를 처음 진행해보았는데요. 아래 두 문서에서 큰 도움을 받았습니다. 이 글을 통해서 아래 두 문서를 작성하신 분들께도 감사의 인사를 드립니다.