오픈소스 컨트리뷰션 아카데미는 오픈소스에 대한 진입 장벽을 허물고 선배 개발자와 함께 오픈소스에 기여해보는 멘토링 프로그램이다.
2016년부터 Open UP, 정보통신산업진흥원에서 주관한 행사이며 올해는 7회차 였다. 특히 올해 부터는 각 팀의 멘토에게 "청년 SW개발자 멘토링"을 받을 수 있었다.
총 25개의 오픈소스 프로젝트에 참여할 수 있었고
1지망으로 음파 통신 라이브러리 "Euphony"에 지원 했고
2지망으로 "Openstack"에 지원했다.
약 3개월 간 Challengers, Masters 두 가지 과정을 진행하게 된다.
Challengers 기간 동안 활동한 내용을 평가해 Masters에 참가할 멘티들을 다시 선정한다.
지원동기
https://www.oss.kr/notice/show/82701bca-02c1-470d-80c3-2527ea24430e
우리 학교에서 한 오픈소스 컨트리뷰션 아카데미 지역 스프린트에 참여했다.
이때는 OpenStack 멘티로 참여해서
contributor guide 의 irc 설정 부분에 MacOS 설명이 비어있는 것을 발견하여, 그 부분을 추가하는 문서 기여를 했다.
https://review.opendev.org/c/openstack/contributor-guide/+/842849
OpenStack은 깃허브를 이용해서 기여를 하는 것이 아닌 gerrit을 이용해서 기여한다.
그리고 내가 한 부분은 공식문서에 기여하는 것이었는데, OpenStack의 공식문서는 rst문법을 사용해서 기여할 내용을 편집 후 리뷰를 기다렸다.
2명의 maintainer에게 코드 리뷰를 받고 컨펌이 되어야 내가 기여한 내용이 머지 된다.
이런식으로 코드리뷰를 받고 수정을 하였다.
지역 스프린트를 참여하고, 오픈소스에 기여하는 방법이 문서기여, 명령어 구현, 기능 개발 등등 엄청 다양하다는 것을 알게 되었다. 그래서 2022 오픈소스 컨트리뷰션 아카데미에 참여해서 내가 관심있는 분야의 오픈소스에 기여하고 싶었다.
평소 통신에 관심이 있었는데, Euphony가 음파 통신 라이브러리에 관해서 기여가 가능하다는 점을 보고 지원하였다. Euphony에서는 통신 기능을 어떻게 구현했는지 궁금하기도 했고 이 부분에 대해서 기여 하고 싶었다.
지원할 때 안드로이드 앱 개발에도 관심이 있어서 이 부분도 녹여서 지원동기를 작성했다.
자소서 쓰기
오픈소스 컨트리뷰션 아카데미는 별도의 면접 없이 서류로만 평가한다.
필자는 글을 길게 쓰는 것에 소질이 없어 임팩트있게 두괄식으로 짧게 작성했다.
- euphony 같은 경우 음파통신 라이브러리 오픈소스이다. 마침 통신에 관심도 많고 안드로이드 앱 개발 공부를 하고 있어서 금상첨화인 프로젝트여서 지원하였다. 이 내용을 자소서, 지원동기에 작성함. 통신이론(푸리에 변환 등 )들이 어떻게 코드로 구현되어있는지 궁금하기도 했다.
- openstack 같은 경우 춘천 스프린트에서 기여도 해보았었기 때문에 이를 토대로 내가 더 기여하고 싶은 것들(기능구현, 명령어 개발 등)에 대해서 작성함.
이런 식으로 작성하였다.
경쟁률
멘토님들께서 말씀 해주셨는데 기억이 잘 안난다. 하지만 내가 어떻게 뽑혔는지 의문일 정도의 경쟁률로 기억한다.
발대식
euphony 에 참여하는 멘토, 멘티님들 자기 소개가 있었고, 챌린지스 기간 동안에 어떻게 진행되는지 설명해주셨다.
약간의 굿즈도 선물 받았다!
그리고 오픈소스 컨트리뷰션 아카데미 기간과 saffy 교육 기간이 겹쳤는데,
멘티님 들 중에서 이 두 과정을 같이 하는 분들이 좀 있었다고 한다. 필자는 saffy는 포기하고 컨트리뷰션 아카데미를 고르기는 했다..!
챌린지스 기간
- 멘토, 멘티님들과 깃허브 팀즈라는 툴로 전체적인 소통을 하였다.
- 멘토님께서 깃허브 교육을 해주셨다. PR, 이슈 관리, 코드 리뷰, fetch, rebase등 깃허브로 협업 할 때 꼭 필요한 내용들만 간략하게 설명해주셨다. 정말 많은 도움이 되었다!
https://github.com/sunyeongan/git-practice
- 멘토님들이 정해주신 팀끼리 euphony 샘플앱을 제작하였다. 우리팀은 웹에서 음파신호를 보내는 송신기 , 음파신호를 받는 안드로이드 앱 수신기를 만들어 기여하였다.
필자는 안드로이드 앱 수신기를 만들었다
- 팀원들끼리 노션으로 소통을 했다.
- 깃허브 레포의 이슈에 각자 개발할 것들을 작성하였다.
https://github.com/euphony-io/euphony/pull/180
https://github.com/euphony-io/wave-show-card
- 그리고 팀원들과 이슈 템플릿을 작성해 기여하였다.
https://github.com/euphony-io/euphony/pull/176
마스터즈 기간
챌린지 과정에서 했던 멘티들 중에서 마스터즈 과정을 참여할 멘티를 다시 선발한다. 기준은 잘 모르겠지만 우리 팀은 18명 중에 11명의 멘티 분이 마스터즈 과정에 참여하였다.
- 마스터즈 과정에 참여하는 멘티끼리 새로운 팀이 다시 구성되었다.
- 통신이론 PSK에 대해서 깃허브 팀즈에 공유하였다.
- 밑바닥부터 시작하는 딥러닝 공부 내용을 깃허브 팀즈에 공유하였다.
- 우리 팀의 리드멘티님과 페어프로그래밍을 진행해서 로깅에러에 대해 기여하였다.
https://github.com/euphony-io/euphony/pull/217
Euphony에서 오디오 권한을 확인하기 위해 listen()을 호출한다. 사용자가 오디오 권한 요청을 수락하지 않고 실행하면 Euphony 샘플 앱이 강제종료되는 현상을 발견하였다. listen() 해결방안으로 사용자에게 필요 권한이 수락되지 않았음을 알리는 에러로그를 출력한다.
살짝 부끄럽기는 한데, 코틀린을 처음 다뤄봐서 문법적으로 잘 모르는 부분이 많았다. 이 부분을 놓치지 않고 리드멘티, 멘토님들이 꼼꼼하게 코드 리뷰를 해주셨다.
- 마스터즈 기간 동안 학기와 병행하면서 많은 기여를 하지는 못했지만 그래도 페어프로그래밍을 해봤다는 경험이 너무 값졌다!!
- Euphony contributors로 등록 되었다!
활동 정리
성과
챌린지스 기간에는 처음으로 github에서 팀원과 협업하는 방법에 대해서 배웠다. 이슈 생성 후 PR작성, 팀원의 코드를 리뷰, 셀프 리뷰 등등 협업 방식을 알게되었다.
마스터즈 기간에는 리드멘티님과 페어프로그래밍을 진행했다. 리드 멘티님께서 클린코드, 테스트 코드 작성하는 방법을 알려주셨다. 이를 이용하여 기능 구현시에 클린코드를 사용하고 테스트 코드도 작성해보았다. maintainer 분들의 꼼꼼한 코드리뷰 덕분에 좋은 코드를 작성하는 방법에 대해서도 많이 배웠다.
기존에는 깃허브 레포에 커밋만 올리는 식으로 협업을 진행했는데 , 졸업작품을 같이하는 팀원들과 PR을 작성하고 코드리뷰를 하는 방식으로 진행했다.
장점/느낀점
- 인턴기회를 준다! (나는..못했지만…)
- 오픈소스에 기여하는 것들이 무엇인지 알았다. 종류는 많다. 문서 번역, 기능 구현, 명령어 개발 , 등등
- 코드리뷰하는 방법에 대해서 처음 알게되었다.
- 클린코드를 공부하자는 마음이 생겼다. (멘토님들과 리드멘티님 내 더러운 코드의,,, 코드리뷰를 보고 느꼈다)