개발자 끄적끄적

오픈소스 라이선스 본문

소프트웨어공학

오픈소스 라이선스

햏치 2024. 4. 30. 00:00

<OSS(공개 소스 소프트웨어)>
- 무엇을 공개하는 것인가? 소스코드를 공개한다는 의미
- 소스코드를 공개한다는 의미는 누구라도 사용할 수 있다는 의미를 내포
- Copyleft(카피레프트)
  - 독점적인 의미의 저작권에(카피라이트, copyright)에 반대되는 개념이며, 
  저작권을 포함한 지식재산권에 기반을 둔 사용 제한이 아니라 정보의 공유를 위한 조치이다
  카피레프트를 주장하는 사람들은 보통, 지식과 정보는 소수에게 독점되어서는 안되며, 모든 사람에게 열려 있어야 한다고 주장




<독점(상용) 소프트웨어와 OSS>
- 독점 소프트웨어
  - 상용 소프트웨어
  - 일반적으로 실행파일만 제공
  - 역공학 금지
  - 바이너리도 복제, 배포, 수정 불가
  - 사용기간 제한

- OSS
  - 소스코드 제공
  - 소스코드 사용, 복제, 수정, 재배포 허용
  - 사용 기간 무제한




<OSS에는 저작권이 없는가? - NO>
- 저작권리의 행사방식이 가장 큰 차이점이며, 일반적인 OSS저작권자들은 소스 코드를 공개하고 누구나 
  복제, 설치, 사용, 변경, 재배포가 가능하도록 저작권리를 행사하고 있다 - Black Buck Software Korea
- 그러나 공개 SW를 이용하려면 공개SW 개발자가 만들어 놓은 조건의 범위에 따라 해당 소프트웨어를 사용해야 하며,
  이를 위반할 경우에는 라이선스 위반 및 저작권 침해로 이에 대한 법적 책임을 져야한다
- 소스코드를 개방했을 뿐, 지식재산권으로 보호되는 저작물




<오픈소스 라이선스>
- 오프소스 소프트웨어 사용권으로 개발자와 이용자간에 이용 방법 및 조건의 범위를 명시한 계약
  - 라이선시(Licensee) : 라이선시를 받는 자
  - 라이선서(Licenser) : 라이선스를 부여하는 자 
 
- 광범위한 사용권을 부여하면서 로열티를 요구하지는 않지만, 지켜야할 의무사항들이 존대한다
  이러한 의무사항들을 위반할 경우에는 저작권 침해가 발생하여 책임이 발생
- 별도로 명시된 경우를 제외하고는 오픈소스를 이용해 상업적인 이득을 취하는 것을 막지 않는다




<GPL(General Public License)>
- 1989년 GPL 1.0 버전이 FSF(Free Software Foundation 리처드 스톨만)에서 만들어짐
- 1991년 6월 GPL 2 발표이 되고 2007년 6월에 GPL 3 정식버전이 발표됨
- GPL 코드를 링크하거나 포함한 SW는 모든 코드를 수취자에게 제공할 의무사항 발생(상호주의: Reciprocal) 
- Strong Copyleft: 동일한 라이선스(GPL)로 배포
- But, 수취자는 약정서와 제품을 받는 자이므로 불특정 다수의 공공에 배포하는 것은 아님
- 기관이나 기업 내무에서만 사용하는 경우에는 소스코드 제공의 의무가 없음




<Free Software Foundation>
- Richard Stallman, 1983
- 소프트웨어에 대한 사용, 복제, 배포의 자유와  소스 코드에 대한 접근을 통해 연구, 수정, 개선할 수 있는 자유를 부여하는 소프트웨어





<왜 GPL을 알아야 하는가?>
- 가장 많이 사용되는 라이선스이면서 동시에 
- Copyleft를 엄격하게 따르는 라이선스





<GPL 주요내용>
- SW를 배포하는 경우 저작권 표시, 보증책임이 없다는 표시 및 GPL에 의해 배포된다는 사실을 명시
- SW를 수정하거나 새로운 SW를 링크(Static과 Dynamic linking 모두)시키는 경우 GPL에 의해 소스코드를 제공해야 함 
- 목적 및 실행 코드 형식으로 GPL 배포하는 경우, 소스코드 그 자체를 함께 배포하거나 또는 소스코드를 제공받을 수 있는 방법에 관한 정보를 함께 제공해야 함 
- 자신의 특허를 구현한 프로그램을 GPL로 배포하는 경우에는 그 프로그램을 GPL 조건에 따라 이용하는 이용자에게 특허 사용료를 받을 수 없으며,
  제3자의 특허를 구현한 프로그램인 경우에는 그 특허권자가 GPL 조건에 따라 이용하는 프로그램 이용자에게 특허 사용료를 받지 않을 때에만 해당 프로그램을 GPL로 배포하는 것이 가능
- 저작권 표시, 보증책임이 없다는 표시 및 GPL에 의해 배포된다는 사실을 명시





<상표 제한/보증 부인/책임 제한>
- 이름, 상표, 상호에 대한 사용제한 
  - 저작자 및 기여자의 이름·상표·상호를 홍보목적으로 사용가능한지에 대한 제한

- 보증의 부인 
  - 프로그램의 품질과 성능에 관련된 모든 위험은 사용자에게 있음
    프로그램에 결함이 있는 것으로 밝혀지면, 이에 따라 필요한 보수 및 복구를 위한 제반 경비는 사용자가 부담.

- 책임의 제한 
  - 저작권자는 프로그램의 사용이나 작동 불능으로 인해 발생한 일반적이거나 특수한 손해, 우발적 또는 결과적 손해에 대해 책임지지 않음
   이러한 조건은 사용자나 제3자가 프로그램을 조작함으로써 발생된 손실이나 다른 소프트웨어와 프로그램을 함께 동작시키는 것으로 인해서 발생된 데이터의 상실 및 부정확한 산출 결과에도 적용 됨





<GPL기반의 상용 SW 판매 시 소스코드 공개 방법>
- 제품을 실행파일(패키지SW, 임베디드 기기 형태 등) 형태로 판매할 경우 사용자 요청이 있을 경우 최소한의 배포 비용만 받고 소스코드를 제공하겠다는 약정서를 제공
- 사용자의 요청이 있을 경우 제공(E-Mail, CD-ROM 등에) 
- FTP 서버, 웹 서버에 소스코드를 업로드 해 놓고 매뉴얼 혹은 약정서에 해당 주소를 기입하여 직접 다운로드 받게 할 수 있음 
- 소스코드를 CD-ROM 등의 매체에 담아서 제품(Object Code 또는 Executable File) 배포 시 함께 제공 할 수 있음





<LGPL 2.1>
- GPL의 소스 코드 공개의 엄격함을 완화
  - 저작권 표시, 보증책임이 없다는 표시 및 LGPL에 의해 배포된다는 사실을 명시
  - LGPL 라이브러리의 일부를 수정하는 경우 수정한 라이브러리의 소스코드 공개
  - LGPL 라이브러리에 응용프로그램을 링크시킬(Static과 Dynamic Linking 모두) 경우 해당 응용프로그램의 소스를 공개할 필요 없음




<AGPL 3.0>
- 오픈소스 라이선스들은 해당 SW를 복제하여 '배포'할 때 지켜야하는 요구사항들을 규정하고 있는데, 
  이를 반대로 해석하면 배포하지 않고 기업이 내부적으로만 사용하거나 '네트워크 서버 형태로' 이용하는 경우에는 라이선스에 따른 의무사항들이 거의 없는 문제 발생
- 이러한 한계를 극복하려고 GPL 라이선스를 변경하여 네트워크 서버에 의해 서비스를 제공하는 경우에도 카피레프트 조항과 소스코드 제공 의무가 적용되도록 만든 라이선스
- 의무사항은 기본적으로 GPL과 동일하나 적용범위가 배포를 넘어서 '네트워크 서버 형태로' SW를 이용하는 경우에도 적용된다는 점이 차이가 있다




<BSD형 라이선스>
- 카피레프트(Copyleft) 조항을 포함하지 않고 소스코드 제공 의무도 없어 의무사항이 비교적 간단한 라이선스
- BSD형의 라이선스로 배포되는 다양한 코드를 이용하여 자사의 제품을 만든 후 이를 상용 라이선스로 배포하는 것도 가능




<BSD형 라이선스 요약>
- BSD, Apache2.0
- 배포시 소스코트 제공 의무와 범위 : BSD(X), Apache2.0(X)
- 보증의 부인 : BSD(O), Apache2.0(O)
- 책임의 제한 : BSD(O), Apache2.0(O)
- 이름, 상표, 상호에 대한 사용 제한 : BSD(O), Apache2.0(O)
- 명시적 특허라이선스의 부여 : BSD(X), Apache2.0(O)

- 명시적 특허라이선스 : 특허권자의 허락을 받지 않고 공개된 소프트웨어를 무료로 사용 가능 -> Apache2.0

'소프트웨어공학' 카테고리의 다른 글

SOLID  (0) 2024.05.01
결합도  (0) 2024.04.16
응집도  (0) 2024.04.16