본문 바로가기

Architecture for Software/Architecture

공개 소프트웨어에 대한 간략한 이해

최근 공개 소프트웨어 공모전에 참여하는 관계로 공개 소프트웨어에 대하여 많은 관심을 기울이고 있습니다. 이에따라 공개 소프트웨어란 무엇이고 공개 소프트웨어의 라이센스에 관하여 간략하게 정리하였습니다.

공개 소프트웨어에 대하여 간략한 이해를 하실 때 참고하시면 좋겠습니다.



전 세계적으로 공개 소프트웨어(Open Source Software)에 대한 관심과 활용이 높아지고 있으며, 이에 따라 많은 부분에서 적극적으로 공개 소프트웨어를 활용하여 경쟁력을 높이려는 노력을 기울이고 있습니다. 하지만, 공개소프트웨어는 무조건 무료라는 인식으로 인하여 공개 소프트웨어를 이용하여 개발한 소프트웨어가 공개 소프트웨어 라이선스와 충돌이 일어나는 경우가 많이 발생하고 있습니다.

이에 따라 공개소프트웨어를 바르게 이해하고, 각 공개 소프트웨어가 주로 채용하는 라이선스에 대하여 알기 쉽게 알려드리고자 합니다.




공개 소프트웨어와 비공개 소프트웨어(Close Source Software)의 가장 큰 차이는 소프트웨어를 구성하는 소스를 공개여부입니다.

더 정확하게 공개소프트웨어를 정의하면, 공개소프트웨어라 함은 라이선스 요금이 무료이면서 소스코드가 공개되어 있는 소프트웨어로서 누구나 자유롭게 사용할 수 있고, 활용할 수 있으며 배포할 수 있는 소프트웨어를 의미합니다.

그렇지만 공개소프트웨어가 공개된 소스코드에 대한 접근이 가능하다는 것만을 의미하는 것이 아닙니다. 이에 대해 대표적인 공개소프트웨어운동 비영리조직인 Open Source Initiative(OSI)는 특정 소프트웨어가 공개 소프트웨어로 분류되려면 다음과 같은 10여 개 조건을 충족해야만 한다고 정의하고 있습니다

  1. 자유로운 재 배포: 별도 라이선스 없이 프로그램의 배포 허용
  2. 소스코드 공개: 프로그램 배포 시 소스코드 배포
  3. 2차적 저작물 재 배포: 프로그램 원 저작물의 개작 및 배포 허용
  4. 소스코드 보전: 원 프로그램 보전을 위해 타인의 소스코드 수정 제한 가능. 단, 수정된 소프트웨어에 대한 재 배포는 허용
  5. 사용 대상 차별 금지: 모든 개인과 단체에 대해서 동일한 기준의 라이선스 적용
  6. 사용 분야 제한 금지: 특정한 용도에 대한 라이선스 사용 제한 금지
  7. 라이선스의 배포: 원작자의 승인 없이 프로그램 재 배포 가능
  8. 라이선스 적용상의 동일성 유지: 특정제품에 의존 금지
  9. 다른 라이선스의 포괄적 수용: 라이선스에 공개SW와 함께 배포되는 소프트웨어에 대한 제한을 설정해서는 안됨
  10. 라이선스의 기술적 중립성: 특정 기술 또는 인터페이스에 기초한 라이선스 규정 금지

공개 소프트웨어를 이해할 때 혼동되는 부분이 자유 소프트웨어(Free Software)와 공개 소프트웨어(Open Source Software)의 개념상의 차이입니다. 사실 두 용어는 근본적으로 같은 의미를 가지고 있습니다.


역사적으로 1984년 리차드 스톨만(Richard Stallman)이 GNU라는 공개프로젝트를 시작하면서 자유 소프트웨어 운동(Free Software Movement)이 시작되었습니다.

자유 소프트웨어 운동이라는 용어에서 "자유(Free)"라는 용어에 대한 오해의 소지로 인하여, 1998년 공개 소프트웨어(Open Source Software)라는 용어를 사용한 것이 공개 소프트웨어의 시작입니다. 즉, 자유 소프트웨어는 사용자에게 소프트웨어가 금전적으로 공짜(Free)라는 인식을 줄 수 있어, 보다 명확하게 의미를 나타내기 위하여 공개 소프트웨어라는 용어가 탄생하였습니다.

다만, 자유 소프트웨어라는 개념은 소프트웨어 자체는 항상 윤리적, 도덕적, 사회적으로 타당해야 하며, 소프트웨어 사용자들에게 이를 바탕으로 사용상의 여러 가지 권리가 주어져 있음을 강조합니다.

이를 정리하면 다음과 같습니다.

  • 공개 소프트웨어(Open Source Software): 소스코드를 공개하며, 소스코드를 일정한 라이선스에 따라 이용할 수 있는 공개된 소프트웨어를 나타내는 용어
  • 비공개 소프트웨어(Close Source Software): 소스코드를 공개하지 않으며, 프로그램을 실행할 수 있는 실행파일이나 실행환경만 제공하는 소프트웨어를 나타내는 용어
  • 자유 소프트웨어(Free Software): 공개 소프트웨어와 같은 의미이지만, 소프트웨어에 대한 책임과 사용자의 권리를 더욱 강조하는 용어

이 정리는 제 개인적인 생각을 바탕으로 간략하게 정리한 내용이라 약간 차이가 있을 수 있습니다. 의견 주시면 반영하겠습니다. :-)

공개 소프트웨어와 비공개 소프트웨어의 비교는 다음과 같이 비교될 수 있습니다.
 구분  비공개소프트웨어  공개소프트웨어
 비용분석  - 적용비용이 적음
 - 유지비용 및 시스템 개선비용이 높음(윈도우계열)
 - 소수의 관리자에 대한 관리비용 높음
 - 라이선스 수수료에 대한 비용발생
 - 적용비용이 낮음(무료)
 - 유지비용이 낮고 기능확장에 대한 추가비용이 들지 않음
 - 다수의 공개된 사용자에 의한 관리로 관리자에 대한 관리비용이 낮음.
 - 서비스에 대한 비용발생
 성능분석  - 규모가 큰 시스템 환경에서 비교적 높은 성능
 - 고가의 장비로 인한 고성능
 - 전체적으로 공개SW와 비슷한 성능
 - 규모가 작은 시스템환경에서 높은 성능
 - 높은 안정성 및 비용효율이 높음
 보안성  - 폐쇄적인 운영으로 인한 공개되지 않은 시스템 취약점 보유
 - 최근에 다수의 취약점 발견으로 많은 보안 위협에 노출
 - 프로토콜 호환이 어려워 인증체계가 취약함
 - 개발 시부터 공개되어 이미 많은 취약점이 해결된 안전화 상태
 - 공개키 기반의 인증 메커니즘 구현을 위한 통합패키지존재(적용이 용이)
 - 다양한 암호화 알고리즘 및 키 관리에 대한 기능 제공
 경제성  - TCO 높음
 - 구입비, 유지비가 높음
 - TCO낮음
 - 라이센스 비용없음
 기술성  - 재 사용성 없음  - 재 사용성 높음
 - 유지보수, 업그레이드 용이
 - 독점폐해방지
 저작권  - 일반 라이선스
 - 독과점에 의한 가격결정우려
 - GPL라이선스, BSD라이선스 등
 확장성  - 서버의 가용성 측면에서 클러스터링 비효율성
 - 소프트웨어간의 호환성이 보장되나 높은 적용비용과 제한된 시스템 운영환경
 - 효율적인 클러스터링 구현가능
 - 소프트웨어간의 호환성이 조금 떨어지나 적용비용이 거의 들지 않고 낮은 수준에서의 기능추가 가능
 경쟁력   - 소프트웨어선진국에 유리  - 공동개발상식에 따른 교육효과우수
 - 우리나라와 같은 후발국에 적합


사실 공개 소프트웨어를 사용하면서 가장 어려운 점이 각 라이선스 별 특징을 아는 일입니다. 어떤 라이선스를 사용하였는가에 따라 공개 소프트웨어의 이용 범위와 한계가 달라지기 때문입니다.

이러한 사항을 공개 소프트웨어에서 사용하는 대표적인 라이선스 별로 정리하면 다음과 같습니다.

 라이선스  배포의 자유  소스코드 공개 및 수정  2차 저작물 재 공개 의무  소스코드 수정 제한  사용대상 차별  사용분야 제한  무료 이용  독점적 SW와 결합
 GPL  허용  가능 공개
없음
없음
 없음  무료 불가능
 LGPL  허용  가능  공개  없음 없음
 없음 무료
 가능
 BSD  허용  가능  비공개 가능
 없음  없음  없음  무료  가능
 MPL  허용  가능  공개  없음  없음  없음  무료  가능
 일반적인 비공개 소프트웨어 라이선스  금지  불가능  2차 저작 금지 또는 협약하에 저작
 있음  있음  있음  유료  불가능


상기 표의 내용을 간략하게 설명하면 다음과 같습니다.

GPL(General Public License)는 대표적인 공개 소프트웨어 라이선스로서 Linux, MySQL, GCC 등에 널리 적용되고 있는 라이선스로서, 독적점인 소프트웨어와 결합이 불가능한 특징을 가지고 있습니다. GPL 라이선스를 적용한 공개 소프트웨어를 이용한 소프트웨어를 만들었다면, GPL 라이선스에 따라 해당 소프트웨어의 소스코드를 공개하여야 할 의무가 있습니다. 이러한 점이 GPL 라이선스를 이용한 개작 소프트웨어를 상업적으로 이용하려는 기업이나 단체에 걸림돌로 작용하고 있습니다. 다만 이러한 특징은 앞에서 설명한 자유 소프트웨어의 사상을 반영하였기 때문입니다.

이러한 제한을 약하게 적용시킨 것이 바로 LGPL(Lesser General Public License)입니다. GPL의 개작 소스코드 의무 공개 및 재배포 규정을 완화하여 사용기업에서 활발하게 이용이 가능하도록 만든 라이선스입니다.

BSD(Berkeley Software Distribution) 라이선스는 소스코드의 개작 이후 재 공개를 개작자의 판단에 맡기는 라이선스입니다. 이에 따라 다른 라이선스와 달리 2차 저작물의 소스코드를 공개하지 않아도 됩니다.

MPL(Mozilla Public License)의 경우 개작 시 소스코드를 공개할 의무는 있지만, 상업적으로 이용이 가능한 특징이 있습니다.

이상으로 간단하게 공개 소프트웨어와 비공개 소프트웨어의 주요 특징을 살펴보고 공개 소프트웨어에서 사용하는 라이선스에 대하여 알아 보았습니다. 공개 소프트웨어의 활용은 경쟁력을 높이는데 많은 도움을 주지만, 그 만큼의 책임이 있음을 알고, 필요에 맞게 활용하시는 것이 중요합니다.

감사합니다.