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

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.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Juhee Kang

Juhee Kang

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

More from Medium

Judge Refuses To Remove Young Shooter From Adult Incarceration

The Independent Musician

Winning Wordle’s Hard Mode

Henry Harvin TEFL Course Review

Henry Harvin TEFL Course review