트렌드

초보 개발자가 오픈소스에 기여하는 5단계

2014.07.02

오픈소스 커뮤니티는 새로운 기술을 배울 수 있는 공간이자 새로운 사람을 만날 수 있는 장이다. 하지만 막 프로그래밍을 접하는 사람들에게 오픈소스 커뮤니티는 낯선 공간이다. 왠지 프로그래밍 경력이 쌓인 개발자나 실력파 개발자만이 오픈소스 프로젝트에 참여해야 할 것 같아서이다. 실제로는 그 반대이다. 많은 오픈소스 커뮤니티가 초급 개발자, 젊은 개발자들을 찾고 있다. 초급 개발자라도 오픈소스에 기여할 수 있는 방법은 많기 때문이다.

opensource_start_thum

오픈소스에 기여한다는 것

오픈소스에 기여한다는 건 소스 코드를 수정하고 고치는 일만 뜻하는 건 아니다. 오픈소스 SW를 개발하는 개발자에게 도움을 주는 모든 행위가 오픈소스에 기여하는 일이다. 오류를 제보하거나, 주석을 쓰거나, 문서화 작업에 참여하는 일도 포함된다. 오픈소스에 도움을 주는 사람을 통칭해 ‘컨트리뷰터'(Contributor)라 부르고, 소스코드를 수정하고 조절할 수 있는 권한을 가진 사람을 ‘커미터'(Committer)라고 부른다. 인기있는 프로젝트에선 2~3년 이상 활동을 해야 컨트리뷰터가 되기도 한다.

opensource_start_01

 ▲전수현 개발자가 제안하는 오픈소스 시작법(출처: 2014년 5월24일 여성개발자모임터 행사 발표)

일반적으로 컨트리뷰터는 일정 시간을 거쳐 커뮤니티 안에 이름이 알려지며 커미터가 된다. 아무리 프로그래밍 실력이 좋다 해도 커뮤니티에 대한 애정이나 소통 없이는 컨트리뷰터나 커미터가 될 수 없다. 소스코드 제안만 하는 개발자는 목소리를 낼 수 없는 셈이다. 김용욱 GDG(Google Developer Group)안드로이드코리아 운영자는 “커뮤니티에선 코드 줄바꿈이나 들여쓰기, 오타 수정, 버그 보고처럼 어지러운 코드를 정리해주는 사람이 필요하다”이라며 “조금 귀찮아 보이고 쉬운 일처럼 보이지만 개발자에게 분명 도움이 주는 일”이라고 설명했다. 또 그는 “커뮤니티는 그러한 귀찮은 일을  도맡아 주는 사람을 높이 평가하고, 그런 사람 말에 귀 기울인다”라고 덧붙였다.

여성개발자모임터 회장이자 빅데이터 오픈소스에 기여한 전수현 개발자는 “코드를 수정하지 않아도 사용자 포럼에  오류만 보고해도 커뮤니티 안에서 이름을 알릴 수 있다”라며 “커뮤니티 회원은 해당 오픈소스에 얼마나 애정을 갖고 오픈소스에 대해 잘 알고 있는지 중요하게 여긴다”라고 설명했다. 또 그는 “적어도 6개월에서 1년 이상 오픈소스에 관심을 둬야 해당 오픈소스 구조와 커뮤니티 생태계를 느낄 수 있을 것”이라고 말했다.

오픈소스 기여=실력 향상

많은 개발자가 오픈소스 커미터를 꿈꾸기도 한다. 전세계에서 함께 사용하는 소프트웨어에 내 아이디어가 들어가는 건 멋진 일이다. 한국 타이타늄 사용자 모임 운영자인 이종은 인디개발자는 “학교에서 프로그래밍 문법을 잘 배우는 것도 필요하지만, 현업에서 쓰는 오픈소스를 미리 접한다면 그 실력이 엄청나게 늘 수 있다”라며 “글을 많이 읽어야  글을 잘 쓸 수 있는 것처럼, 잘 정제된 코드만 봐도 실력 향상에 큰 도움이 된다”라고 조언했다.

전수현 개발자는 “오픈소스 커뮤니티에서 정한 규칙에 따라 작업을 하면서 실제 현장에서 어떻게 협업하는지 배울 수 있다”라며 “이런 건 학교에서 배울 수 없는 만큼, 초보 개발자에게 좋은 경험이 된다”라고 설명했다.

opensource_start_02

 ▲전수현 개발자가 제안하는 오픈소스 기여의 장점(출처 : 2014년 5월24일 여성개발자모임터 행사 발표)

■ 1단계 : 관심 분야 선택하기

오픈소스에 기여하는 건 자발적인 봉사활동이나 취미활동과 비슷하다. 지속가능한 활동을 위해선 억지로 참여하거나 무장정 인기 있는 기술을 따라가선 안 된다. 자신이 무엇에 호기심을 가지고 있는지 먼저 파악하는 게 중요하다. 프로젝트 규모에 상관없이 현재 내가 무엇을 공부하고 싶은지 먼저 정해야 한다.

opensource_start_04

■ 2단계 : 커뮤니티 찾기

관심분야를 정했다면, 이에 대한 정보를 공유하는 커뮤니티를 찾아볼 차례다. 오픈소스 SW는 매일 새로운 업데이트와 새로운 코드가 추가된다. 그러니 책을 통해 오픈소스 SW를 접하기보다 온라인에서 공유되는 살아있는 정보를 보는 것이 좋다. 대부분 질문에 적극적으로 답을 달아준다. 물론 자신이 아는 지식이 있다면 먼저 나서서 공유하는 것이 좋다. 오프라인에서 만남이 있다면 새로운 선배, 후배, 친구를 만날 수 있는 기회로 삼을 수 있다. 커뮤니티는 공식 웹사이트, 페이스북, 구글플러스 등을 두루 둘러보면 찾을 수 있다.

전수현 개발자는 관심분야와 언어를 조합해 구글에 검색하는 방법을 권장했다. 예를 들어 빅데이터와 오픈소스에 관심 있고 자바 언어를 할 수 있다면 ‘빅데이터 자바’로 검색하는 식이다. 네이버 개발자센터의 오픈소스 프로젝트 메뉴구글 코드 저장소에 가면 종류별로 구분돼 있는 오픈소스 커뮤니티를 찾을 수 있다.

종류별 오픈소스 커뮤니티를 볼 수 있는 웹사이트

김용욱 개발자는 “현재 활발히 개발 중인 오픈소스를 선택하라”라고 조언했다. 일부 오픈소스 프로젝트는 유행에 뒤처져 도태되거나 핵심 개발자가 더 이상 지원하지 않아 중단되기도 한다. 따라서 6개월 이상 아무런 변화 없는 커뮤니티보다는 지속적인 활동이 있는 커뮤니티를 찾는 게 바람직하다.

■ 3단계 : 문서 접하기

문서화 작업은 한국 개발자에게 적합한 기여 방법이다. 오픈소스 프로젝트는 대부분 영문으로 작업되기 때문에 한글화 작업은 한국인 개발자에게 높은 접근성을 제공한다. 도창욱 GDG 웹테크 운영자는 “유명한 오픈소스 같은 경우 컨트리뷰터가 되기 위한 경쟁이 치열하다”라며 “초급 개발자라면 문서화 작업을 통해 오픈소스 기여도를 높이고 공부도 함께할 수 있다”라고 설명했다.

opensource_start_03_re

 ▲코딩을 하지 않고도 오픈소스에 기여하는 방법은 많다. (출처 : GDG 코리아 데브페스트 슬라이드 링크)

문서화 작업은 커뮤티니마다 다르게 진행된다. 어떤 곳은 문서화 작업만 하는 전문 웹사이트를 제공하고, 어떤 곳은 소스 저장공간 내 폴더에 문서를 저장한다. 언어별 번역 메뉴를 편리하게 제공하는 곳도 있다. 따라서 문서화 및 번역 작업을 하려면, 해당 커뮤니티와 소통을 미리 하면 좋다. 이미 일부 번역된 내용이 있을 수 있고, 작업 방식에 대해서도 공유할 수 있기 때문이다. 대개는 프레임워크나 라이브러리 부분에서 한글화 작업이 부족하다.

문서화 및 번역 작업을 생각하면 겁부터 날 수도 있다. 영어 때문이다. 하지만 실제 오픈소스 프로젝트에서 필요한 영어 수준은 그리 높지 않다. 번역도 대부분 공동 작업으로 이뤄지기 때문에 여러 사람들과 함께 물어가면서 진행한다. 도창욱 개발자는 “최근 애플이 내놓은 스위프트 언어 문서도 여러 사람이 공동 번역을 하며 빨리 초벌 번역을 끝낼 수 있었다”라며 “영어 실력은 중요하지 않고, 관심만 있다면 누구나 참여할 수 있다”라고 설명했다.

문서화 작업이 체계적인 오픈소스 커뮤니티

■ 4단계 : 써보기

과감한 개발자라면 오픈소스 SW를 직접 써볼 수 있다. 직접 코드를 들여다보고 오류를 제보하거나 주석을 고칠 수도 있다. 실제 많은 오픈소스 기여자들이 오타 수정 작업으로 오픈소스 세계에 입문하곤 한다. 특히 유명한 오픈소스 프로젝트일 경우 코드 양이 길어지면서 주석 양도 많아져 이를 확인할 사람이 필요하다. 전수현 개발자는 “리눅스 커널 오픈소스 커뮤니티에선 주석 오타 수정만으로 인기 커미터가 된 사람이 있을 정도”라며 “버그 보고나 주석 수정은 그만큼 코드를 많이 들여다 봐야 하기에, 프로젝트에 애정을 가진 사람이 할 수 있는 일”라고 설명했다.

코드 수정에 도전할 수도 있다. 특히 에러가 아닌 워닝(Warning) 단계의 코드에 관심을 둘 수도 있다. 김용욱 개발자는 “최근 컴파일러 기술이 발전하면서 이전에 잡히지 않았던 사소한 오류가 워닝으로 표시되곤 한다”라며 “이 부분을 깔끔히 고쳐주는 사람도 커뮤니티에 필요하다”라고 설명했다.

■ 5단계 : 깃허브 배우기

오픈소스 프로젝트는 전세계에 흩어져 있는 개발자들을 모아 작업한다. 따라서 협업도구를 이용해야 하는데, 요즘엔 ‘깃허브‘가 인기다. 깃허브는 웹을 통해 오픈소스 운동을 확산하는 데 큰 도움을 주기도 했다.  김용욱 개발자는 “이전에는 e메일로 파일을 주고받으며 소스코드를 수정했다”라며 “이제 깃허브 같은 쉬운 도구 덕분에 누구나 편하게 오픈소스에 기여할 수 있게 됐다”라고 설명했다.

‘은 소스코드 관리에 쓰는 협업 도구다. 깃허브는 깃에 소셜 기능을 더한 서비스다. 깃허브는 내 코드와 다른 사람의 코드를 합치거나 비교할 수 있게 도와준다. 관리자는 여러 사람의 코드 중 일부를 합쳐가면서 완성본을 만들어간다. 깃은 홈페이지를 통해 무료로 내려받을 수 있고, 깃허브와도 연동된다. 깃허브엔 다른 개발자 코드 밑에 덧글을 달거나 메시지를 주고 받는 기능이 들어 있다. 이런 소통 기능을 활용해, 해외에선 깃허브에 저장된 프로그래밍 기록을 구직활동에 적극 활용하기도 한다.

깃을 배울 수 있는 홈페이지

 

opensource_start_04_Github_logo

 

j.lee.reporter@gmail.com

오픈소스 기술, 프로그래머의 삶 그리고 에듀테크 분야에 관심이 많습니다. 작은 변화라도 실행하고 노력하려는 사람들을 응원하고, 그러한 분들의 이야기를 더 많이 나누고 싶습니다 :)