오픈소스 소프트웨어(OSS)를 정의하는 방법은 다양하지만, 가장 간단하게 핵심적인 특징으로만 정의해보면 "소스 코드의 변경이나 재배포가 자유롭게 인정되는 무료 소프트웨어"라고 할 수 있다. 대표적인 OSS에는 운영 체제인 Linux, 데이터베이스 관리 시스템인 MySQL, 프로그래밍 언어인 Java, Perl, PHP, Python, 웹 브라우저인 Firefox 등이 있으며, 모두 관련 업계에 종사하는 사람들에게는 매우 친숙한 소프트웨어들이다. 최근에는 IT 벤더가 직접 OSS 개발에 참여하는 경우도 많아 소프트웨어 개발에 있어 OSS의 비중은 점점 커지고 있다.

OSS는 무상이면서 고성능이고 신뢰성이 높은 것으로 널리 알려져 있으며, 이러한 이유에서 생각보다 많은 기업이 상용화를 목적으로 OSS를 기반으로 한 소프트웨어를 개발하고 있다. 특히 프로그래밍 언어나 개발 환경 분야에는 우수한 OSS가 많기 때문에 해당 분야의 개발자들에게 OSS는 필수 불가결하다고 해도 과언이 아닐 것이다.

한편, OSS와 달리 소스 코드에 대한 액세스 및 변경이 제한된 소프트웨어를 통칭하여 일반적으로 사유 소프트웨어(Proprietary Software)라고 부른다. 사유 소프트웨어는 일반적인 재산권에 대한 개념을 적용하면 간단히 이해할 수 있다. 즉, 사유 소프트웨어의 소스 코드는 그 소유자의 지식 재산(Intellectual Property)이므로 라이선스 요금을 징수하고 판매된다. 그리고 당연하게도 대부분의 사유 소프트웨어는 관련된 모든 권한을 특정 권리자가 독점하는 소프트웨어이기 때문에 소스 코드를 자유롭게 변경하거나 배포할 수 없다.

OSS의 조건과 대표적인 특징들

OSS는 무료 소프트웨어이지만 이용조건이나 약관이 없는 것은 아니다. OSS 인증을 수행하는 비영리 단체인 The Open Source Initiative(OSI)가 OSS 라이선스를 관리하고 있다. 어떤 소프트웨어가 OSS인지 아닌지 여부는 그 소프트웨어의 라이선스(사용 조건)가 OSI에서 규정한 ‘오픈소스 정의(The Open Source Definition)’를 충족하는지 여부에 따라 결정된다. OSI가 특정 소프트웨어의 라이선스가 오픈소스 정의를 충족하는 것으로 승인하면 그 소프트웨어는 오픈소스로서 공식적으로 인정되고 OSI 인증 마크가 부여된다.

※ OSS 정의(10가지 항목)

1. 재배포를 자유롭게 인정하는 것
2. 소스 코드를 무료로 배포하는 것
3. 파생 소프트웨어의 배포를 허가하는 것
4. 소스 코드의 어느 부분이, 저작자가 작성한 오리지널 코드인지 알 수 있도록 하는 것(저작자 코드의 완전성)
5. 개인과 그룹에 대한 차별을 하지 않는 것
6. 사용 분야에 대한 차별을 하지 않는 것
7. 프로그램에 부수하는 권리는 모든 재배포자에게 평등하게 부여될 것(라이선스의 분배)
8. 특정 제품에만 한정된 라이선스로 하지 않는 것
9. 다른 소프트웨어를 제한하는 라이선스로 하지 않는 것
10. 라이선스는 기술적으로 중립성을 가질 것
※참고 : https://opensource.org/osd

OSS는 누구나 자유롭게 개선, 재배포할 수 있다는 특징이 있다. 따라서 누군가가 소스 코드의 버그를 찾고, 개선하고 수정하는 등의 순환이 전세계에 존재하는 사용자에 의해 이루어진다. 이 특징 때문에 OSS는 사유 소프트웨어에 비해 안정성이 높아지고 저비용으로 고품질의 개발을 할 수 있게 된다.

또한 소스 코드가 공개되어 있어 악성 프로그램으로부터의 공격 가능성이나 취약한 부분 등을 언제든지 확인할 수 있기 때문에 그에 대한 대응이 쉽고 빠르게 가능하다. 사유 소프트웨어는 제공업체의 사정으로 서비스 종료 및 지원 중단과 같은 일이 발생할 수 있으나 OSS는 사용자가 있는 한 유지보수를 계속할 수 있기 때문에 장기간에 걸쳐 안정적으로 이용할 수 있다는 점도 OSS의 특징 중 하나이다.

물론 위와 같은 특징들보다 더 근본적으로, OSS는 라이선스 비용이 무료이므로 통합 비용 절감을 기대할 수 있다. 초기 비용뿐만 아니라 도입 후의 라이선스 관리나 정기적인 유지, 관리 비용 등도 절약할 수 있기 때문에, 사유 소프트웨어 개발과 비교할 때 매우 많은 비용을 절감할 수 있다는 특징이 있다.

OSS 사용시 주의점

이렇듯 OSS를 도입하는 것은 수많은 장점을 가지고 있지만, 아무런 대책이나 준비 없이 OSS를 무작정 도입하는 것은 지양해야 한다. OSS 도입에 있어 주의해야 하는 대표적인 사항들을 정리하면 다음과 같다.

우선 OSS를 도입할 때는 대상이 되는 소프트웨어의 라이선스를 확인하는 것이 가장 중요하다. OSS는 개별 소프트웨어별로 독립적인 라이선스가 선언되는 것이 원칙이다. 해당 OSS의 사용자는 그 OSS에 대해 선언된 라이선스를 반드시 준수해야 하므로 사용하기 전에 라이선스 내용을 확인하는 것은 필수적이고 당연한 것이다.

물론 ‘라이선스’라는 한 개의 단어로 설명했지만 사실 OSS에 대한 라이선스는 그 내용이 매우 다양하다. 관련 업계에서 널리 알려진 라이선스들만 간추려도 현재까지 최소한 70 종류 이상의 라이선스가 존재한다.

라이선스에 따라 소프트웨어를 재배포할 때, 소스 코드의 공개를 의무화할지 어떨지, 소스 코드의 변경을 실시했음을 나타내는지 어떤지 등 그 내용에 많은 차이가 있다. 라이선스 중 일부는 ‘연구 목적이라면 무상, 상용 목적이라면 유상’이라는 형태로 그 사용 목적에 따라 무상 이용 조건을 한정하는 경우도 있다. 이러한 이유 때문에 OSS를 사용하기 전에는 반드시 해당 OSS의 라이선스의 내용을 파악하는 것이 중요하다.

일반 사람들이 혼동하기 쉬운 또 한가지 주의점은 OSS는 무료로 공개되지만, 무료로 사용할 수 있는 모든 소프트웨어가 OSS라는 점이다. 즉, ‘OSS’라고 명시되지 않았다면 그건 OSS가 아니며, OSS가 아니라면 비록 무상으로 이용이 가능하다고 할지라도 소스 코드 등을 자유롭게 변경하거나 재배포할 수 없기 때문에, 이용 시에 이러한 행위를 하지 않도록 주의를 기울여야 한다.

마지막으로 주의해야 하는 점은 카피레프트(Copyleft) 라이선스에 대한 이해이다. OSS를 개량 또는 재배포한 2차적 저작물을 소위 ‘파생물’이라고 부르는데, 카피레프트란, "저작권은 유지하면서도, 2차적 저작물을 포함하여 그 파생물을 모든 사람이 이용, 변경, 재배포할 수 있어야 한다"라는 개념을 나타내는 말이다. 대표적인 카피레프트형 라이센스에는 GPL, LGPL, CPL 등이 알려져 있다.

카피레프트형 OSS 라이센스에서는 ‘개량 · 재배포된 파생물도 원래의 저작물과 같은 조건으로 배포해야 한다’라는 규정이 포함되는 것이 일반적이고, 이 규정이 개발자들에게는 비교적 큰 제약으로 느껴질 수 있다. 예를 들어, 어떤 개발자가 OSS를 기반으로 소프트웨어를 개선한 경우, 자신이 개선한 소프트웨어를 배포함에 있어 자유롭게 다른 라이선스로 바꾸거나 그 조건을 삭제, 추가, 기타 수정 등을 할 수 없다. 또, 카피레프트형 라이센스를 가지는 OSS를 변경했을 경우에는, 변경된 소스 코드를 공개해야 한다는 의무도 있다.

OSS를 사용한 소프트웨어 개발에 관한 실무적 난관

위에서 설명한 주의점 이외에도, 실제 실무에서 OSS를 사용해 소프트웨어를 개발함에 있어서는 개발자가 미리 예측하고 대비하기 어려운 여러가지 난관들이 존재한다. 여기서는 최근 각광 받고 있는 인공지능 기술에 관한 사례를 한 가지 소개하고자 한다.

인공지능 기술이 주목 받으며 이와 관련한 오픈소스 프로젝트 역시 활발하게 이루어지고 있다. 그 중 ‘DarkNet’ 이라는 프로젝트가 있다. DarkNet은 Joseph Redmon이 독자적으로 개발한 신경망 프레임워크(Neural Network Framework)로서 Nnn(deep neural network)들을 학습시키고 실행시킬 수 있는 틀(Framework)이다. C, CUDA로 작성된 오픈소스 소프트웨어로 연산이 빠르고 설치가 쉬우며 CPU 및 GPU 연산을 지원한다는 특징이 있다.

DarkNet은 YOLO License에 따라 배포가 되었고, YOLO License는 오픈소스 라이선스들 중에서도 거의 제약이 없는 축에 속해서, 사실상 사용자가 원하는 것이라면 어떤 방식으로든 사용이 가능하다.

YOLO License V1의 내용, 라이선스 내용 자체가 길지 않고 어떤 것을 규정하고 있는지 파악하기 쉽지 않을 정도로 다소 장난스럽고 추상적으로 기재되어 있다.
YOLO License V1의 내용, 라이선스 내용 자체가 길지 않고 어떤 것을 규정하고 있는지 파악하기 쉽지 않을 정도로 다소 장난스럽고 추상적으로 기재되어 있다.
YOLO License V2의 내용, V1의 내용이 불명확한 나머지 많은 질문을 받은 개발자가 자신이 뜻한 바를 명확하게 하기 위하여, “당신이 원하는 모든 것을 하세요” “그리고 나에게 문의 이메일 좀 그만 보내세요” 라고 기재하고 있음을 알 수 있다.
YOLO License V2의 내용, V1의 내용이 불명확한 나머지 많은 질문을 받은 개발자가 자신이 뜻한 바를 명확하게 하기 위하여, “당신이 원하는 모든 것을 하세요” “그리고 나에게 문의 이메일 좀 그만 보내세요” 라고 기재하고 있음을 알 수 있다.
결국 DarkNet 이라는 OSS를 사용하기 위해서는 YOLO License를 준수하면 되고, YOLO License는 사실상 사용자에게 아무런 제약도 하지 않는 라이선스에 해당한다고 볼 수 있다. 그렇다면 DarkNet을 사용함에 있어 아무런 제약도 존재하지 않는 것으로 판단할 수 있을지 모르나, 현실은 그렇지 않다.

DarkNet은 소위 데이터셋(Data Set)이라 불리는 인공지능 학습을 위하여 관련 있는 데이터를 ‘많이’ 모아놓은 집합을 2가지 사용하고 있다. ImageNet 및 MS COCO가 그것이다. 그리고 이러한 데이터셋은 각자 고유한 개별적인 라이선스가 있으며, 이는 OSS 라이선스와는 별개이다. 결국 DarkNet을 이용해 소프트웨어를 개발하기 위해서는 해당 OSS 라이선스 외에 데이터셋에 대한 라이선스도 검토해야 하며, 나아가 데이터셋을 구성하는 데이터들에 대한 라이선스에 대한 검토도 이루어져야 하는 것이다.

MS COCO License의 경우. 데이터셋 자체는 Creative commons Attribution 4.0 License를 따르되, 사용된 이미지는 Flicker Terms of Use를 따른다고 되어 있다.
MS COCO License의 경우. 데이터셋 자체는 Creative commons Attribution 4.0 License를 따르되, 사용된 이미지는 Flicker Terms of Use를 따른다고 되어 있다.
OSS가 가지는 매우 강력한 장점들 때문에 앞으로의 소프트웨어 개발자들에게 OSS의 도입 및 활용은 필수 불가결하다고 할 수 있다. 그러나 OSS가 가지는 장점만을 보고 무리하게 도입하는 것은 지양되어야 하며, 위에서 설명한 몇 가지 주의점을 유의하며 최적의 성능과 라이선스를 가진 OSS를 찾는 노력이 필요하다.

적지 않은 노력을 기울여 최적의 OSS를 찾았다고 하더라도 이를 활용해 실무에서 사용할 때에는 또 다시 예측하지 못한 위험을 만나게 될 가능성이 늘 존재한다. 이러한 위험을 대비하는 가장 단순하고 명확한 방법은 OSS의 근본적인 성질을 이해하고 시대에 맞춰 변화하는 다양한 OSS 및 관련 사례들과 익숙해지는 것이라 생각한다. OSS가 절약해 준 소프트웨어 개발에 있어서의 시간과 노력을, OSS를 이해하고 친해지는 것에 사용하는 것이야 말로 앞으로의 OSS 개발 시대를 맞이함에 있어 가장 바람직한 실무자의 태도가 아닐까 생각한다.

※ 외부필자의 원고는 IT조선의 편집방향과 일치하지 않을 수 있습니다.

전상욱 법무법인 제현 변호사 sujeon@jehyunlaw.com