[기고]오픈소스 소프트웨어와 라이선스의 이해(1)

박준석 엘에스웨어 FOSS 사업본부 이사(공학박사)

스마트폰, TV, IPTV 셋톱박스, 냉장고, 세탁기, 전기밥솥…사람들이 일상을 살며 거의 매일 접하는 기기다. 이러한 기기는 세계 수많은 기업의 치열한 경쟁을 통해 소비자에게 전달되고 있다. 소비자는 각 제품을 비교해 자신의 입맛에 맞는 제품을 선택, 사용한다. 그러나 우리가 사용하는 이러한 기기를 제조할 때 제작사가 모든 것을 직접 개발하는 것은 아니다. 하청업체에 개발용역을 줘 개발한다는 그런 얘기가 아니다. 일부는 직접 개발하지만 많은 부분을 다른 사람이 이미 개발해 놓은 코드를 가져다 쓰는 경우가 대부분이다. 어떤 제품은 전체 제품 크기 중 직접 개발한 부분의 비율이 채 5%가 안되는 경우도 있다.

스마트폰을 예로 들어보자. 스마트폰도 하드웨어와 소프트웨어를 결합해 제작한다. 소프트웨어는 일반적으로 기기를 구동하는 운용체계(OS)와 다양한 시스템소프트웨어, 애플리케이션으로 구성된다. 삼성전자 갤럭시 시리즈도 이 구조를 갖고 있다. 이 갤럭시 시리즈를 우리는 흔히 안드로이드폰이라고 부른다. 안드로이드는 OS가 포함된 모바일에 최적화된 플랫폼이다. 갤럭시 시리즈에는 안드로이드가 플랫폼으로 사용되고 여기에 다양한 앱이 포함돼 출시되고 있다. 안드로이드폰은 대표적 오픈소스 OS인 리눅스 커널을 기반으로 구글이 개발한 모바일 플랫폼이다. 이 안드로이드 플랫폼은 많은 스마트폰제조사가 무료로 사용한다. 비용이 무료일 뿐만 아니라 플랫폼 전체 소스코드가 인터넷에 올라가 있고 사용규정만 지킨다면 누구나 자유롭게 이용 가능하다. 이처럼 소스코드가 공개되고 일정한 규칙만 지키면 누구나 자유롭게 사용할 수 있는 소프트웨어를 오픈소스소프트웨어라고 부른다.

앞서 언급한 TV, 셋톱박스, 냉장고 등 이 모든 장치에도 사실상 오픈소스소프트웨어가 탑재돼 출시된다. 2016년 이세돌 9단과 세기의 대결을 펼친 인공지능 알파고의 핵심코드도 역시 오픈소스 소프트웨어다. 알파고의 핵심 소스코드는 인터넷에 올라가 있고 세계 수많은 기업, 연구소, 대학 등에서 다운로드 받아 연구용이나 교육용으로, 실제 제품에 탑재하기 위해 사용하고 있다는 얘기다. 범위를 넓혀보면 자동차, 비행기, 인공위성에도 오픈소스 소프트웨어를 사용하고 있다. 결론적으로 우리가 보고 듣고 사용하고 있는 대부분의 기기는 오픈소스 소프트웨어를 기반으로 개발되고 있다.

그런데 오픈소스 소프트웨어라고해서 아무렇게나 쓸 수 있는 것은 아니고 앞서 언급했듯이 일정 규칙을 준수하며 사용해야 한다. 소스코드를 공개해 누구나 무료로 사용할 수 있지만 오픈소스소프트웨어도 저작권으로 보호되고 있기 때문이다. 즉 이용 규칙을 지키지 않고 사용하면 저작권 위반이 된다. 저작권을 위반하면 법적으로 소송을 당할 수 있다. 오픈소스소프트웨어를 사용해 제품을 개발했음에도 규정을 지키지 않아 법적 소송을 당한 사례도 있다.

오픈소스 소프트웨어를 법적 소송으로부터 자유롭게, 효율적으로 이용하기 위해서는 어떻게 관리해야 할까? 컴퓨터 시스템에서 동작하는 프로그램을 이용하기 위해서는 해당 프로그램 저작권자에게 일정한 대가를 제공하고 사용하는 것이 일반적이다. 세계 많은 사람이 사용하고 있는 각종 프로그램은 누군가 많은 시간을 투자하여 만들어낸 지식재산이기 때문이다. 그래서 보통 해당 저작권자에게 일정 비용을 지불하고 라이선스를 부여받아 일정 규칙을 준수하며 프로그램을 사용한다.

오픈소스 소프트웨어는 일정 규칙만 지키면 누구나 자유롭게 사용이 가능한데 일정 규칙을 명시해 놓은 문서가 라이선스다. 즉 오픈소스 소프트웨어를 적법하게 사용하기 위해서는 라이선스를 준수해야 하며 이를 어기면 저작권을 위반하게 된다. 오픈소스 소프트웨어는 각각 별개 라이선스를 갖고 있다. 오픈소스 진영을 리딩하는 자유소프트웨어재단(FSF)이 배포한 'GNU 일반 공중 라이선스(GPL)', 아파치소프트웨어재단(ASF)의 아파치라이선스 등이 대표적 오픈소스 라이선스다. 이외에도 MIT, BSD, LGPL, MPL, EPL 등 오픈소스 라이선스 종류는 약 2500여종에 이른다.

오픈소스 라이선스들은 해당 오픈소스를 사용하기 위한 조건으로 다양한 의무조항들을 제시한다. 어떤 라이선스는 2~3개 정도 간단한 조항만을, 어떤 라이선스는 수십여 조항에 이르는 방대한 조건을 담고 있다.

오픈소스 소프트웨어를 적법하게 사용하기 위해 라이선스를 준수하는 것이 사실상 쉽지 않다는 것이 문제다. 예를 들어 GPL은 GPL로 배포되는 코드를 개발하고 있는 코드에 결합할 경우 GPL 코드 뿐 아니라 개발한 부분까지도 모두 수취자에게 배포할 것을 요구하고 있다. 당연히 기업 입장에서는 큰 리스크가 발생할 수 있다. 여기에 저작권도 고지해야 하고 GPL 라이선스도 함께 배포해야 하고 특허 관련 조항도 지켜야 한다. 그런데 오픈소스를 사용하여 개발하면서 라이선스를 구석구석 확실하게 체크하고 사용하는가를 들여다보면 대체적으로 그렇지 못하다. 혹여 들여다보더라도 내용을 이해하기가 어렵다. 법률가는 기술에 대한 이해도가, 프로그래머는 법률에 대한 이해도가 부족할 수밖에 없다. 때문에 오픈소스를 사용하면 어디까지 공개해야하고 어디까지 고지해야 하는지 범위나 각종 제반사항을 제대로 이해하기는 말처럼 쉽지가 않다.

결론적으로 오픈소스는 누구나 자유롭게 사용할 수 있다고 얘기하지만 사실상 일정 조건을 지켜야 하므로 무제한 자유롭게 사용할 수 있는 것은 아니다. 오픈소스를 법적으로 자유롭게 사용하기 위해서는 해당 라이선스가 요구하는 조건을 준수하며 사용해야 한다는 점을 인식하고 이를 준수하기 위한 노력을 적극적으로 수행해야 한다.