이것저것 공부한 기록

오픈소스 라이센스 본문

Others

오픈소스 라이센스

블랜디 2021. 4. 14. 17:43

이번에 보안 관련 오픈소스 라이브러리나 툴을 찾아보면서 오픈소스에도 라이센스가 있다는 것을 알게 되었다.

오픈소스는 기본적으로 코드가 공개되어있기 때문에 권리 및 배포가 자유롭고 상업적으로 사용이 가능하며, 오픈소스 소프트웨어를 사용할 경우 그 코드를 사용한 코드도 공개한다는 게 기본적인 컨셉이다. 하지만... 회사 프로젝트에 사용할 오픈소스를 찾고 있을 경우 그게 좀 곤란하지.

사용한 오픈소스 및 라이센스 정책을 명시하는것은 필수적이지만, 해당 오픈소스가 차용하고 있는 라이센스에 따라 개발한 소스코드를 공개하는게 의무일수도, 의무가 없는 경우도 있어 잘 찾아봐야 한다.

라이센스는 github 등의 공개 repository에 LICENSE가 명시되어있다. (LICENSE.txt파일이나, 없을경우 Readme에 별도 기입되어 있음)

+) 기본적으로 코드에 대한 보증, 책임이 없다.

 

 

아래는.. 내가 필요한 내용 위주로 정리해 봄

 

GPL ( General Public License )

  • FSF에서 만든 라이센스 규약
  • 원본 저작물 및 파생 저작물에 대한 소스코드를 제공하거나, 요청 시 제공하겠다는 약정서를 제공하는 조건이 있다.
  • 소스코드의 범위 : 실행물에 포함된 모든 모듈들, 인터페이스 정의 파일 전체, 컴파일과 설치를 제어하는데 사용된 스크립트 전부
  • 단, 두 개의 프로그램이 파이프, 소켓, command-line arguments로 통신하는 경우, 플러그인이 exec나 fork를 이용하는 경우에는 소스코드 공개의 의무가 없음
  • 내부 또는 개인적 목적으로 사용할 때는 공개할 필요가 없으나, 외부에 공개하거나 배포하거나 팔 때에는 전체 소스코드를 공개해야 한다고 함

LGPL ( Less General Public License )

  • GPL이 너무 엄격해서 좀 더 느슨하게 나온 라이센스로, 기본적으로 라이브러리에 적용되는 라이센스.
  • 수정 없이 사용만 할 경우에는 라이브러리 그 자체로 사용을 해야하고, 소스코드를 공개할 의무가 없음.
  • 그러나 수정을 가할 경우 수정된 내용을 포함한 모든 코드를 공개해야 함.
  • 정적링크시에는 응용 프로그램의 목적코드를 공개해야 함 <?
  • LGPL 를 사용하여 개발한 뒤 GPL라이센스로 변경은 가능하지만, GPL을 임의로 LGPL로 변경할 수는 없다. 

AGPL ( Affero General Public License )

  • 어떠한 경우에도 모든 소스코드를 공개해야 함.

BSD ( Berkeley Software Distribution )

  • 버클리 대학에서 만든 라이센스
  • 소스코드 공개 의무가 없고, 어떤 오픈소스를 사용했는지 라이센스와 관련된 정보를 SW에 고지하기만 하면 됨.
  • MIT 라이센스의 기반이 됨

Apache License

  • 아파치 소프트웨어 재단에서 자체적으로 만든 라이센스
  • 소스코드 공개 의무가 없음
  • "Apache"라는 이름에 대한 상표권을 침해하지 않아야 한다는 조항이 포함되어 있음

(추가예정)