주니어(초보) 개발자가 오픈소스 기여(컨트리뷰션) 하는 방법

내 인생 첫번째 오픈소스 컨트리뷰션(OpenSource Contribution)

SoniaComp
7 min readFeb 3, 2021

어떤 걸 컨트리뷰트(Contribute) 해야 할까?

개발을 하다보면, 내 마음에 드는 모듈을 찾기 힘들 때가 있다. 그럴 때 가장 비슷한 모듈을 찾아서 그 모듈의 코드를 수정해서 사용할 수 있다. 나는 Javascript React-Native 개발중에 node_modules 폴더에 있는 모듈을 하나 수정해서 사용했다. Image Component를 ImageBackground Component로 바꾸는 간단한 작업이었다. 따라서 이 부분을 컨트리뷰션 하기로 했다.

실제로 컨트리뷰션은 다양하다. 꼭 개발적인 요소가 아니더라도, Demo Page의 UI를 바꾸거나, README의 번역으로 컨트리뷰션에 참여하는 사람들도 많다.

컨트리뷰션이 아직 어색하다면, 우선 관심있는 레포지터리의 Pull Requests 탭에 들어가보자. 이미 Closed된 풀리퀘스트를 보는 것은 도움이된다. 또한 Issues 탭에서, 이 모듈을 개선하기 위해 어떤 점이 필요한지 힌트를 얻을 수도 있다.

컨트리뷰션 하는 방법(5 Steps)

1. 오픈소스 Github 레포지터리 fork

2. fork한 내 레포지터리에서 git Clone

3. 수정하고 싶은 코드 수정 후 git add > git commit > git push

4. Pull Request 버튼 클릭

5. Pull Request 내용 작성

추가로, Pull Request 이후에 코드를 수정하고 싶다면!!

추가의 추가로, Pull Request를 마무리 했다면!!

⭕️화면의 빨간박스에 각 단계별 해당 부분을 표시해두었으니, 잘 따라오세용!

1. 오픈소스 Github 레포지터리 fork

fork는 다른 사람의 Github repository를 내 Github repository로 그대로 복제하는 기능이다. (fork와 clone의 차이점) 상대방의 Github Repository를 직접 수정하고 싶다면, fork를 사용해야 한다.

fork 버튼을 누르면 됌!!

2. fork한 내 레포지터리에서 git Clone

내 Github에서 fork한 레포지터리를 확인할 수 있다. 이 fork한 레포지터를 git clone한다.

내 Github에서 포크된 레포지터리를 확인할 후,
git clone 한다.

3. 수정하고 싶은 코드 수정 후 git add > git commit > git push

코드 수정 중에 캡쳐한 화면이다. Image 컴포넌트를 ImageBackground로 바꾼 간단한 코드 수정이지만, 컨트리뷰션 할 수 있다. 나만 이렇게 하는게 아니라, 전에 다른 컨트리뷰터(contributor)는 Image를 Animated.Image로 optional하게 설정할 수 있는 코드를 수정했었다.

내가 코드를 수정한 부분이다.

4. Pull Request 버튼 클릭

두근두근… 드디어 오픈소스 레포지터리에 머지 요청을 할 수 있는 순간이 왔다!!

어서 눌러!!!

5. Pull Request 내용 작성

첫번째 컨트리뷰션이라 두근거렸기 때문에, 풀리퀘스트 comment에 아주 소심하게 내 풀리퀘스트를 one tiny opinion이라고 말했다. (참고: 풀 리퀘스트 작성하는 방법)

Pull Request의 Comment는 mark down 문서 문법과 같다. 특히 이미지를 직접 추가할 수는 없고, 이미지 주소를 통해 이미지를 보여줄 수는 있다.

해당 페이지는 풀리퀘스트 작성 완료 후 캡쳐 이미지다.

추가로, Pull Request 이후에 코드를 수정하고 싶다면!!

똑같이 코드를 작성하고 git add > git commit > git push 하면 된다. 자동으로 풀 리퀘스트에 커밋이 반영된다. 이때 주의해야할 점은 따로 알림이 가지 않으므로, Pull Request 페이지에 comment를 달아주고, 해당 컨트리뷰터들을 태그해야 한다. 특히 해당 오픈소스의 메인 테이너가 확인을 해야 머지가 완료되므로, 메인 테이너를 태그한다.

첫번째 Pull Request 이후 3번의 commit을 더 했고, 자동으로 Pull Request에 반영됐다. Commit을 모두 한 이후에는 코멘트를 달아주었다. 코멘트에는 메인테이너를 @ 로 태그했다.

추가의 추가로, Pull Request를 마무리 했다면!!

모든 풀 리퀘스트가 메인 레포지터리에 머지 되는 것은 아니다. 하지만, Pull Request는 전세계의 개발자들끼리 코드 리뷰를 할 수 있는 의미있는 장소다. Pull Request가 Closed되지 않는 한, Open되어 있는 한, 계속해서 궁리하고 Commit 할 예정이다. 내 코드로 인해 오픈소스를 더 아름답고 더 편리하게 만드는 데 기여할 수 있으면 좋겠다.

현재 나의 Pull Request 상태

레포지터리 owner가 직접 피드백을 주고, 두번째 commit의 comment에는 하트를 남겨주었다. 아직 머지 된 것은 아니지만, 시작이 반이지 않은가!! 하하하하하하 → 이후 레포지터리 owner로부터 ImageBackground 컴포넌트 필요성에 대한 질문을 받았고, 풀 리퀘스트를 남기게 된 이유를 설명했더니 → 머지 되었다!!! 🤩

이제 오픈 소스 레포지터리의 컨트리뷰터에 등록되었다!!

첫번째줄 왼쪽에서 다섯번째! 흐흐흐

소중한 나의 첫번째 컨트리뷰션 링크

읽어보면 좋은 오픈소스의 정석

--

--