오픈소스 컨트리뷰션 아카데미 2022 참가 후기 (RustPython 팀)

프로그램 참가 후기

Posted by jopemachine on November 17, 2022 Updated on March 06, 2023

오픈소스 컨트리뷰션 아카데미 (OSSCA)란?

공개 SW 사업 홈페이지에선 오픈소스 컨트리뷰션 아카데미 프로그램에 대해 아래와 같이 이야기하고 있다.

컨트리뷰션 아카데미를 통해 선배 개발자가 직접 기여하는 오픈소스 프로젝트 가이드와 함께 오픈소스 기여에 대한 진입장벽을 뚫어 참여·공유·협업 방식의 글로벌 개발문화와 다양한 기여(Contribution)를 직접 경험하는 프로그램입니다.

프로그램 참가 이유

오픈소스에 막연하게 흥미를 갖고 있다가 작은 자바스크립트 기반 모듈들을 디버깅해보면서 간단한 버그를 고치는 경험을 통해 컨트리뷰션을 시작하게 되었고, 좀 더 큰 규모의 오픈소스 프로젝트에 긴 시간에 걸쳐 지속적인 컨트리뷰션을 만들어보고 싶다는 생각으로 오픈소스 컨트리뷰톤 RustPython 팀에 지원하게 되었다.

RustPython에 지원한 이유

사실 개인적으로 참가 신청할 당시에는 RustPython 팀에 참가해 보게 될 것이라고는 생각하지 못했다.

참가해보면 많은 것들을 배울 수 있을거라고 생각했기 때문에 RustPython 팀에 1지망으로 지원했으면서도, 정작 Rust, Python으로 진행해 본 프로젝트도 하나도 없었고 두 언어에 대해서도 아는 게 거의 없는 상태였기 때문이다.

참가자 모집 유형엔 Python 사용 경험이 있고 코드를 읽고 이해할 수 있어야 원활한 참여가 가능하다고 나와 있었는데, 아직 Python을 사용해 본 경험이 많지 않았기 때문에 그만큼 열심히 공부하며 참여할 각오로 지원하게 되었다.

느낀 점, 요약

Rust, Python에 대해 계속 공부하면서 프로젝트를 진행했고, 단지 책을 보고 공부하는 것 보다 훨씬 더 효율적으로 두 언어의 여러 특징과 기능들에 대해 배워 볼 수 있었다.

무엇보다 여러 모듈들의 구현에서 직접 버그를 찾거나 CPython 업데이트 사항을 RustPython에 반영하는 과정에서 보람을 느낄 수 있었다.

멘토 분들께서 난이도 별로 다양한 종류의 이슈들을 던져 주셨고, 개인적으로 컴퓨터 공학과 전공자 기준에서 난이도는 크게 어렵지 않다고 느껴졌지만, 많은 시간을 투자할 수 없다면 수월하게 진행하기 어려울 것 같다는 생각이 들기도 했다.

내 경우엔 로우 레벨 프로그래밍에 대해 수박 겉핡기란 느낌으로 이론적인 것들만 배워 두고 실제 프로젝트에서 참여해 봤던 경험이 없어서 아쉬웠었는데 그런 점들에서 RustPython 참여 경험은 개발자로서 앞으로의 경력을 어떻게 가져가면 좋을까 하는 부분들도 생각해보게 해 주어, 앞으로의 진로 선택에 큰 도움을 받을 수 있었다.

결과적으로 멘토 님들께 굉장히 감사한 마음만이 남게 되었고, 나도 나중엔 저렇게 훌룡한 시니어 개발자로 성장하고 싶다는 생각이 들었다.

프로그램 진행

OSSCA 챌린지

오픈소스 컨트리뷰션 아카데미 프로그램은 챌린지 기간과 마스터 기간으로 나눠져 진행되었다.

챌린지 기간엔 멘토님께서 제시해주신 이슈들을 위주로 PR을 만들어 진행했고, 막히는 부분이 있을 때 마다 멘토님들께 여쭤보고 공부해나가면서 진행했다.

주어진 이슈를 진행하다보면 중간에 다른 이슈를 마주칠 때도 생각보다 많이 있었고, RustPython의 의존 라이브러리에 이슈가 있어 진행이 막히는 경우가 생기기도 했다. 이런 경우 따로 이슈를 만들고 처리하거나, 의존 라이브러리의 문제가 해결되기를 기다리고 있다는 코멘트를 남겼다.

OSSCA 마스터

한 달 정도 지나자 챌린지 기간이 마무리 되고 2022 OSSCA 챌린지 수료증을 보내주셨다.

개인적인 사정으로 프로그램 기간 중간에 다른 일을 병행해야 해서 마스터 기간 동안 컨트리뷰션을 진행하는 시간이 적어지기도 했지만 전반적으로 행사 기간 내엔 가능한 많은 시간을 내서 분야를 가리지 않고 최대한 많은 PR을 만들어 보려고 노력했다.

챌린지 기간엔 뭔가 막히는 게 있을 때 마다 멘토님께 여쭤보는 경우가 많아서, 프로그램 이름도 달라진만큼 마스터 기간엔 좀 더 스스로 해결해보려고 했는데, 그래도 멘토님들께 많은 도움을 받았다.

챌린지 기간 동안 몇몇 PR을 만들어보면서 어느 정도 작업이 익숙해져 CPython 코드를 RustPython으로 포팅해 보는 작업 등을 진행해 보았는데, 두 프로그램이 특정 상황에서 어떻게 실행되는지 브레이크 포인트를 걸어가며 실행 흐름을 디버깅 해 보면서 진행했다. 포팅한 코드 양은 많지 않았지만 작업해보면서 포팅 작업도 보기 보다 쉽지 않은 일이라고 느끼게 되었다.

CPython의 새 기능을 포팅하는 일은 경우에 따라 작업 양이 크게 갈렸다. 어떤 기능은 Rust에 매우 간단하게 구현할 수 있었고, 어떤 기능은 Lib의 Python 코드만 변경하면 구현할 수 있었다. 반면 Rust에 구현해야 하는 코드 양이 매우 많아 보이는 경우도 있었고, (이런 경우는 많은 시간을 요구할 것으로 생각되어 아쉽게도 아직까지 도전해보지 못했다.) 변경한 Python 코드에 다른 코드가 의존하는 등의 이유로 예상하지 못한 테스트가 실패하는 일이 생기기도 했다.

최종 발표

최종 발표 영상은 아래 유튜브 링크에서 다시 볼 수 있다. 시온 님께서 너무 발표를 잘 해 주셔서 더 좋은 결과가 있지 않았나 싶다.

수상

팀원 분들이 모두 열심히 참여해주셔서 너무나 감사하게도 결과적으로 대상 수상이란 좋은 결과를 받을 수 있었다.

해당 프로그램 기간 내에서 진행되었던 팀원 분들의 오픈소스 활동 결과는 해당 Github 링크에서 확인할 수 있다.

인턴십 연계

OSSCA 최종 수료를 마친 멘티들을 대상으로 아래 기업들에서 인턴십 모집이 몇 차례 진행되었다.

개인적으로는 Lablup이란 회사에서 2개월 동안 인턴십을 진행해보게 되었다.

  • NHN Cloud

  • Linux Geek

  • 2ndSyndrome

  • Lablup

  • Nine Corporation

프로그램을 추천하는 이유

평소에 오픈 소스에 관심이 있었거나, 라이브러리의 코드를 이해하고 수정해보고 싶은 욕심이 있었던 분들에게는 참가를 적극적으로 권유 드리고 싶다.

개인적으로 어느 정도 코드 베이스가 큰 오픈 소스에 PR을 만드는 것 자체가 부담스럽게 느껴질 때가 많았는데, 멘토님들의 도움으로 훨씬 많은 작업들을 성공적으로 진행해 볼 수 있었던 것 같다.

다만 참가하려는 프로젝트 성격에 따라 달라지겠지만 어느 정도 시간을 들여야 하는 부분이 있으니 시간을 어떻게 분배할 지 충분히 고려해보고 참가한다면 많은 것들을 배울 수 있는 좋은 기회가 될 수 있을 것이라고 생각한다.

평소에 개발하던 것과 전혀 다른 분야의 개발을 진행해보면서 본인이 어떤 것들을 잘 하고, 어떤 것들을 좋아하는지 찾아 보는 좋은 경험이 될 수 있지 않을까 생각한다.

필자처럼 인턴십까지 이어지는 경우엔 어쩌면 본인 인생의 개발 커리어의 방향까지도 바꿔 볼 수 있는 기회가 될 수 있을지도 모른다.

굿즈

OSSCA 최종 수료를 마친 멘티들에게 귀여운 굿즈를 나눠 주셨다. 개인적으로 레고를 좋아하시는 분들께서는 정말 최고의 선물이 될 수 있지 않을까 싶다.

사진을 많이 찍어 놓지 못했는데 이것 이외에도 각종 굿즈들을 정말 많이 나눠주셔서 정말 너무 감사했다.

결론

원래 오픈 소스 컨트리뷰션에 관심이 있었던만큼 더욱 많은 것들을 배워 갈 수 있는 좋은 기회가 된 것 같고, 개인적으로 프로그램을 마무리 한 이후에도 RustPython엔 기회가 있을 때 마다 기여해 보려고 생각하고 있다.

오픈 소스 컨트리뷰션 아카데미엔 시간만 허락된다면 멘티로서든 멘토로서든 다음 기회에도 꼭 참여해보고 싶다. 🤗