개발 공부를 하면서 오픈소스에 대해서 호기심이 생겼다. 오픈소스에 기여하는 게 어떻게 하는 건지 궁금했고, 이리저리 찾아봤다. 컨트리뷰트 유형들이 존재했었는데, 요약하면 프로젝트가 발전할 수 있게 하는 모든 활동을 컨트리뷰션이라고 하는 것 같다.
솔직히 개발 공부하면서 문서 수정을 가볍게 보는 것은 아니지만, 코딩을 통해 기여하는 것이 더 와닿았다. 내가 기여하고 또 기여할 수 있는 프로젝트는 다음 조건으로 결정했다.
깃헙에서 good-first-issue라는 태그로 검색하면 기여할 만한 프로젝트들을 찾을 수 있었다. 그런데 대부분 자기들끼리만 통하는 얘기를 하는 것 같다. 프로젝트 도메인 지식이 부족하다면 기여하기 어려운 것들이 대부분이었다.
그러던 중 두 가지 이슈를 찾을 수 있었다.
JUnit4에서 JUnit5로 미그레이션하는 이슈이다.
이미지 파일의 메타데이터를 추출하는 과정에서 에러 핸들링 이슈이다.
이런 이유들로 작업하기로 결정했고, 코멘트를 남기기 위해 이슈를 조사했다.
문제 상황 재현
왜 문제인가
case ICC_TAG_TYPE_DESC:
int stringLength = reader.getInt32(8);
return new String(bytes, 12, stringLength - 1);
요약하면 별도로 throw하지 않아서 발생한 것이다. 그래서 문제 상황을 공유했고, 답변은 BufferBoundsException를 발생시키라는 것이었다.
BufferBoundsException를 활용하고, 길이가 0인 경우도 정상으로 처리하라는 피드백을 받았다.다행히 merge되었다.
이 프로젝트가 초보자가 하기에 정말 좋은 것 같은데, 영향력이 있어서 가성비 넘치는 기여라고 생각된다. 또한 도메인 지식도 개발자라면 충분히 해결할 수 있는 범위이고, 문제 해결을 위한 레퍼런스를 찾는 과정과 소통하는 과정을 경험할 수 있어서 매우 좋았다.
처음 하기 좋은 이슈라는 태그에 충분히 걸맞았다. 이번 이슈에서 끝나지 않고 새로 생긴 이슈에도 메인테이너 대신 피드백을 줄 수 있었다.
이걸 하고 나니 문제를 해결하기 위한 접근법이 발전되는 게 느껴졌다. 좋은 동기부여가 되었고, 지속적으로 이 프로젝트에 기여할 것이다.