어쩌다보니 Opensource Contributor가 되었습니다?

어쩌다보니 Opensource Contributor가 되었습니다?

일단 내 소개를 하자면 Skelter Labs라는 곳에서 인턴생활을 하고있는 평범한 대학교 3학년이다. “평범하다”라는 수식어를 붙인 이유는 지금부터 얘기할 것들이 누구나 오픈소스라는걸 생각할때 드는 느낌들이고, 누구나 할 수 있고, 그리 어려운일이 아니라는 점을 강조하기 위해서이다.

나는 프로그래밍이라는 분야가 세상에 존재하는지도 모르는체 그저 물리안하는 학과로 가기위해 컴퓨터 공학과에 오게되었고 정말 운이 좋게도 프로그래밍이라는 분야에 재미를 느껴 이것저것 해오고있다.

사실 1학년때도 그냥 학교수업만 들었으며 2학년이 시작되고부터 이런저런 커뮤니티를 돌아다니며 넓은 세상을 보려고 했던 것 같다.

생활코딩 오프라인 강의, 네이버 오픈소스 세미나, 9XD 등등의 모임을 다니면서 나와 같이 성장하고 싶은 사람들이 어떤 경험을 쌓으면서 실력을 키워왔는지 들으러 다녔다.

그런 곳에서 공통적으로 비슷하게 하는 말 중 하나는 오픈소스에 컨트리뷰트 하라 =는 말이었다. 소스코드에서 필요한 기능을 추가하거나 에러를 찾아서 커밋하거나 적어도 README를 번역하는 그런 활동말이다!

그런데 나는 README를 번역하기에는 영어실력이 부족했고 도대체 이렇게 많은 오픈소스에서 어떤 소스를 골라서 컨트리뷰트를 해야할지 갈피를 못잡았다.

일단 애초에 그렇게 덩치가 큰 소스에서 어떻게 필요한 기능 또는 에러를 찾을지 감이 잡히지 않았다. 세상엔 크고 아름다운(?) 코드들이 많았고, 내 눈은 매우매우 높아서 작은 프로젝트는 보이지도 않았다.

그래서 에라 모르겠다 일단 학교나 잘 다니자 라는 생각으로 뭔가 이런 활동을 하는걸 살짝 놓았다. 그러나 마음속으로는 미련이 남았던지 여러곳에서 이리저리 정보를 찾아다녔다.

그러던중 Rellat이라는 곳에서 프로그래밍에 대한 생각들과 오픈소스에 대한 글을 봤다. 내가 느끼기에 Rellat에서 말하는 것들의 중심 생각은 프로그래밍을 배울때는 이런 과정을 거쳐야 한다는 것이었다.

  • 잘 쓰여진 간단하고 작은 코드를 읽어보고 분석한다.

  • 분석한 코드를 다른 프로그래밍 언어로 포팅하면서 제대로 이해했는지 확인한다.

  • 코드의 성능 및 구조를 개선한다.

  • 이러한 작지만 꾸준한 일들을 많이 한다.

  • 그 일들을 조합하여 내가 만들고 싶은 프로그램을 만든다.

이 과정을 들으면서 내가 시도했던 것들의 문제점을 발견했다.

  • 나는 코드를 읽고 분석도 못하면서 개선부터 하려고들었다.

  • 작지만 꾸준한일보다 크고 일회성인 일을 하려는 도둑놈 심보가 있었다.

  • 내가 만들고 싶은 프로그램을 만들지도 않았다.

Rellat에서는 저러한 과정을 장려하고 많은사람에게 좋은 프로그래밍 습관을 말해주기 위해 멘토링을 하고있었고, 나는 당연히 이 멘토링에 참여했다.

멘토링을 하면서 했던 일들은 저기있는것과 동일하다. 내가 이해할 수 있을만큼의 작은 소스코드를 찾고, 그 소스코드를 분석 및 개선하고, 다른 일들과 조합하는 것들을 하면서, 그 과정을 전부 기록하는 것이었다.

이러한 과정을 하면서 나는 점점 큰 프로그램의 소스코드를 분석하고 구조를 파악하는 능력이 자연스럽게 생겼고, 그것을 내가 하려는 작업에 적용하는 일 까지는 할 수 있게되었다.

음 그런데 뭔가 기회가 안보였다. 아무리 작은 프로그램들을 가져다 써도 에러나 개선점은 모르겠는걸? 나는 단지 내가 필요한 부분만을 분석해서 내 일에 적용할 뿐인데 어떻게 오픈소스에 컨트리뷰트 해야하는거지?

이런 생각이 들었지만 일단은 작은 일들을 계속 해나가기 시작하다가 우연한 기회로 스타트업 면접을 보게되었고 회사에서 일할 기회가 생겼다.

회사에 들어가서 일하다보니 지금까지 하던 작업들과 다르지 않았다. 물론 처음부터 만들어야 하는 것들도 있었지만 기본적으로는 어떤 기능이 필요하면 그 기능을 하는 라이브러리를 먼저 비교분석하고 제일 적절한 것을 가져다 쓰며 튜닝한다.

지금까지 해왔던 “필요한 작은 프로그램을 찾고, 그것을 분석해서 내가 하는일에 적용한다”와 정확히 일치하는 일이었고 기능을 하나하나 구축하기 시작했다.

기능을 하나하나 구현하던 중, 정말 진짜 진심으로 내가 짠 모듈의 로직에는 아무런 문제가 없었고, 단일 모듈만으로 테스트 했을 때는 잘 돌아가던 코드가 다른 모듈들과 같이 돌리면 돌아가지 않는 문제가 있었다.

디버깅 해보니 원래 회사에서 쓰던 어떤 플랫폼 같은 소스를 확장해서 개발 중 이었는데 거기 있던 default 모듈중 하나에 문제가 있었던것이다!

자바스크립트 context가 맞지 않아서 어떤 프로퍼티가 불려지지 않았고, 그 모듈을 로딩하던 중 에러가 발생해버려서 내 모듈이 불리지 않았었다.

따라서 나는 그 부분을 수정하고 PR을 올렸는데 Merge가 덜컥 되어버렸다! 갑자기 contributor가 되었다!

이렇게 컨트리뷰트를 하고 나서 느낀점은

  • 작은 소스들을 분석하면서 소스코드 분석력을 키우자

  • 아무리 작은 부분을 고쳐야 하더라고 전체적인 구조 분석이 필요하다

  • 아무 상관도 없는 재미없는 코드분석 보다는 지금 하는일에 사용중인 라이브러리의 오류나 개선점을 찾는게 낫겠다. 라이브러리 쓰다보면 자연스럽게 코드를 뜯어보게 된다. 토이프로젝트를 많이 하자!
  • 오픈소스도 사람이 만든 것이라 여러사람의 도움을 필요로 하고 환영한다.

앞으로도 기회가 생기면 다른 사람도 나와 같은 라이브러리를 사용하면서 같은 삽질을 안할 수 있게 하기위해서 계속해서 컨트리뷰트 할 생각이다.

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×