구글이 오픈소스를 선택한 이유는?

일반입력 :2008/12/14 16:51

Chris Duckett(Builder AU)=정리 박효정 기자

‘검색황제’ 구글은 웹브라우저 ‘구글 크롬’과 모바일 OS ‘안드로이드’를 오픈소스로 개발하고 있으며, 실제 사용하는 소프트웨어도 오픈소스를 선호한다. 그 이유는 무엇일까.구글의 크리스 디보나 오픈소스 프로그램 매니저에 따르면, 그 이유는 “벤더와의 관계에서 보다 유리해지고 외부업체에 개발을 의존하지 않아 자신의 운명을 스스로 제어할 수 있기 때문”이다.씨넷뉴스는 디보나 매니저에게 구글은 왜 오픈소스를 사용하는 것이고, 또 어떻게 자사 소프트웨어(SW)를 오픈소스화하고 있는지 얘기를 들었다.구글이 오픈소스로 “스스로의 운명을 제어하고 있다”는 말은 무슨 뜻인가. 기본적으로 구글은 오픈소스를 사용하고 있다. 상용 SW의 가장 큰 문제는 그것을 어떻게 할지 컨트롤할 수 없다는 것이다.상용 SW는 사용에 까다로운 조건이 따른다. 그것을 사용하는 장소, 출하 방법, 혹은 출하의 허용 여부, 웹에서의 사용법, 웹에서의 사용 허용 여부, 웹 사이트를 누구에게 보여줄 수 있는지 등이 정해져 있다. 하지만 오픈소스 SW에는 그러한 종류의 제약이 없다. 특히 기업에겐 오픈소스 SW 이용은 컴퓨터를 이용해 원하는 것을 하기 위한 훌륭한 시작 지점이다. 그리고 그것이 우리가 하고 있는 것이다.구글의 라이선스 담당자로서 상용 SW 라이선스 검토에 많은 시간을 할애하고 있나. 말 그대로다. 약간의 과장을 보태면 그건 몸서리처지는 작업이다. 상용 SW가 규정하는 제약을 추적하는 것이 어렵기 때문이다. 이용자수 제한이나 클라이언트 접속수 제한 외에도 쓰레드 제한이나 머신 및 CPU 수 제한에 데이터 스토리지까지도 제한하는 경우도 있다. 이 모든 것이 우리에게는 곤란한 문제다.우리의 데이터센터는 터무니없이 거대한데 실행하는 코어 수에 따라 비용이 발생한다는 것은 우리로서는 매우 위험하다.우리는 확실히 일부에서 상용 라이선스 SW를 사용하고 있지만 그것을 최소화하기 위해 노력하고 있다.이 라이선스 추적 문제는 구글로서는 어느 정도 중요한 문제인가. 구글이 상호적 라이선스 계약을 좋아하지 않는 것은 바로 이것이 이유인가. GPL이나 LGPL 제품을 출하했을 경우, 항상 사이트 상태를 추적해야 한다.구글은 오픈소스 SW의 이용을 추적하는 SW를 사용하기 때문에 그 작업이 어려운 건 아니지만, 시간이 많이 걸린다. 그것이 우리에게 그 작업이 중요한 이유다.우리는 상호적 라이선스 아래에서 대량의 SW를 릴리스 하고 있다. 단지 아파치나 BSD 스타일의 라이선스로 SW를 릴리스 하는 것이 보다 간단하다.구글의 SW가 오픈소스로서 릴리스될 단계는 어떤 순서로 진행되나. 우선 담당 부서 사람들이 우리에게 “이 구글 SW를 릴리스 하고 싶다”고 전한다. 그때 그들이 개발 사이클의 어느 단계에 있는지에 따라 작업이 간단해질지 복잡해질지 결정된다.대부분의 릴리스에서는, 특히 작은 경우에는 릴리스 허가를 내는 데 걸리는 시간은 3~4일로, 우리는 그 사이에 법적 검토나 그 외 작업을 한다. 그러니까 구글에서 SW를 릴리스 하는 것은 매우 간단하다. 패치는 더 간단하다. 우리는 보통 패치는 1시간 이내에 릴리스 허가를 내고 있다. 새로운 프로젝트에 대해서는 허가를 내는 데 2~3일이 걸리지만, ‘안드로이드’나 ‘크롬’과 같이 큰 프로젝트는 더 복잡하다. SW가 거대하고 많은 컴포넌트를 갖고 있기 때문이다. 그러한 것들은 일정한 인프라를 제공해야 한다.구글이 소스포지(SourceForge)가 있는데도 또다른 오픈소스 SW 개발 사이트 ‘구글 코드’를 만든 이유는 무엇인가. 나는 소스포지를 훌륭하다고 생각하며, 소스포지가 시작됐을 당시 VA리눅스시스템에서 일하고 있었다.그러나 하나의 기업이 그토록 큰 오픈소스 인프라를 가지고 있다는 것은 권력이라고 생각한다. 그래서 내가 ‘백업’ 역할을 해야겠다고 생각한 것이다. 사람들은 소스포지든 구글코드든 무엇이든지 이용해 개발할 수 있다. 아파치 라이선스가 구글의 디폴트 라이선스인가. 그렇다. 아파치 라이선스 이외의 것이 사용되는 것은 어떤 경우인가. 보통은 의존관계(dependencies)의 문제나 그 SW를 도입하길 원하는 프로젝트가 다른 라이선스를 사용하고 있는 경우에 다른 라이선스를 사용한다. libjingle 프로젝트를 릴리스 했을 때는, 이 프로젝트가 GPL과 BSD의 라이선스를 사용하고 있었기 때문에 우리는 아파치를 사용하지 못했다. 당시엔 GPL에서는 아파치 라이선스의 SW를 넣을 수 없었다. 라이선스를 선택할 땐 가능한한 호환성을 유지하려고 한다. CPL, EPL, BSD, GPL v2, GPL v3, 그리고 그 외 다양한 라이선스로 SW를 릴리스 하고 있다. @