오늘의 인기 글
최근 글
최근 댓글
Today
Total
05-04 00:00
관리 메뉴

우노

[GitHub] License 란? 본문

DevOps/GitHub

[GitHub] License 란?

운호(Noah) 2021. 11. 12. 17:07

License 란?

  • License 의 복잡한 정의는 아래와 같다.
    • 저작권자의 독점 사용 권리에 대해, 저작권자/사용자 간의 이용 방법 및 조건 범위를 명시해 둔 사용 허가권이다.
  • 쉽게 말해, 오픈소스 사용 및 배포 시, 지켜야할 규칙들을 의미한다.

왜 License 를 달아야하지?

  • 만약, 개발자가 오픈소스를 조금이라도 참고했다면, License 를 명시하는게 좋다.
    • 많은 사람들이 간과하고 있는 사실이지만, 오픈소스 생태계에서 License 는 굉장히 중요한 부분이기 때문이다.
  • 오픈소스란 '누구나 수정/복재/배포가 가능한 소스코드'를 의미하지만, 오픈소스라고 저작권이 없는 것은 '절대' 아니기 때문이다.
    • 오픈소스는 모두 지적재산권 보호를 받으며, 라이센스 위반 시 처벌이 가능하다.
  • 오픈소스 라이센스는, 소스 코드를 사용해 실행파일을 생성한 뒤, 외부에 배포할 때 지켜야하는 규칙들이다.
    • 따라서, 내부 사용만을 목적으로 할 때는 적용되지 않는다.
  • 보통 오픈소스 라이센스는 README 나 LICENSE 파일에 따로 명시해두며, 코드 윗 부분에 적기도 한다.
  • 라이센스 종류는 굉장히 많지만, 모두 외우고 있을 필요는 없고, 실제로는 약 10개 정도가 80%를 차지한다.
    • '니 맘대로 쓰세요'라고 하는 라이센스도 있고, 배포의 개념이 다른 라이센스도 있다.

License 의 종류

  • Permissive
    • 개념
      • 의무 사항이 많지 않아 상대적으로 준수하기 쉬우며, 저작권 표시나 라이센스 고지 등만 준수하면 문제 없이 사용할 수 있다.
    • 종류
      • Apache License
      • MIT License
  • Copyleft
    • 개념
      • 의무 사항이 많고, 소스 코드를 공개해야 하는 경우가 많다.
    • 종류
      • GNU General Public License(GPL) 2.0
      • GNU Lesser GPL(LGPL) 2.1
      • Mozilla Public License(MPL)
    • 추가 설명
      • 보안이 중요한 기업에서의 결과물에는 Copyleft 라이센스를 포함하지 않는 경우가 많다.
      • GPL 이 들어가면 사용된 코드를 전부 공개해야 하기 때문이다.
      • 혹여나 보안이 중요하다면, Copyleft 를 사용하여 곤경에 빠지는 일이 없도록 해야한다.

Apache License

  • 아파치 소프트웨어 재단에서 자체적으로 만든 소프트웨어에 대한 라이센스 규정이다.
    • 아파치 라이센스는 아파치 재단(ASF: Apache Software Foundation)의 모든 소프트웨어에 적용되며,
    • BSD 라이센스와 비슷하여 소스코드 공개 등의 의무가 발생하지 않는다.
    • 다만, “Apache” 라는 이름에 대한 상표권을 침해하지 않아야 한다는 조항이 명시적으로 들어가 있고,
    • 특허권에 관한 내용이 포함되어 BSD 라이센스보다는 좀더 법적으로 완결된 내용을 담고 있다.
    • 특히, GPL 2.0으로 배포되는 코드와 결합되는 것이 어렵다는 문제가 었었는데,
    • GPL 3.0에서는 이 문제를 해결하여, 아파치 라이센스로 배포되는 코드가 GPL 3.0 으로 배포되는 코드와 결합하는 것이 가능해졌다.

MIT License

  • MIT 라이센스는 미국 매사추세츠공과대학교(MIT)에서 해당 대학 소프트웨어 공학도들을 돕기 위해 개발한 라이센스이다.
    • 라이센스와 저작권 관련 명시만 지켜주면 되는 라이센스이다.
    • 이 소프트웨어를 누구라도 무상으로 제한없이 취급해도 좋다.
    • 저자 또는 저작권자는 소프트웨어에 관해서 아무런 책임을 지지 않는다.

GNU General Public License(GPL) 2.0

  • GPL은 현재 가장 많은 오픈소스 소프트웨어가 채택하고 있는 라이센스이다.
  • 오픈소스 라이센스들 중에서 가장 많이 알려져 있고, 의무사항들도 타 라이센스에 비해 엄격한 편이다.
    • 소프트웨어를 배포하는 경우 저작권 표시, 보증책임이 없다는 표시 및 GPL에 의해 배포된다는 사실 명시
    • 소프트웨어를 수정하거나 새로운 소프트웨어를 병합(Dynamic linking 포함)시키는 경우 GPL에 의해 소스 코드 제공
    • GPL 소프트웨어를 배포하는 경우, 소스 코드 그 자체를 함께 배포하거나 또는 소스코드를 제공받을 수 있는 방법에 대한 정보를 함께 제공

GNU Lesser GPL(LGPL) 2.1

  • GPL 라이센스를 사용하기만 해도 소스코드를 공개해야 한다는 부담 때문에, 단순한 라이브러리와 모듈로의 링크를 허용한 라이선스이다.
  • 원래는 한정된 라이브러리에만 적용하려는 의도로 ‘Library GPL’이라는 이름을 붙였으나, 모든 라이브러리에 적용된다는 오해를 사 2.1 버전으로 ‘Lesser GPL’로 변경됐다.
    • 소프트웨어를 배포하는 경우 저작권 표시, 보증책임이 없다는 표시 및 LGPL에 의해 배포된다는 사실 명시
    • LGPL Library의 일부를 수정하는 경우 수정한 Library를 LGPL에 의해 소스코드 공개

Mozilla Public License(MPL)

  • MPL은 Netscape 브라우저의 소스코드를 공개하기 위해 개발된 라이센스이다.
  • MPL에서는 링크 등의 여부에 상관없이, 원래의 소스코드가 아닌 새로운 파일에 작성된 소스코드에 대해서는 공개의 의무가 발생하지 않는다.
    • 소프트웨어를 배포하는 경우 저작권 표시, 보증책임이 없다는 표시 및 MPL에 의해 배포된다는 사실을 명시
    • MPL 코드를 수정한 부분은 다시 MPL에 의해 배포
    • MPL 코드와 다른 코드를 결합하여 프로그램을 만들 경우 MPL 코드를 제외한 결합 프로그램에 대한 소스코드는 공개할 필요가 없음
    • 소스코드를 적절한 형태로 제공하는 경우, 실행파일에 대한 라이센스는 MPL이 아닌 다른 것으로 선택가능
    • 특허기술이 구현된 프로그램의 경우 관련 사실을 ‘LEGAL’파일에 기록하여 배포

참고

Comments