과거 오픈소스 친화 기업이라고 하면, 개발자들은 보통 구글을 먼저 떠올렸습니다. 하지만 최근 구글 못지않게 오픈소스 기술에 투자하는 기업이 나타났습니다. 바로 페이스북입니다. 페이스북은 2013년부터 본격적으로 내부 오픈소스 기술을 적극적으로 공개하고, 이와 관련된 커뮤니티를 키우고 있습니다.
처음에는 웹이나 모바일 관련된 기술이 많았지만, 최근에는 네트워크, 카메라, 인프라 장비에서 머신러닝 기술까지, 그 종류도 다채로워졌습니다. 여기에는 기술 공유 가치 외에도 기술 주도권을 흔드는 프로젝트도 있어 화제를 모으기도 했는데요. 오늘은 페이스북의 오픈소스 정책에 대해 알아보겠습니다.
오픈소스 개발이 페이스북 기술 개발이다
페이스북은 오픈소스 기술을 판매하면서 수익을 내는 기업이 아닙니다. 아시다시피 16억 사용자가 이용하는 글로벌 소셜 네트워크 서비스를 운영하고, 인스타그램, 왓츠앱 같은 여러 서비스를 제공하고 있죠. 그렇다면 페이스북은 도대체 왜 오픈소스 기술에 투자하는 것일까요? 페이스북에서 오픈소스 기술을 총괄했던 제임스 피어스(James Pearce)는 이와 관련해 3가지 이유로 정리해 밝힌 바 있습니다.
첫 번째로 사회공헌이 있습니다. 일반적으로 웹 서비스를 만들려면 오픈소스 기술을 반드시 사용하게 됩니다. 페이스북도 마찬가지였죠. 페이스북 초기 개발자들은 오픈소스 기술이던 리눅스, 아파치 서버, MySQL, PHP 등을 활용해 페이스북 기술을 만들었습니다. 제임스 피어스는 2015년 벤처비트 인터뷰를 통해 “페이스북은 항상 오픈소스 기술로 얻은 혜택을 다시 돌려줘야 한다는 도덕적 의무를 지녀왔다”라고 밝혔습니다.
두 번째 이유로는 혁신을 들었습니다. 페이스북 내부에서는 동종의 산업군이 함께 성장할 때 페이스북이 훨씬 더 성공할 수 있다고 믿고 있습니다. 혼자서 성장해버리면 페이스북이 가진 문제는 페이스북만 경험하고 스스로 해결해야겠죠. 하지만 비슷한 규모나 성과를 내는 기업들이 많다면 그들과 함께 문제를 공유하고 해결방법도 훨씬 더 다양해질 수 있습니다.
페이스북은 이러한 이유로 내부에 좋은 기술을 외부에 공유하면서 산업이 함께 성장하고 이로 인해 혁신을 도모할 수 있다고 믿고 있습니다. 예를 들어, 페이스북이 공개한 오픈소스 기술 중에 ‘리액트(React)’라는 자바스크립트 라이브러리가 있습니다. 이 기술은 원래 인스타그램과 페이스북 웹 페이지에서 활용되고 있었죠.
제임스 피어스는 “2013년 리액트를 커뮤니티에 공개하고 함께 개발하면서, 모던 자바스크립트 생태계 자체를 발전시킬 수 있었다”라며 “공유를 통해 이와 관련된 전체 산업이 한 발짝 더 성장하는 데 힘을 보탤 수 있다는 걸 알았다”라고 밝혔는데요. 실제로 그렇습니다. 현재 리액트는 페이스북의 가장 인기 있는 오픈소스 기술이 되었고, 자바스크립트 기술뿐만 아니라 웹과 모바일 개발자에게 큰 영감을 주는 기술로 자리 잡았습니다.
세 번째, 사업에 긍정적 영향을 미치기 때문입니다. 여기에는 다양한 의미가 있습니다. 먼저, 서비스 품질이 좋아집니다. 페이스북에서 근무하는 개발자는 적게는 수십 명, 많아도 수백 명일 것입니다. 하지만 오픈소스 기술은 누구나 참여할 수 있으므로 그 대상은 전 세계 개발자들로 확장되죠. 2016년만 해도 페이스북 오픈소스에 기여한 외부 개발자 수는 2,700명이 넘었다고 하죠.
수백 명이 개발하는 기술과 수천 명이 개발하는 기술. 둘 중에 어떤 기술이 더 좋아질까요? 페이스북은 오픈소스 기술로 인해 더 좋은 코드가 작성되고, 궁극적으로 페이스북 서비스도 훨씬 더 좋아질 수 있을 거라고 보고 있습니다. 에러도 줄어들고, 서비스도 빨라지고, 디자인도 더 좋아지는 것이지요. 또한, 페이스북의 오픈소스 기술이 좋아질수록 내부 개발자들의 자부심도 더 높아지게 됩니다. 그러면 대외적으로 페이스북에는 좋은 개발자가 많은 곳이라는 인상을 풍길 수 있죠.
이러한 문화가 퍼지면 더 좋은 경력 개발자, 신입 개발자들이 지원이 많아질 테니 인재를 확보하는데 이점을 가져갈 수 있습니다. 실제로 제임스 피어스는 이런 이야기도 했습니다.
“페이스북의 오픈소스 활동은 이타주의로 만들어진 것만은 아니다. 그 뒤에는 비즈니스적인 관점이 녹아있다. (It’s not all altruism, there’s solid business sense behind this)”
페이스북의 인기 오픈소스 프로젝트들
페이스북은 매년 연말 오픈소스 성과를 인포그래픽으로 정리해 보여주고 있습니다. 가장 최근인 2016년 데이터를 한번 살펴볼까요? 현재 페이스북에서 외부로 공개한 오픈소스 프로젝트는 약 400여 개로, 2016년만 해도 77개가 있었습니다. 이 수치는 매해 점점 증가하고 있습니다. 오픈소스 기술의 인기를 측정할 수 있는 수치는 깃허브 데이터가 있는데요.
깃허브에서는 오픈소스를 복사한 것을 ‘포크(fork)’, 즐겨찾기한 것을 ‘스타(star)’, 소스코드에 기여한 것을 ‘커밋(commit)’, ‘좋아요’를 누른 것을 ‘팔로우(follow)’라고 이름 짓고, 이와 관련된 수치를 공개하고 있습니다.
페이스북 오픈소스 기술에서 가장 많은 팔로우 수를 가진 것은 ‘리액트’와 ‘리액트 네이티브’였습니다. 리액트는 사용자 인터페이스를 만들기 위한 자바스크립트 라이브러리 이고, 리액트 네이티브는 네이티브 모바일 앱을 만들기 위한 프레임워크입니다.
● 리액트
https://facebook.github.io/react/
● 리액트 네이티브
https://facebook.github.io/react-native/
리액트 앱을 쉽게 따라서 만들 수 있는 크리에이트 리액트 앱(Create React App) 역시 높은 관심을 받았죠. 여기에 VR과 관련된 ‘리액트 VR’이란 기술도 2017년 출시됐습니다. 또한, 아래와 같은 개발 도구, PHP 관련 언어, 모바일 기술도 크게 관심을 받았습니다.
[인기 개발도구, PHP 관련 언어, 모바일 기술]
● 인퍼(Infer): 페이스북 모바일 앱에서 사용하고 있는 정적분석기(static analyzer). 널 포인터 예외처리, 메모리 누수같은 충돌이나 성능저하를 야기하는 오류들을 잡아준다.https://code.facebook.com/projects/449931035189038/infer/
● HHVM: 오픈소스 가상머신으로 PHP로 만든 애플리케이션 성능을 높일 때 사용된다. https://code.facebook.com/projects/564433143613123/hhvm/
● Flux(플럭스): 유저 인터페이스를 제작하기 위한 애플리케이션 아키텍처. https://code.facebook.com/projects/1572329279676947/flux/
● Pop(팝): iOS, OS X, tvOS 앱 등을 개발할 때 활용하는 애니메이션 엔진. 페이스북이 만든 모바일 앱 ‘페이퍼’를 만들 때 다양한 효과를 주려고 개발했다. https://github.com/facebook/pop
● GraphQL(그래프QL): 쿼리 언어이자 엔진. 여러 백엔드 서비스에서 활용할 수 있으며, 깃허브, 아폴로(Apollo)라는 기업도 그래프QL을 이용하고 있다고 한다. https://code.facebook.com/projects/250682645321805/graphql/
● presto(프레스토): 오픈소스 분산 SQL 쿼리 엔진. 페타데이터 규모의 쿼리까지 빠르게 분석해준다. 아마존, 테라데이타(Teradata) 등에서도 이용하고 있다. https://code.facebook.com/projects/552007124892407/presto/
● Nuclide(뉴클라이드): 웹과 모바일 개발을 위한 IDE. https://code.facebook.com/projects/1021334114569758/nuclide/
● Buck(벅): 빌드시스템으로 작고 재사용이 쉬운 모듈을 만들 수 있게 도와준다. https://code.facebook.com/projects/484285361686998/buck/
● 페이스북 오픈소스 프로젝트 전체보기:https://code.facebook.com/projects
디자인, 네트워크 장비 등 이색 오픈소스 프로젝트
오픈소스 기술은 일반적으로 소프트웨어에 집중됐지만, 페이스북은 디자인, 하드웨어 관련 기술도 많이 공개했습니다. 예를 들어, 오픈소스 프로토타입 도구 ‘오리가미(http://origami.design/)’가 있습니다. 프로토타입 도구란 서비스의 개념을 간단히 표현할 수 있는 툴로 포토샵 같은 그래픽 프로그램보다 훨씬 단순한 게 특징입니다. 여기에 내부에서 사용하는 디자인 자료들도 무료로 공개했습니다. 예를 들어, 소리 파일, 아이폰 사진들 등을 다양한 파일 형태로 공개하고 있습니다.
● 페이스북 오픈 디자인 자료 전체보기
http://facebook.design/
하드웨어는 더욱 독특합니다. 페이스북은 인터넷을 기반으로 하기 때문에, 네트워크나 데이터센터환경에 따라 서비스 질이 달라집니다. 이러한 가운데 페이스북은 자신이 필요한 장비와 하드웨어를 직접 만들겠다고 선언하기도 했습니다. 대표적인 것이 ‘오픈 컴퓨트 프로젝트(Open Compute Project, OCP, http://www.opencompute.org/)’입니다. OCP에선 여러 기업과 협업해 개방형 인프라 기술 및 네트워크 기술을 만들고 있습니다.
재미있는 사실은 많은 대형 기업들이 OCP를 긴장하면서 보고 있다는 점입니다. 서버, 네트워크 장비, 스토리지 등은 기술이 워낙 복잡하고, 개발 비용도 많이 들기 때문에 누구나 쉽게 만들 수 있는 기술은 아닙니다. 그동안은 시스코, IBM, HP, 통신사 등 대형 기업들이 주로 생태계를 이끌고, 기술 표준을 만들어냈죠. 따라서 이러한 기술은 외부에 공개되지 않고, 고객들은 대형 기업들이 만들어주는 기술에 맞추어 서비스를 개발했습니다. 페이스북은 이러한 관행을 뒤엎고, 스스로 필요한 하드웨어를 직접 만드는 셈입니다.
기술력이 좋고, 자본도 많고, 다양한 인재를 가진 페이스북이라서 가능한 시도라고 볼 수 있겠죠. 만약 페이스북이 만드는 하드웨어가 만약 크게 성장한다면 기존 대형 기업들은 큰 타격을 입을 수 있습니다. 물론 아직 눈에 띄는 성과를 거둔 것은 아니고 굉장히 초기 단계입니다. 하지만 페이스북이 만든 기술이라는 점에서 여전히 기업들이 관심을 갖고 협업을 진행하고 있습니다.
이외에도 360도 카메라 시스템인 ‘서라운드360’나 페이스북 인공지능 연구소에서 활용했던 라이브러리 등도 오픈소스로 공개되고 있습니다.
● 서라운드360
https://code.facebook.com/posts/265413023819735/surround-360-is-now-open-source/
● 라이브러리
https://github.com/facebookresearch
전 세계의 수많은 개발자가 함께 만드는 오픈소스의 힘. 페이스북은 이 힘을 이용해 기술 주도권을 갖고 영향력을 발휘하고 있습니다. 동시에, 사회공헌과 혁신을 이뤄나가며 더 나은 프로젝트를 만들어가는 모습이 인상적인데요. 다음 시간에는 마이크로소프트의 오픈소스 활용을 소개해 드리도록 하겠습니다.
글 | 이지현 | 블로터 기자
[관련 글 보기]
- 미국은 왜 오픈소스 정부를 꿈꾸는가?
- 3대 오픈소스 IDE, 그들은 왜 오픈소스가 되었나?
- 오픈소스 개발자의 단짝 친구 깃(Git) 그리고 깃허브(GitHub)
- 게임 속에 깊게 파고든 오픈소스 기술
- ‘페이스북은 필요한 기술을 직접 만든다’ 오픈소스로!