오픈소스 기여를 넘어, 멘토가 되다 ➜ 서강대학교 발표
1. 서론
25년 9월, 서강대학교에서 「올바른 오픈소스 기여를 위한 첫 걸음」 이라는 주제로 발표를 진행했습니다.

이번 행사는 여러 오픈소스 경험을 가진 분들이 함께하는 자리였습니다. 리눅스 커널에 직접 기여하고 계신 분부터, 네이버에서의 경험을 바탕으로 오픈소스 프로젝트의 메인테이너로 활동하고 계신 분, 그리고 토스에서 일하며 Apache 프로젝트에 꾸준히 기여하고 계신 분까지 다양한 배경을 가진 발표자들이 함께했습니다. 그런 분들과 함께하는 자리에서 저는 행사의 첫 발표를 맡게 되었습니다.

처음에는 조금 부담스럽기도 했습니다. 저보다 훨씬 오랜 시간 오픈소스 생태계에서 활동해온 분들도 계셨고, 저 역시 아직 배워가는 과정에 있었기 때문입니다. 하지만 한편으로는 제 이야기도 나름의 의미가 있을 수 있겠다는 생각이 들었습니다.
저 역시 처음에는 오픈소스에 대해 잘 알지 못했고, 첫 기여를 하기까지 꽤 오랜 시간을 고민했습니다. 이후 여러 오픈소스 프로젝트에 기여하고, 오픈소스 멘토링 프로그램의 운영진으로 참여하면서 다른 분들의 첫 기여를 돕는 역할까지 하게 되었습니다. 이번에는 제가 도움을 받는 입장이 아니라, 오픈소스를 시작하려는 분들에게 제 경험을 전달하는 입장에서 발표를 준비했습니다.

그래서 이번 발표에서는 오픈소스 자체를 설명하기보다는 제가 실제로 오픈소스에 기여하면서 겪었던 고민과 시행착오를 중심으로 이야기를 풀어보았습니다. 그리고 제 발표가 끝난 뒤에는 다른 발표자들의 이야기도 들을 수 있었습니다. 각자 활동해온 프로젝트와 경험은 달랐지만, 오픈소스에 기여하게 된 계기부터 실제 프로젝트에서 겪었던 고민, 커뮤니티와 협업하는 방식까지 같은 오픈소스라는 주제를 서로 다른 시선에서 들을 수 있다는 점이 특히 좋았습니다.
저 역시 오픈소스에 계속 기여하고 있지만, 다른 분들의 경험을 들으면서 제가 아직 경험하지 못한 프로젝트와 커뮤니티의 모습을 접할 수 있었습니다. 누군가에게는 자신의 경험을 전달하는 자리였지만, 저에게는 발표를 준비하고 제 이야기를 전달하는 동시에 다른 사람들의 경험을 다시 배울 수 있었던 자리이기도 했습니다.
이번 글에서는 그날 제가 어떤 이야기를 준비했고, 발표를 진행하면서 무엇을 느꼈는지, 그리고 다른 발표들을 들으며 어떤 생각을 하게 되었는지를 기록해보려고 합니다.
서강대학교에서 진행한 오픈소스 meet-up 회고를 시작합니다.
2. 왜 이런 이야기를 하게 되었을까
제가 이번 발표에서 거창한 오픈소스 이야기를 하기보다 첫 기여를 준비하면서 실제로 했던 고민들을 이야기하고 싶었던 이유가 있습니다.
오픈소스 멘토링 운영진으로 활동하면서 여러 멘티분들과 커피챗을 하고 질문을 받았습니다. 그 과정에서 생각보다 비슷한 고민을 많이 접했습니다.
"제 기술 스택과 맞는 오픈소스를 찾고 싶은데 마땅한 게 없어요."
"이슈는 찾았는데 혼자 해결하기가 너무 어려워요."
"열심히 해결했는데 다른 사람이 먼저 PR을 올리면 어떻게 하죠?"
재미있게도 이 고민들은 대부분 저 역시 한 번씩 경험했던 것들이었습니다. 그래서 이번 발표에서는 제가 정답을 알려드린다기보다는, 저도 똑같은 고민을 했고 실제로 어떻게 지나왔는지를 이야기해보자고 생각했습니다.
오픈소스를 시작하려고 하면 처음부터 대단한 기여를 해야 할 것처럼 느껴질 때가 있습니다. 저 역시 그랬습니다. 하지만 실제로 여러 프로젝트에 기여해보니 처음에는 작은 PR 하나를 만들어보는 것부터 시작했고, 그 과정에서 실패하고 질문하고 다른 사람의 코드를 읽으면서 조금씩 오픈소스에 익숙해졌습니다.
이번 발표에서는 바로 그 과정을 이야기하고 싶었습니다.
3. 첫 번째 고민, 의미 있는 기여를 해야 한다는 생각
제가 처음 오픈소스를 시작할 때 가장 오래 붙잡고 있었던 생각은 "제대로 된 기여를 해야 한다"는 것이었습니다.
당시에는 Apache Hadoop이나 Apache Spark에 기여하고 싶었습니다. 제 기술 스택과 잘 맞는 프로젝트에서 버그를 수정하거나 핵심적인 기능을 개발해야 의미 있는 기여라고 생각했습니다. 문제는 그렇게 생각하다 보니 오히려 아무것도 하지 못했다는 것입니다.
7월부터 10월까지 약 3개월 동안 이슈를 계속 찾아봤지만 실제 PR을 올리지는 못했습니다. 마음에 드는 이슈를 찾으면 이미 다른 사람이 해결하고 있었고, 어렵게 시간을 내서 이슈를 확인하면 또 다른 사람이 먼저 PR을 올려놓은 경우도 많았습니다. 그렇게 시간을 보내면서 오히려 제가 스스로 오픈소스의 문턱을 높이고 있다는 생각이 들었습니다.
결국 생각을 바꿨습니다.
"꼭 내가 잘 아는 프로젝트일 필요는 없다. 작은 것이라도 직접 해보자."
그렇게 처음으로 찾은 프로젝트가 Spring Kafka였습니다. 당시 Kafka를 사용하지도 않았고 Spring Kafka를 깊게 알고 있지도 않았습니다. 첫 기여 역시 거창하지 않았습니다. Bean 이름과 주석을 수정하는 작은 변경이었습니다.

코드 변경만 놓고 보면 정말 작은 PR이었습니다. 하지만 그 PR을 통해 처음으로 fork → 수정 → 빌드 → 테스트 → PR → 리뷰 → merge라는 오픈소스의 전체 과정을 경험했습니다.
돌이켜보면 그 작은 PR이 제게는 가장 중요한 첫 걸음이었습니다. 무엇을 기여했는지보다 직접 오픈소스의 과정을 한 번 경험했다는 것이 이후의 기여를 이어가는 데 더 큰 영향을 주었습니다.
4. 두 번째 고민, 혼자 해결하려고 했던 경험
두 번째로 이야기한 고민은 이슈는 찾았지만 해결하지 못하는 경우였습니다.
실제로 멘티분과 커피챗을 하면서 이런 이야기를 들은 적이 있습니다.
"이슈는 일찍 찾았는데 2주가 넘도록 PR을 못하고 있어요."
저 역시 비슷한 경험이 있었습니다.
Apache Iceberg에 처음 기여할 당시, Flink Table Maintenance 기능에 대한 Docs를 작성하는 이슈를 맡았습니다. 단순한 오타 수정이 아니라 새로운 기능을 한 페이지의 문서로 설명해야 했기 때문에, 해당 기능이 왜 만들어졌는지부터 내부 코드의 동작까지 이해해야 했습니다.
그런데 아무리 코드를 들여다봐도 쉽게 정리가 되지 않았습니다. 일주일이 넘도록 고민하면서도 제대로 된 문서를 작성하지 못했고, 혼자 해결하려다 보니 점점 조급해졌습니다.
그러던 중 이미 비슷한 Docs를 작성한 다른 PR을 보게 되었습니다. 그 PR에는 메인테이너와 주고받은 많은 코멘트가 남아 있었습니다.
그때 알게 되었습니다.
오픈소스는 혼자 완성한 결과물을 가져가는 곳이 아니라, 메인테이너와 커뮤니티의 의견을 주고받으며 함께 만들어가는 곳이라는 것을 말입니다.
그 뒤로는 혼자 고민하기보다 이슈와 PR에 제가 이해한 내용을 정리해서 질문하기 시작했습니다. 처음에는 수정 요청도 많았고 여러 번 방향을 바꾸기도 했습니다. 하지만 질문과 피드백을 반복하면서 막혀 있던 부분이 하나씩 풀리기 시작했습니다.

결국 그 과정을 통해 Docs를 완성할 수 있었고, 단순히 문서 하나를 작성한 것 이상의 경험을 얻을 수 있었습니다. 무엇보다 혼자 완벽하게 이해한 뒤 참여해야 한다는 생각에서 벗어나, 질문과 피드백을 통해 함께 만들어갈 수 있다는 것을 배운 경험이었습니다.
5. 세 번째 고민, PR을 뺏기는 경험
세 번째로 이야기한 것은 조금 민감하지만, 실제로 오픈소스를 하면서 누구나 한 번쯤 겪을 수 있는 이야기였습니다.
열심히 해결했는데 다른 사람이 먼저 PR을 올리면 어떻게 할까?
저 역시 지난 1년 동안 PR을 여러 번 뺏겨봤습니다. Apache Iceberg에서는 먼저 이슈에 관심을 남겼지만 주말 동안 작업하는 사이 다른 사람이 먼저 PR을 올렸습니다. Apache Gravitino에서는 이슈를 할당받은 상태에서도 다른 사람이 먼저 문제를 해결하는 경험을 했습니다.
처음에는 당연히 억울했습니다. 먼저 이슈를 찾고 코드를 읽고 시간을 들여 해결하고 있었는데, 결과적으로 다른 사람의 PR이 merge되는 상황이었기 때문입니다.
하지만 몇 번의 경험을 지나고 나니 조금 다르게 생각하게 되었습니다. 이미 해당 코드를 깊게 들여다봤기 때문에 그 과정에서 연결된 다른 문제를 발견할 수 있었고, 후속 이슈로 이어지는 경우도 있었습니다. 결과적으로 처음 해결하려고 했던 문제보다 더 깊은 코드를 살펴보고, 다른 형태의 기여로 이어지기도 했습니다.
그래서 지금은 PR이 먼저 올라갔다는 사실 자체보다 그 과정에서 무엇을 배우고 다음에 무엇을 할 수 있는가를 더 중요하게 생각하게 되었습니다.
오픈소스에서는 내가 먼저 발견했다고 해서 반드시 내가 해결해야 하는 것도 아니고, 내가 작성한 코드가 반드시 최종적으로 merge되어야 하는 것도 아닙니다. 중요한 것은 그 과정에서 프로젝트를 이해하고, 다음 기회로 이어질 수 있는 경험을 얻는 것이라고 생각하게 되었습니다.
6. 결국 전하고 싶었던 한 가지
세 가지 이야기를 하고 나서 제가 전달하고 싶었던 결론은 단순했습니다.
일단 뭐라도 좋으니 기여를 시작해보자는 것입니다.
처음부터 의미 있는 코드 기여를 할 필요도 없고, 모든 코드를 완벽하게 이해한 뒤 PR을 올릴 필요도 없습니다. 작은 문서 수정일 수도 있고, 테스트 코드일 수도 있고, 단순한 코드 수정일 수도 있습니다.
중요한 것은 실제로 한 번 과정을 경험해보는 것이라고 생각합니다.
한 번 PR을 만들어보면 이전에는 막연하게만 보이던 것들이 조금씩 구체적으로 보이기 시작합니다. 어떻게 저장소를 살펴보는지, 이슈를 찾는 방법은 무엇인지, 로컬에서 프로젝트를 빌드하는 방법은 무엇인지, 메인테이너와 어떻게 소통하는지까지 하나씩 경험하게 됩니다.
그리고 그 작은 경험들이 다음 기여를 위한 기반이 됩니다.
저 역시 처음부터 Apache 프로젝트에 익숙했던 것은 아닙니다. 작은 PR 하나를 시작으로 다른 프로젝트를 찾아보고, 코드를 읽고, 이슈를 만들고, 메인테이너와 대화하면서 조금씩 경험의 범위를 넓혀왔습니다.
그래서 발표를 준비하면서도 거창한 방법론을 이야기하기보다는 "일단 한 번 해보면 그다음은 생각보다 조금씩 보이기 시작한다"는 이야기를 전하고 싶었습니다.
7. 다른 발표를 들으며
제 발표가 끝난 뒤에는 다른 발표자들의 이야기도 들었습니다.
앞서 이야기했듯 이번 행사에는 다양한 배경에서 오픈소스에 참여하고 계신 분들이 함께했습니다. 리눅스 커널처럼 굉장히 낮은 수준의 시스템을 다루는 프로젝트부터, 기업에서 실제로 사용되는 오픈소스 프로젝트의 메인테이너로 활동하는 경험까지 발표의 주제와 깊이도 다양했습니다.
특히 좋았던 점은 같은 오픈소스를 이야기하더라도 각자가 바라보는 관점이 상당히 달랐다는 것입니다.
누군가는 기술적인 문제를 어떻게 해결했는지 이야기했고, 누군가는 커뮤니티에서 메인테이너로 활동하면서 겪은 경험을 이야기했습니다. 저는 그 이야기를 들으면서 제가 그동안 경험했던 오픈소스의 모습이 전체 생태계의 일부에 불과하다는 생각이 들었습니다.
저는 주로 Apache 프로젝트에서 Contributor로 참여하면서 이슈를 찾고 PR을 보내는 경험을 많이 했습니다. 하지만 다른 발표자들의 이야기를 통해 메인테이너의 입장에서 프로젝트를 바라보는 방법이나, 제가 아직 경험해보지 못한 다른 오픈소스 생태계의 모습을 접할 수 있었습니다.
그래서 제 발표가 끝난 뒤에도 "오늘은 발표하러 왔다"는 느낌보다는 "오픈소스에 대해 더 많이 배우고 간다"는 느낌이 남았습니다.
발표자로 참여했지만 동시에 다른 발표자들의 경험을 들으며 저 역시 새로운 관점을 얻을 수 있었던 자리였습니다. 특히 각자의 위치에서 오픈소스에 기여하는 방식은 달랐지만, 결국 프로젝트를 함께 만들어간다는 점에서는 서로 연결되어 있다는 것도 느낄 수 있었습니다.
8. 운영진으로서 느낀 보람
사실 이번 발표를 준비하면서 가장 많이 생각했던 것은 제가 오픈소스를 처음 시작했을 때와 지금의 모습이 많이 달라졌다는 것이었습니다.
처음에는 저 역시 단순히 스펙을 쌓고 싶다는 생각으로 오픈소스를 시작했습니다. 하지만 작은 기여를 하나씩 경험하면서 오픈소스를 바라보는 시선이 달라졌습니다.
처음에는 오픈소스를 사용하는 사용자에 가까웠다면, 이제는 직접 코드를 수정하고 이슈를 제안하고 메인테이너와 의견을 나누면서 함께 프로젝트를 만들어가는 사람이라는 생각을 하게 되었습니다.
그리고 그 과정에서 오픈소스 멘토링 운영진으로도 참여하게 되었습니다.
이번 멘토링을 통해 여러 멘티분들과 이야기를 나누면서, 제가 처음 오픈소스를 시작할 때 받았던 도움을 다른 사람에게 전달할 수 있다는 것이 생각보다 큰 보람이라는 것도 느끼고 있습니다.
특히 이번 발표 이후에는 실제로 기여를 망설이고 있던 분들이 기여를 마쳤다는 이야기를 전해주기도 했습니다. 누군가에게는 작은 PR 하나였겠지만, 그 작은 시도가 실제 행동으로 이어졌다는 이야기를 들으니 발표를 준비한 이유가 조금은 이해되는 것 같았습니다.
예전에는 제가 누군가에게 도움을 받으면서 오픈소스를 시작했다면, 이제는 제가 다른 사람의 첫 기여를 돕는 위치에 서게 되었다는 점도 의미 있게 느껴졌습니다.
9. 마무리
처음 오픈소스에 관심을 가졌을 때의 저는 3개월 동안 이슈 하나 제대로 해결하지 못하고 계속 프로젝트를 찾아보고 있었습니다. 그때는 제가 Apache 프로젝트에 여러 번 기여하고, 오픈소스 멘토링 운영진으로 활동하고, 다른 사람들에게 오픈소스 경험을 이야기하게 될 것이라고는 생각하지 못했습니다.
돌이켜보면 시작은 정말 작은 PR 하나였습니다.
지금도 오픈소스 기여를 고민하고 있는 분들이 있다면 처음부터 완벽한 프로젝트나 의미 있는 이슈를 찾으려고 하기보다 작은 것이라도 직접 한 번 해보셨으면 좋겠습니다.
저에게는 그 작은 PR 하나가 오픈소스를 바라보는 시선을 바꾼 첫 걸음이었습니다.
이번 서강대학교 발표 역시 그런 첫 걸음을 누군가에게 전달할 수 있었던 경험이었습니다. 동시에 다른 발표자들의 이야기를 들으면서 저 역시 아직 배워야 할 것이 많다는 것도 다시 한번 느꼈습니다.
앞으로도 새로운 오픈소스 프로젝트에 도전하고 직접 기여하면서 경험을 쌓아가고 싶습니다. 그리고 제가 처음 받았던 도움을 다른 사람에게 전달할 수 있는 오픈소스 기여자이자 커뮤니티의 한 사람으로 계속 성장해가고 싶습니다.