히비스서커스의 블로그

[github] 첫 오픈소스 기여 경험 정리 (feat. mmdetection) 본문

Programming/Git

[github] 첫 오픈소스 기여 경험 정리 (feat. mmdetection)

HibisCircus 2023. 8. 14. 17:09
728x90

오픈소스에 pull request 후 merged가 되어 말로만 듣던 오픈소스에 기여하게 되었다. 근래들어 좋은 일들이 많이 일어나는데 이것만큼은 정말 짜릿하였다. 기쁨을 제쳐두고 그 과정을 천천히 기록해보려고 한다. 

에러 발견 및 코드 수정

 

8월 9일 mmdetection에서 VOCMetric에서 mAP가 아닌 recall을 구하려고 하는데 에러가 발생했다. source 코드를 확인해보니 (경로는 mmdetection / mmdet / evaluation / metrics / voc_metric.py의 159번째 줄 이후이다.)

 

# TODO: Currently not checked.

 

이런 주석 처리가 되어 있고 난데 없이 정의도 하지 않은 self.annotations를 불러와서 에러가 발생하였다. 확실히 오픈소스이다 보니 이렇게 세세한 부분까지는 수정을 못한다는 것을 체감하였다. recalls을 구하는 eval_recalls의 함수는 이미 정의되어 있으므로 이 함수의 입력에 맞는 변수들로 구성하게끔 수정하였다.

 

 

기여하는 방법

 

값이 잘 나오는 것을 확인하고 신나는 마음으로 mmdetection에 pull request를 하려는데 한 번도 해보지 않다보니 시작부터 난관이었다. 이에 관한 내용은 친절하게 포스팅된 글이 있어서 굵직한 순서만 되짚어 보면 아래와 같다.

 

1. 오픈소스 레파지토리를 Fork
2. 코드를 수정 후 main이 아닌 branch에 push
3. 오픈소스 레파지토리에 Pull Request 

 

Fork는 많이 해본 경험이 있지만 branch를 달리한 후 commit 해본 경험은 없어서 조금은 해맸다. git으로 branch와 merge를 빈번히 사용하여 숙달하는 미니 프로젝트를 해보아야겠다.

 

 

기여할 때 유의할 사항

 

pull request만 한다고 해결될 일은 아닌것 같았다. pull request를 요청한 사람들은 무엇인가 규칙을 따르고 요청을 하는 것으로 보였다. 이는 commit 메시지의 규칙과 유사한 것으로 보였다. 이에 관한 내용도 친절하게 포스팅된 글이 있어서 중요한 것만 살펴보면 아래와 같다.

 

제목 앞에 붙는 [ ] 안에 들어갈 단어

fix          :: 버그 수정
docs      :: 문서 수정
refactor :: 코드 리펙토링
rename :: 파일 혹은 폴더명만 수정


제목 작성 시 유의할 점

- 명령문으로 작성
- 첫글자는 대문자, 제목 끝 마침표 작성 안함
- 제목은 영문 기준 50 자 이내 작성

 

내용은 pull request 요청 시 어느 정도의 형식이 정해져 있어서 이에 맞게 작성해주면 된다. mmdetection의 경우에는 아래와 같은 양식을 요구하였다.

 

 

기여 후 merge까지의 기다림

 

열심히 공부하고 pull request를 하였는데 mm-assistant가 reviewer를 자동으로 할당해주는데 내 pull request에는 할당이 안되었다. (이제 review를 받고 merge 되어서 아래 Reviewers는 나오지만 Assignees가 없다..) 

 

 

이러다가 내 것은 확인도 안해주는거 아닌가 싶어서 conversation에 한 명을 태그해서 리뷰해달라고 요청할까 생각했지만 일단 참고 기다렸다. 5일 정도가 지난 오늘 merged 되었음을 확인하였다.

 

 

괜한 기대를 한 것인가 생각하고 있었는데 merge가 되었다니 짜릿하다. pull request 하기 전까지는 이런 것이 contribution으로 할만한 것인가? 생각도 들고 귀찮기도 하였는데 일단 저지르고 보자는 생각으로 일단 행하고 나니 값진 경험과 함께 성과도 얻어내었다. 

 

 

728x90