brunch

You can make anything
by writing

C.S.Lewis

by 이준원 May 11. 2018

Hello 오픈소스

오픈소스란?


Intro


“이 고민 거리는 누군가는 한번쯤 생각해 봤을거야!”, 하고 구글링으로 검색을 하기 시작한 아침이였다. 

검색만 하면 나오게 해주는 구글도 감사하지만, 같은 고민을 인터넷에 올려준 분도 감사하게 느껴지는 시작이였다.  

돌이켜 보면, 나는 아래와 같은 방법은 문제를 다루었던것 같다. 

주어진 문제를 풀어보자 (중,고교 시절)

문제를 정의해보고 풀어보자 (대학생 시절)

문제를 정의해서 풀어보고, 풀이를 공유해보자 (대학원생, 현재)


여기서, 세번째 방법인 “문제 정의후 풀고, 공유”가 오픈소스의 철학과도 맞닿아 있다고 볼수 있다. 

풀이 공유 방법도 아래와 같이 진화해 갔다. 

대학원생 시절: 논문으로 공유

개발자 시절: 오픈소스로 공유, 글로 공유 


“공유” 정신중에 오늘은 오픈소스에 대해서 얘기해보고자 한다. 

현재 우리가 쓰는 많은 소프트웨어 제품(앱, OS) 등은 오픈소스의 도움이 없었다면 현재 이르기 힘들었을것 같다. 

IT쟁이들이라면, 구글의 텐서 플로우, 페이스북의 리액트라는 것을 한번쯤을 들어봤을 것이다. 이것들 모두 오픈소스 프로젝트이다. 



오픈소스 뭐?

일단, 오픈소스가 뭐인가?

다양한 정의들이 있지만, 아주 쉽게 생각하면, 이미 만들어진 공짜 툴이라고 생각하면 쉽게 이해 할수 있다. 

더 쉽게 생각하면,,, 못을 박아야 하는데, 어딘가 공짜 망치가 있어서 이걸 가져다 쓴다고 생각하면 되겠다. 



아니 왜?

그럼 여기서, 생기는 당연한 질문이 있다. 

아니, 망치를 왜 공짜로 제공해줘?


물론 기업의 입장에서는 이렇게 유용한 제품을, 특허를 걸고 상품을 만들어서 팔면 더 이득이 되지 않은가? 라고 생각할수 있다. 


하지만, 이렇게도 생각해 볼수가 있겠다. 

망치에 회사 로고가 박혀있음

망치를 공짜로 가져다 쓰다가, 마음대로 개선할수 있도록 함


위와 같이 할경우 생기는 장점이 있다. 

첫번째, 회사로고가 박혀 있으니, 입소문 타서 많이 가져다 쓰면 마케팅 비용 줌

두번째, 외부 사람들이 마음대로 유지 및 보수를 하게 하므로, 망치를 전담으로 관리하는 사람에 대한 인건비가 줄수 있음

세번째, 특허 전쟁으로 인한 어마어마한 자원(시간 및 돈)을 절약 할수 있다

네번째, 최고의 망치(묠니르... 아 아니.. )를 전세계 사람들이 쓰도록 하는데 이바지 함



단점도 있겠지만, 장점이 단점들을 커버해 줄수 있을것이라는 개인적인 의견이다. 

오픈소스를 사용하는 입장에서도, 새로운 도구를 다시 만들필요 없이 오픈소소를 사용한다면 시간도 절약이 되고, 개선 방향에 대해서도 더 고민해 볼수 있는 여지가 생긴다. 


임하는 태도

그렇다면, 이런 오픈소스를 임하는 태도는?

당연히, 즐겁고 감사한 마음으로 사용하면 되겠다. 

그 외에도 사실 중요한 룰같은 것이 있다. 


오픈소스 사용에 있어서, 해당 오픈소스를 제품에 명시하는것이 기본적인 관행이다. 

예를 들면, 집에 강아지 집을 만드느라 xx망치를 공짜로 가져다가 쓴다고 했을때, 

강아지 집 옆에 “이 강아지 집은 못질할때, xx망치를 사용함”이라고 명시하는 것이다. 

이렇게 하면, 동네 이웃들이 지나가다가 우리집 강아지 집을 보면서 xx망치를 못질 할때 쓰면 되겠다고 생각할 것이다. 


오픈소스 라이센스라는 녀석이 있는데, 위에서 말한 룰이 이에 해당한다. 

룰에 대해서도 아주 간략히 설명을 하자면, 

아주 빡센 룰과 느슨한 룰이 있다. 

빡센 룰: xx망치로 만든 무엇이든지 망치를 제공한 제작자에게 보여줘야 하는 룰

느슨한 룰: xx망치를 제공한 제작자에게 혹여나 나중에 만나고 기분이 좋으면 맥주나 한잔 사주는 룰


특히, 저런 룰 때문에 소프트웨어를 만드는 회사에서는 오픈소스 라이센스를 잘 따져봐야한다. 

그리고, 기본적으로 어떤 오픈소스를 쓰는지 명시하는게 아주 기본중에 기본이다. 


멍카 만들면서 카메라 앱들을 많이 구경했는데, 제대로 표기 안하는 앱도 꾀 있더라는.... (개인앱은 그렇다 치더라도, 회사를 만들어서 앱을 내는 곳도...)

이건 솔직히, 조금 태도에 문제가 있다고 생각이 든다. 



오픈소스 활용 방안


잘 가져다가 쓰기 

구글에서 해결하고 싶은 문제 검색

문제를 이미 풀어 놓은 오픈소스 찾기 

오픈소스를 프로젝트에서 가져다가 쓰기(멍카의 경우 “GPUImage”란 아주 훌륭한 오픈소스를 이용)


개선하기 

오픈소스가 내가 원하는 문제를 모두 해결 못할 때가 있음

추가 기능 혹은 잘못된 점을 수정하기 


새로 하나 만들기 

구글링을 아무리 해도 내가 원하는 오픈소스를 찾을 수 없음(혹은 라이센스 문제가 있음)

일단, 현재 처한 문제를 풀수 있는 오픈소스를 아주 간단히 만들어서 배포 

필요한 사람들이 이제 가져다 쓰고, 개선도 하게 됨 



결론 

요즘 처럼 바쁘게 돌아가는 시대에 언제 밑바닥부터 새롭게 만들수 있겠는가?

이미 만들어진 도구를 다시 잘 가져다가 사용해서 시간을 절약하고, 정... 감사하다면 오픈소스 개선에 힘을 보태어 보자. 


개발자 영역에서는 이런 공유 문화가 많이 발달 되어있다. 서로 가지고 있는 정보를 알려주면서 뿌듯함을 얻는 그런 문화가 팽배?해 있다. (꼭 다 그런건 아니지만 전반적으로.. 제가 느끼기엔)


한마디로 선생님 마인드로 가득차 있다. 어떤 대학 졸업 연사가 그런 말을 했다,

 여러분도 남에게 어떤것에 대한 선생님이 되길 바란다. 


즉, 알고 있는것을 잘 나누라는 것이 요점인듯 했다. 

요즘 유튜브에서 이런 개인 선생님들을 쉽게 찾아 볼수가 있다. 

코딩하는법, 화장하는법, 음식하는법 등등 알려주는 사람으로 꽉차있다. 

나도 누군가의 선생님이 되어보자. ! (유투브, 글, 오픈소스등 무엇이라도.) 


오픈소스님 사랑합니다. 



이미지 출처

unsplahs.com

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari