Github 오픈소스 기여하기

KIMYEONGJUN·2024년 3월 19일
0
post-thumbnail

목적

며칠 전 오픈소스 프로젝트를 찾다가 괜찮은 프로젝트를 찾게 됐다. 외국 개발자들은 어떻게 개발하는지 국내 개발자들과 차이점은 뭐가 있을지 등등이 정말 궁금했었다. 그래서 나에게 맞는 오픈소스 프로젝트를 찾고 개발을 하면서 의사소통을 교환하고 내 개발실력도 조금씩 성장하고 싶다는 생각에서 시작하게 됐다.

기여할 프로젝트 선택하기

나는 맨 처음에 goodfirstissues에서 프로젝트를 찾아보기로 했다.

세상에는 정말 무수히 많은 오픈소스 프로젝트들이 존재한다. 그래서는 몇 가지 기준을 설정한 다음에 오픈소스 프로젝트를 찾아봤다.

  • 적어도 한번 이상은 사용해본적이 있어야한다.
  • 사용자의 기여 활동이 활발한 프로젝트여야 한다.
  • 마지막으로 커밋(Commit)된 시기가 1년 이내인 프로젝트여야 한다.
  • 처음부터 너무 거대한 프로젝트를 고르지 않는다.

내가 선택한 프로젝트는 이슈와 Pull requst가 꾸준히 열리는 오픈소스 프로젝트를 선택했다.

수행할 작업을 선택하기

나는 처음에 해당 프로젝트의 저장소의 Issue목록을 살펴봤다.그리고 내가 원하는 Issue에 들어가서 댓글을 남기고 프로젝트를 할당받을 수 있게 준비했다.

본격적으로 도전하기

기여할 프로젝트 저장소를 포크(Fork)하기

가장 먼저 해야 할 일은 기여하고자 하는 프로젝트의 원격 저장소(Repository)를 내 Github 계정으로 포크(Fork)하는 것이다. 여기서 포크(Fork)는 다른 프로젝트의 저장소를 Github의 내 계정으로 복제해 오는 것을 말한다.

내 저장소에 작업용 브랜치(Branch) 만들기

해당 Issue에 관련된 새로운 브랜치(Branch)를 만들어 주고 작업을 해준다.

내 작업 내용을 내 저장소에 올리기

해당 Issue 에 대한 코드를 작성해주고 Commit을 한 후에 Push를 해준다.

원본 프로젝트에 Pull request 보내기

이제 내 저장소에 Compare & pull request 버튼이 활성화된다. 내경우에는 그 당시에 스샷을 촬영을 안 해서 지금은 Compare & pull request 버튼이 화성화 되지 않았다.

Compare & pull request를 누르고 PR을 보내려는 원본 프로젝트 저장소와 브랜치명 그리고 수정사항이 담긴 내 저장소와 브린치명을 각각 확인하고 지정해 준다. 그리고 PR의 내용도 해당 프로젝트의 원칙을 지켜서 작성해 준다.

코어 개발자와 소통하고 반영하기

PR을 올리고 나면 이것이 과연 해당 프로젝트의 개선에 도움이 되는 내용인지 혹시 부족하거나 잘못된 내용이 있진 않은지 코어 개발자 또는 메인테이너(Maintainer)의 검토 의견을 댓글로 받게 된다.

댓글을 주고받으며 내가 부족했던 부분을 파악할 수도 있고, 혹은 수정 사항에 대한 더 나은 코드를 구상하여 이를 반영하게 될 수도 있다.

Pull Request가 Merge된 것을 확인하기

PR 내용이 최종적으로 잘 수용되어 원본 저장소에 mearge 되었다면 해당 PR 게시글의 하단에서 위와 같은 반가운 메시지를 볼 수 있을 것이다. 이로써 내가 수정한 코드가 오픈 소스 프로젝트에 반영되었고 해당 프로젝트의 기여자(Contributor) 목록에 이름을 올리게 되었다.

해당 PR은 공식적으로 Closed 처리되었다면 안내 메시지에 따라 내 작업용 브랜치를 삭제할 수 있다. 더 이상 프로젝트로 작업할 일이 없다면 fork 해온 내 저장소 역시 삭제해도 괜찮다.

마무리

다른 많은 오픈소스에서 작업을 했지만 이번처럼 처음으로 Merge를 한경우는 처음이었다. 처음 보는 외국인 개발자 영어로 대화하는 게 익숙지는 않았지만 내 나름대로 배운 게 정말 많았다. 그리고 외국인 개발자와 소통을 통해서 어떻게 하면 코드를 조금 더 고도화시킬 수 있을지 고민하는 계기가 되었고 오픈소스 프로젝트를 하면서 외국인 개발자와 소통을 통해서 저쪽 개발자가 나를 인정해 주는 것 같아서 기뻤고 오픈소스 프로젝트에 기여할 수 있다는 즐거움에 코드를 작성하고 수정했다. 나 나름대로 이번 프로젝트를 통해서 어떤 식으로 오픈소스 프로젝트에 접근하고 소통해야 하는지 더 배우는 계기 됐다.

참고

Issue: https://github.com/gchq/Gaffer/issues/3171
Pull request: https://github.com/gchq/Gaffer/pull/3173

profile
Junior backend developer

0개의 댓글