계기
나는 현재 상황에서 회사에서의 업무만으로 성장하기에는 부족한 부분이 있다고 항상 생각하고 있었다. 그 이유는 내가 코드에 대해 리뷰하거나 조언해 줄 수 있는 멘토가 부재했기 때문이다. 멘토의 부재는 결국 내 결과물에 대한 객관적인 평가가 어렵게 된다는 것을 의미했다.
이를 해결하기 위해 방법을 생각하던 중, OSCCA이라는 것을 알게되었다.
OSSCA는 오픈소스 컨트리뷰션 아카데미로, 오픈 소스 활동을 지원하는 여러가지 프로젝트를 진행했었다. 크게 체험형 활동과 참여형 활동으로 나뉘게 되는데, 나는 그 중 조금 가벼운 체험형 활동을 지원하여 합격하였다.(참여형은 탈락했다. 해보지는 않았지만 참여형을 경험해볼 수 있다면 체험형보다 훨씬 좋을 것이라고 생각한다)
체험형 활동은 Javascript를 활용해 오픈소스를 경험해보는 것이었는데, 사실 멘토가 가진 오픈소스에다가 멘토가 알려주는 그대로 기여를 하는 것이기 때문에 크게 기여했다는 의미를 갖기는 힘들었다. 하지만 해당 활동을 하면서 오픈 소스라는게 뭔지, 어떻게 기여하는지에 대해 알 수 있게되어 꽤 의미가 있었다. 그리고 멘토와 대화를 통해 몇 가지 인사이트들을 얻을 수 도 있었다.
이 때 오픈소스라는 것에 대해 관심이 커지게 되었다.
기여하기
OSSCA활동 이후, 내가 기여를 할 만한 몇 가지 오픈소스들을 찾아보았다. Flutter, Javascript, Python 등 언어를 가리지 않고 유명한 레포지토리들을 찾아다니며 이슈를 훑었다. 하지만 찾아낸 good first issue(초보 기여자를 위한 이슈들에 대부분 이 라벨을 붙인다)의 대부분은 누군가 이미 해결을 했거나, assign된 것들이었다. 생각보다 내가 기여할만한 오픈소스를 찾는 것이 쉽지 않다고 느꼈고 흥미가 식기 시작했다.
오픈소스가 잊혀질 때 쯤, 회사에서 postman이 갑자기 먹통이 되었다. 여러 대의 pc로 테스트해봐도 동일현상이 일어난 것을 보면 postman자체를 회사에서 막아버린 듯 했다. 이를 해결하기 위해 검색을 하던 중 postman을 대체하는 오픈소스 어플리케이션을 찾을 수 있었다.
https://github.com/foss42/apidash
상당히 유용하게 사용을 하였는데, 사용하던 중 버그를 찾게 되었다. 큰 문제를 일으키는 버그가 아니었기 때문에 참고 사용하다가 점점 불편함을 느꼈고, 이것을 제보해야겠다는 생각을 했다.
그래서 동영상과 함께 issue를 등록하여 문제 해결을 기다렸다. 그런데 생각해보니 이 문제를 해결하는 것이 어려운 일이 아닐 것 같아 내가 그냥 고쳐서 사용해도 되겠다는 생각이 들었다.
이후 몇 번의 도전 끝에(전체 코드진행을 모르니 생각보다 시간이 오래 걸렸다) 코드를 수정했고, 간단한 테스트를 작성한 후 PR을 날렸다.
오랜 기다린 끝에 Merge를 받을 수 있었다. 이전에 오픈소스를 기여하기 위해 억지로 많은 레포지토리를 찾아다닌 것에 비하면 굉장히 수월했고, 실제로 유저인 내가 느낀 불편을 스스로 개선하여 기여함으로써 프로젝트에 도움을 줬다는 뿌듯함이 몰려왔다.
심지어 이번 기여에서 내가 작성한 코드는
단 한줄이었다..
정말 단순한 버그를 하나 고친 것 뿐이지만 앞으로의 오픈소스 활동에 초석이 되기를 바란다.
오픈소스 장점 및 힘든 점
장점
- 다른 사람의 코드를 볼 수 있다. 특히 한 명이 작성한 코드가 아니라 여러 사람들이 코드 컨벤션을 만들고 이에 따라 작성한 코드들이 대부분이기 때문에 배울점이 특히 많은 것 같다. 특히 apidash는 riverpod으로 상태를 관리하고 있는데, 내 프로젝트에서 riverpod을 사용한 방법과 비교하며 riverpod에 대해 더 깊이 공부할 수 있게 되었다.
- git으로 협업하는 방식에 대해 배울 수 있다. 혼자 개발을 하는 사람들은 add, commit, push 3가지만 알아도 아무 문제없이 개발을 할 수 있을 것이다. 하지만 협업을 할 때는 레포지토리, 브랜치 등을 관리해가며 정해진 가이드라인에 따라 개발을 해야하기 때문에 이 규칙들을 준수해가며 git을 사용하는 방법에 대해 더 자세히 알 수 있게 되었다.
힘든 점
- 어떤 오픈소스 프로젝트에 기여할 수 있는지 찾기가 매우 힘들다(초보 기준에서)
- 대부분 메인테이너가 외국사람들이기 때문에 소통에 소요되는 시간이 매우 길다