오픈 소스 컨트리뷰션 첫걸음 떼기

Read this post in English here

과거에 오픈 소스를 시작하기 전에는 오픈 소스 기여에는 코드 패치만 존재하는 줄 알았습니다. 그래서인지 오픈 소스 기여에 많은 두려움이 있었고, 어떻게 시작해야할 지 막막했었습니다.

특히나 특정 분야에 대한 코드 기여는 많은 배경지식을 필요로 하기 때문에, 난이도가 너무 높았습니다. 왜냐하면 메인테이너처럼 많은 지식을 갖추기 위해서는 많은 시간이 소요될 수 밖에 없기 때문입니다.

그 후 여러 자료들을 찾아보면서 오픈 소스 컨트리뷰션에는 버그 수정, 오타 수정, 문서화, 리뷰 등 많은 방법이 있다는 것을 알게 되었습니다. 그래서 저는 그 당시 겪고 있던 에러를 해결해보겠다는 목표로 첫 컨트리뷰션에 도전하였습니다.

그 에러는 kubernetes.io 내의 interactive tutorial과 관련된 것이었는데, kubernetes에 app을 deploy하는 과정을 담은 소스 코드가 오래되어서 실제로 정상적으로 동작하지 않는 문제가 있었습니다. 이를 수정해서 kubernetes/websitebug fix PR을 보내게 되었고, 그 후로는 sig-docs-ko-owners 그룹에서 approver로 활동하며 문서 한글화를 진행하는 컨트리뷰션을 진행하고 있습니다.

이 글에서는 오픈 소스를 처음 시작하는 사람들을 위해 제가 지금까지 오픈 소스 프로젝트에 컨트리뷰션을 하기 위해 시도했던 5가지 방법을 소개하고자 합니다.

첫 번째 방법 : 코드 분석하기

이 방법은 “코드 안에 답이 있다”는 생각에서 시작되었습니다.

저의 경우는 kubernetes/website내 문서를 조금 유심히 읽어보았고, 그 과정에서 원문에 typo가 있다는 것을 확인하고 PR을 보냈습니다.

k8s/website #18393

사소하긴 하지만, `Great catch!`라는 메인테이너에게 받을 정도로 프로젝트 내 문서의 완성도를 조금 더 높일 수 있는 컨트리뷰션이었습니다.

이처럼 첫 번째 방법은 제일 쉽게 컨트리뷰션에 접근할 수 있는 방법인 프로젝트의 코드를 분석하는 것입니다. 이 과정을 통해 하드 코딩, 코드 스타일 수정, 오타 등 여러 가지 컨트리뷰션 거리를 찾을 수 있습니다. 이 경우, 코드를 분석을 시작하는 것이 힘들지 몰라도, 열고 읽어보는 것만으로도 가장 쉽게 컨트리뷰션을 할 수 있습니다.

두 번째 방법 : 이슈 해결하기

제가 주로 기여를 하는 kubernetes/website 프로젝트에는 다양한 이슈들이 존재합니다.

kubernetes/website issues

저는 그 중 제가 할 수 있는 이슈를 발견하였고, 바로 assign하여 contribution을 시작했습니다. 이 이슈는 cheatsheet를 Korean으로 번역하는 것이었고, 이를 해결하는 PR을 추가하여 컨트리뷰션을 할 수 있었습니다.

이처럼 오픈 소스 프로젝트에 이미 오픈 되어 있는 이슈들을 읽어보면, 그 중 내가 해결할 수 있는 이슈를 발견할 수 있고, 이를 해결함으로써 컨트리뷰션을 할 수 있습니다.

또한, 이슈 중에는 good first issue 라벨이 붙어있는 이슈도 존재하는데, 이는 기존의 오픈 소스 생태계 구성원들이 초심자들을 위해 추가한 이슈입니다.

kubernetes/website good first issue

이는 초심자들이 쉽게 해결할 수 있는 문제들로 구성되어 있습니다. 그렇기 때문에 이를 해결하는 PR을 추가함으로써 컨트리뷰션을 진행할 수 있습니다.

세 번째 방법 : 리뷰하기

많은 사람들이 리뷰를 하는 것이 컨트리뷰션이 아니라고 생각할 수도 있지만, 다른 컨트리뷰터가 올린 PR이나 Issue를 리뷰를 해주는 것도 컨트리뷰션이 될 수 있습니다.

kubernetes/website #10485 review

이 경우에는 “내가 메인테이너가 아닌데 리뷰를 해도 될까?”에 대한 걱정이 생길 수도 있는데, 오픈 소스 프로젝트는 오히려 다양한 사람의 의견이 반영되었을 때 더 좋은 프로젝트가 되는 길이기 때문에 망설이지 말고 도전하여 컨트리뷰션을 할 수 있습니다.

네 번째 방법 : 문서 기여하기

오픈 소스 컨트리뷰션의 종류 중 많은 부분을 차지하고 있는 문서 기여에서는 다양한 컨트리뷰션을 할 수 있습니다. 가령 기능은 완성되었지만, 문서화되지 않은 기능을 문서화하거나, 영어 문서를 한국어로 번역하는 localization 작업 및 잘못된 문서 내용 수정하는 작업 등을 통해 오픈 소스 프로젝트에 컨트리뷰션할 수 있습니다.

kubernetes/website #28647

다섯 번째 방법 : 이슈 추가하기

다섯 번째 방법은 내가 문제를 발견을 했지만, 직접 해결할 수 없는 상황일 때 할 수 있는 컨트리뷰션입니다. 가령, 동작하지 않는 버그를 찾았는데 고치는 방법을 모르겠거나(Bug report), 원하는 기능이 있는데 구현이 어려운 경우(Feature request) 혹은 Typo, Documentation Enhancement 등을 해당 프로젝트에 이슈를 추가함으로써 컨트리뷰션을 할 수 있습니다.

kubernetes/website #9050

결론

오픈 소스 컨트리뷰션을 처음 할 당시에는 어떻게 시작해야할 지 막막했었는데, 여러 가지 방법으로 컨트리뷰션을 하며 오픈 소스에 조금씩 흥미를 가지고 계속해서 할 수 있었습니다. 만약 오픈 소스 컨트리뷰션에 어려움이 있으시다면, 앞서 소개한 다양한 방법들 중 한 가지 방법을 선택해서 시간을 투자한다면, “오픈 소스 컨트리뷰션”을 쉽게 시작할 수 있을 것입니다.

I love self-development and I primarily write about solving problems about computer engineering and personal stories.

I love self-development and I primarily write about solving problems about computer engineering and personal stories.