오픈 소스에 숟가락 얹기 (Armeria 문서에 기여하기)
오픈 소스 기여? 너무 어려워
운동해야 건강해지는 것을 알지만 꾸준히 하기는 참 어렵습니다. 마찬가지로 오픈 소스가 주는 이점에 대해서는 익히 알려져 있지만 막상 기여하는 것은 쉽지 않습니다. 제 이야기를 하자면, 오픈 소스를 통해 성장한 사례를 소개한 블로그들을 보면서 “유명한 오픈 소스의 코드를 수정하는 멋진 나…”를 상상했지만 현실은 몇 년째 눈으로 훑어만 보다가 포기하기 일쑤였습니다. 누구에게나 열려있어서 오픈 소스일텐데 왜 이렇게 기여는 어렵게 느껴지는 걸까요? 최근 Armeria에 첫 번째 기여를 하고 오픈 소스에 대한 생각이 달라졌고 이 글을 쓰게 되었습니다. 제가 찾은 결론은 말장난 같지만 “기여가 어렵다고 생각하기 때문에 어렵다” 입니다.
코드 제공만이 기여일까?
왜 기여가 어렵다고 생각할까요? 보통 누군가가 오픈 소스에 기여한 경험이 있다고 하면 우리는 가장 먼저 코드 변경을 떠올립니다. 어떤 문제가 발생했고 무엇을 바꿨고 결과적으로 얼마나 향상되었는지 개발자의 관점에서 접근합니다. 그래서 기여가 어렵게 느껴집니다. 우리에게 알려져 있는 오픈 소스 프로젝트들은 이미 규모가 크기 때문에 맥락을 이해하기 쉽지 않습니다. 그래서 혹자는 내가 이해할 수 있는 크기의 프로젝트에 기여하는 것으로 시작하라고 말하기도 합니다. 하지만 깃허브의 오픈 소스 가이드는 근본적으로 기여의 의미를 익히 아는 것과는 다르게 설명합니다. 오픈 소스에 기여할 때 반드시 코드를 제공할 필요가 없으며 워크샵이나 미팅을 조직하기, 프로젝트 문서를 정리하고 번역하기, 홍보하기, 질문과 답변하기 모두 기여가 될 수 있다고 말합니다. 특히 일반적인 기여의 28%는 오타 수정, 문서 정리, 번역 작업이라고 합니다. 따라서 우리가 “기여 = 코드 변경”이라는 마음의 짐을 잠시 내려놓으면 훨씬 쉽게 오픈 소스에 참여할 수 있습니다.
Armeria 간단 소개
Armeria는 REST, grpc, Thrift, Reactive Streams, Spring 등 다양한 기술과 프레임워크를 취사 선택하여 내가 처한 상황에 맞는 마이크로서비스를 빌드할 수 있는 프레임워크입니다. Armeria를 선택한 이유는 자바로 만들어졌고 관심사인 백엔드, 네트워크 분야에 속했으며 무엇보다 기여자에게 친화적인 커뮤니티 문화를 가졌기 때문입니다. 게다가 한국어로 소통할 수 있는 채널이 존재한다는 극강의 보너스를 가졌습니다.
Armeria gRPC 튜토리얼 고치기
처음부터 armeria의 “무언가”에 기여하겠다는 생각은 없었고 어떻게 사용하는지 방법을 배우기 위해 튜토리얼을 보고 따라했습니다. 그런데 gRPC service 튜토리얼을 따라하는 도중 초반부에 protobuf 파일을 통해 자바 소스 코드를 생성하는 과정에서 에러가 발생하며 실패하였습니다. 이전에 REST service 튜토리얼은 매끄럽게 진행되었기 때문에 당황하고 앞에서 빠뜨린 것이 있나 다시 점검했습니다. 딱히 실수한 것은 없어서 실패하는 gradle 명령어를 검색해보니 build.gradle 파일에서 몇 가지 설정이 필요하다는 것을 알게 되었습니다. 우선 알게된 것을 정리한 후 계속 튜토리얼을 진행했고 그 과정에서 오타나 잘못된 부분을 몇 가지 더 찾게 되었습니다. 이를 모아서 PR을 보냈고 다행히 머지가 되면서 armeria에 첫 번째 기여를 하게 되었습니다.
문서화를 해야 하는 이유
처음에는 Armeria에 대해 가볍게 공부할 생각이었는데 생각보다 이르게 PR을 보낼 기회가 주어져서 얼떨떨하면서도 좋았습니다. 대단한 것은 아니지만 기여를 하고나니 만난지 얼마 안된 프로젝트에 대한 소속감이나 애정도 생기는 듯 했습니다. 무엇보다 좋은 점은 처음 날리는 PR이다보니 실수하지 않기 위해 잘 모르는 grpc 튜토리얼을 반복해서 읽고 정보를 찾다보니 자연스럽게 grpc service에 대한 지식이 쌓였습니다. 문서화는 언뜻 사소해보일지 몰라도 프로젝트에 대한 이해를 높이는 첫 걸음으로 이만한 것이 없다고 생각합니다. 커뮤니티 입장에서도 문서화가 잘 될수록 새로운 사용자들이 참여할 수 있으므로 쌍방 이득입니다.
기여하러 가자!
정리하면 오픈 소스에 기여하는 길은 다양하고 전혀 어려울 필요가 없습니다. 무엇보다 코드를 제공하지 않아도 많은 기여를 할 수 있습니다. 만약 당신이 새롭게 오픈 소스에 참여한다면 저는 먼저 프로젝트의 문서를 읽는 것을 추천합니다. 공식 문서나 튜토리얼을 읽으면서 프로젝트에 대한 이해도 높일 수 있고 그 과정에서 운 좋게 오타를 수정하거나 번역을 할 수도 있으니까요. 또한 저는 블로그에 글을 쓰는 것도 간접적인 기여라고 생각합니다. 예를 들어 스프링을 사용하면서 겪는 버그나 더 잘쓰는 방법에 대한 수많은 블로그와 글들이 있었기 때문에 한국에서 스프링이 지금의 위상을 가지게 되었다고 생각합니다. 마찬가지로 스택오버플로우에 질문하고 답변하는 것도 모두 기여입니다. 그래서 기여는 쉽고 누구나 할 수 있습니다. 더 나은 개발자가 되기 위해 어떻게 자기계발을 할까 고민된다면 간단한 오픈 소스 기여부터 시작해보면 어떨까요?