주제
- #성장 기회
- #오픈소스 기여
작성: 2025-05-03
업데이트: 2025-05-27
작성: 2025-05-03 00:00
업데이트: 2025-05-27 09:42
이 글은 오픈소스에 관심은 있었지만 '내가 감히?', '어디서부터 시작해야 하지?' 하는 두려움을 갖고 있던 분들에게 용기를 심어 주는 것이 목표입니다.
오늘은 제가 용기를 내어 오픈소스의 문을 두드려보고, 그 과정에서 배우고 느꼈던 경험을 나누고자 합니다.
개발 공부를 하다 보면 '오픈소스'라는 말을 자주 접하게 됩니다. GitHub를 둘러보면 세상을 움직이는 수많은 프로젝트들이 코드를 활짝 열어두고 있죠.
이렇게 코드를 외부에 공개하는 프로젝트를 '오픈소스'라고 합니다.
예를 들어 OpenJDK, Spring Framework, Redis, React와 같은 대형 오픈소스가 있습니다.
저는 지금까지 총 4번의 오픈소스 기여를 해왔는데요. 세상이 뒤집힐 만한 기능을 추가하는 그런 것이 아닌 오픈소스의 작고, 사소한 개선점을 찾아 기여를 하고 있습니다.
저는 위의 프로젝트 코드 스타일도 모르고, 어떤 동작을 하는 지 자세하게 모릅니다.
이렇게 완벽하게 코드를 이해 못해도 커뮤니티에 기여할 수 있다는 걸 알 수 있는데요. 저는 아직 개발을 접한 지 2년 밖에 안되었고, 그닥 개발에도 재능이 있다고는 느끼지 못했습니다.
그저 오픈소스에 기여하고, 개발자 커뮤니티에서 소통하는 것이 즐거워 이런 활동을 유지하고 있습니다.
솔직히 처음에는 '이력서에 한 줄 추가하면 좋지 않을까?' 하는 생각도 아주 없지는 않았습니다. 꽤나 컸죠. 하지만 더 큰 동기는 따로 있었습니다. 바로 '더 깊이 배우고 싶다'라는 열망과 '내가 겪은 문제를 해결하고 싶다'라는 필요성이었습니다.
팀 프로젝트에서 Spring WebFlux를 사용하며 그 기반 기술인 Project Reactor를 깊이 공부할 기회가 있었습니다. 책이나 문서를 통해 개념은 이해했지만, 실제 복잡한 시스템에서 어떻게 동작하고 최적화되는지는 직접 코드를 보고 부딪혀봐야 알 수 있는 영역이었습니다. 또한 '내가 Reactor를 열심히 공부했다는 걸 어떻게 증명하지?'라는 고민을 자주하며, '오픈소스에 기여 해야겠다!'라는 마음을 가졌습니다.
막상 '기여를 하고 싶다!' 결심하니 어디서부터 시작해야 할지 막막했습니다. 방대한 코드 속에서 내가 수정할 부분을 찾는 것부터, 나의 변경이 전체 시스템에 어떤 영향을 미칠지 예측하는 것까지 모든 것이 두려웠죠.
'나 같은 게 PR 올렸다가 괜히 욕 먹으면 어떡하지?'라는 생각이 많이 들어 최종적으로 PR을 등록 하기까지 많은 시간이 걸렸던 것 같습니다.
제가 Reactive Stack으로 사용하던 Redis 자바 클라이언트인 Lettuce의 Reactive Command가 Reactor 기반이었고, Reactor 학습 기반으로 Reactor 체인을 직접 수정하여 개선해보고 싶다는 생각이 들었습니다.
그냥 막무가내로 fork를 한 후 'Reactive', 'reactor' 문자열 매칭으로 포함되는 모든 코드를 살펴봤습니다. Mono, Flux와 같은 Reactor Publisher로 체인이 구성된 코드는 전부 확인했던 것 같습니다.
코드를 샅샅이 훑어보다 보니, 운 좋게도 Reactor 체인을 사용하는 코드 중 하나에서 약간 가독성이 떨어지고 메서드 체이닝이 올바르게 되지 않은 코드를 발견했습니다. 세상이 놀라 뒤집힐 만한 기능 개선이나 아키텍처 변경은 아니었지만, 제가 이해하고 수정할 수 있는 범위 내의 작고 명확한 문제였습니다. '아, 이런 거라면 나도 기여할 수 있겠다!' 하는 생각이 들었습니다.
제가 파악한 내용을 바탕으로 조심스럽게 코드를 수정하고, 로컬 환경에서 간단하게나마 의도대로 동작하는지 확인했습니다. 비록 작은 변경이었지만, 기존 코드의 스타일을 최대한 따르고 혹시 다른 부분에 영향을 주지는 않을까 여러 번 고민하며 신중하게 접근했습니다.
수정한 내용을 커밋하고 드디어 PR을 올릴 차례가 되었습니다. 솔직히 '보내기' 버튼을 누르기까지 정말 많은 고민과 망설임이 있었습니다. '이 정도 변경으로 PR을 보내도 괜찮을까?', '혹시 너무 당연한 걸 고쳤다고 하진 않을까?', '영어로 설명을 잘 쓸 수 있을까?' 하는 걱정들이 앞섰죠.
앞서 말했듯, 괜히 제 부족함 때문에 욕을 먹으면 어떡하나 하는 두려움이 컸습니다. 하지만 '시작이 반이다', '부딪혀보지 않으면 아무것도 배울 수 없다'는 생각으로, 용기를 내어 제가 변경한 내용과 그 이유를 최대한 자세히 적어 PR을 제출했습니다.
redis/lettuce - #3061
마침내, 제 PR이 'Merged' 되었고, 제가 작성하고 수정한 코드가 수많은 개발자가 사용하는 유명 오픈소스 프로젝트의 일부가 되었다는 사실에 정말 큰 성취감과 뿌듯함을 느꼈습니다.
무엇보다 '나도 할 수 있구나!' 하는 자신감을 얻은 것이 가장 큰 수확이었습니다.
완벽하게 이해하지 못해도 괜찮습니다. 저처럼 작은 부분부터 시작하면 됩니다. 문서 오타 수정, 번역 참여, 간단한 버그 리포팅 등 기여할 수 있는 방법은 정말 다양합니다. 중요한 것은 두려움을 넘어 첫걸음을 내딛는 용기입니다.
만약, 실수를 한다면 그 실수를 통해 커뮤니티에서 피드백 받고 더욱 성장할 수 있는 기회이기도 합니다.
이력서에 한 줄 추가할 수 있는 값진 기회이기도 하지만, 학습을 기반으로 한 오픈소스 기여는 내가 정말 열심히 공부했다를 증명할 수 있는 수단이 될 수도 있습니다.
댓글을 등록할 수 없는 게시글 입니다.