Study/소프트웨어공학

오픈 소스 라이선스

Gyuri 2021. 8. 22. 20:11

OSS (공개소스 소프트웨어) : 소스코드를 공개한다는 의미 (누구나 사용 가능)

 

 

카피레프트(copyleft) : 카피라이트(copyright) 과 반대되는 개념으로 copyright에 기반을 둔 사용제한이 아닌 저작권을 기반으로 한 정보의 공유를 위한 조치임. 컴퓨터 소프트웨어의 소스를 공개해 자유롭게 사용하며 더욱 발전시키자는 취지의 자유소프트웨어 연합 GNU 프로젝트에서 시작함.

 

 

독점(상용) 소프트웨어와 OSS

 -독점 소프트웨어 : 대가를 받고 판매되는 소프트웨어. 사용기간이 제한 돼있고, 실행파일만 제공됨. 복제/배포/수정 금지. 역공학금지 (바이너리로 부터 소스코드 얻어내는 것을 금지)

 -OSS : 소스코드 제공 의무 있음. 사용기간 무제한. 소스코드 복제/배포/수정 가능

  -> 소스코드만 제공될 뿐, 저작권이 없는 것이 아님. 지적저작권으로 보호됨

 

 

-GPL (General Public License) : 1983 FSF (Free Software Foundation 리처드 스톨만)이 만든 단체. 가장 많이 사용되는 라이선스로 가장 엄격함.    

SW를 배포하는 경우 저작권 표시, 보증 책임이 없다는 표시, GPL에 의해 배포된다는 사실을 명시해야함. SW를 수정하거나 링크할 때 GPL에 의해 소스코드 제공해야함. (수정 하지 않았을 때도 제 3자에게 공개를 해야함)

 

목적/실행 코드 형식으로 GPL 배포하는 경우, 소스코드를 제공받을 수 있는 방법에 관한 정보 함께 제공해야함. 자신의 특허를 구현한 프로그램을 GPL로 배포하는 경우엔 그 프로그램을 GPL 조건에 따라 이용하는 이용자에게 특허 사용료 받을 수 X. 제 3자의 특허 구현한 프로그램인 경우엔 특허권자가 프로그램 이용자에게 특허 사용료 받지 않을 때만 해당 프로그램을 GPL로 배포 가능.

GPL 코드를 링크하거나 포함한 소프트웨어는 모든 코드를 수취자에게 제공할 의무가 있음.    

         

하지만, 수취자는 약정서와 제품을 받는 자 이므로 불특정 다수의 공공에 배포하는 것은 아님 (기관, 기업 내에서만 사용하는 경우엔 소스코드 제공 의무 X)

GPL은 소유자가 특허를 무상으로 제공하지 않는 경우엔 이를 GPL SW 구현에 사용할 수 없다고 명시함.

 

 

-LGPL : GPL 소스코드 공개의 엄격함을 완화. LGPL 라이브러리의 일부를 수정하는 경우 수정한 라이브러리의 소스코드 공개해야함. LGPL 라이브러리에 응용프로그램을 링크시킬 경우엔 해당 응용프로그램의 소스 공개할 필요 X         

사용자가 라이브러리 수정 후 동일한 실행파일을 생성할 수 있도록 정적 링크를 한 경우엔 응용프로그램의 Object 코드(목적코드)를 제공해야함.

 

 

-OSI (Open Software Initiative) : 1988 에릭 레이몬드가 만든 단체. 오픈소스가 되기 위한 10가지 기준 정해놓고 만족하면 해당 라이선스 제공함

 

 

-MPL : MPL 코드가 포함된 파일 단위의 공개의무 있음.

 예) 개발 프로그램의 구성파일이 10개인데, 이중 5개는 자체개발, 4개는 MPL 원본 복사, 1개는 자체개발 코드에 MPL 코드 일부 삽입 한 경우 : 자체 개발한 5개 파일은 MPL 적용 받지 X, MPL 원본 파일 & 자체개발 코드에 일부 MPI 코드 삽입한 경우엔 코드 공개 해야함. (자체 개발한 경우 아니면 공개의무)

 

 

Apache : 배포하는 경우 저작권 표시, 보증 책임 없다는 내용 표시. 수정 프로그램에 소스코드의 공개 요구하지 않기 때문에 상용 SW에 무제한 사용 가능

 

 

BSD/MIT : 자유로운 사용, 복제, 배포, 수정 허용. 코드 공개의 의무 없음

 

 

AGPL 3.0 : 자유로운 사용, 복제, 배포, 수정 허용. AGPL코드(수정코드포함) 및 링크 시(static과 dynamic모두) 해당 라이선스에 의해 모든 코드를 공개 해야함.  Object 코드(목적코드) 또는 Executable Form으로 소프트웨어를 배포하는 경우, 소스코드 그 자체를 함께 배포하거나 또는 소스코드를 제공받을 수 있는 방법에 대한 정보를 함께 제공해야함.

네트워크로 통신하는 SW 사용자(네트워크 서비스 사용자) 에게 소스코드 공개의무 발생

-> 물리적 배포를 하지 않고 서버 내에서만 사용해도 해야함. 강력한 카피레프트 성향!

 

 

보복 조항 있는 대표적인 라이선스 : Apache 2.0, MPL 2.0, GPL 3.0 등

 -> 개발자가 자신의 특허권을 근거로 제 3자에게 소송 제기할 경우엔 라이선스 종료시키고, 그 동안 라이선스 사용했던 기간,이익 등을 산출해 로열티를 부과(특허 보복조항)

 

 

★듀얼 라이선스 : 원래의 라이선스 외에 예외적인 사용을 허용하는 것 (예 : 하나의 버전은 무료, 나머지는 유료)

 -MySQL : GPL 2.0으로 배포되고(따르고) 있으나, 오라클사의 상용 라이선스를 구입하면 응용SW의 소스코드를     공개하지 않아도 된다. 외부에 배포한 경우엔 소스코드 공개 의무가 있음. 내부적으로만 사용할 땐 수정 시에도 공개하지 않아도 됨. Community 버전 (무료, GPL따름) / Commercial(유료) =>  듀얼라이선스

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

제품백로그의 특성 (DEEP)  (0) 2021.08.22
스크럼  (0) 2021.08.22
애자일  (0) 2021.08.22
폭포수 모델  (0) 2021.08.22
소프트웨어공학  (0) 2021.08.22