본문 바로가기

수업 내용 정리/오픈소스SW개발방법및도구

12. Opensource License

THINK 'FREE SPEECH', NOT 'FREE BEET'
-Richard Stallman-

오픈소스의 정의

라이선스 방식을 통해 배포된 소스 코드를 자유롭게 복사, 수정, 사용, 재배포 할 수 있는 소프트웨어

오픈소스 선택 시 고려사항

  • 품질
    • 당연히 기능, 성능, 호환성 등 품질은 중요함 
    • 충분한 기능과 성능 검증을 수행한 후 제품/서비스에 도입해야 함
  • 커뮤니티
    • 커뮤니티의 활성화 정도는 지속적으로 업데이트를 하는지 사용자는 어느정도 되는지를 대변
  • 문서화
    • 적절히 도입하고 유지보수하는데 수월함
  • 보안 취약점
    • 보안 취약점은 CVE 등 데이터베이스에서 관리됨으로 잘 확인해보고 쓸 것
  • 라이선스
    • 대부분의 라이선스는 오픈소스를 재배포 시 준수해야 할 의무사항을 요구하니 확인해보고 쓸 것

오픈소스 라이선스 의무&주의 사항

주의사항

  • 잘못 사용 시 기업 이미지가 실추되고 법적 소송에 연루될 수 있음
  • 권한을 명시적으로 나타내지 않은 소프트웨어는 오픈소스가 아님, 함부로 쓰면 안됨

의무 사항

  • 저작권 표시 및 라이선스 고지
  • 소스코드 공개
  • 재배포시 동일 라이선스 적용
  • (대부분의 라이선스는 재배포할때 의무사항을 부과하는데 재배포하지 않고 사내에서 사용한다면 의무사항은 부과되지 않는다.)

라이선스 종류

아무 조건 없이 사용 가능한 라이선스

수월하게 사용 가능한 라이선스

  • 오픈소스 라이선스의 고지 의무가 있음, 저작권 표시와 라이선스 고지를 준수해야 함

주의가 필요한 Copyleft 라이선스

  • GPL(GNU General Public License)은 오픈소스를 재배포 시 오픈 소스 코드 + 결합한 소스 코드 까지 공개 요구
  • build 시 자사 소프트웨어와 통합되지 않고 Runtime에도 독립된 프로세스로 동작되도록 해야 자사의 소스코드를 안깔수 있음
  • GPL-3.0/LGPL-.3.0는 소스코드 + 설치 정보까지 제공해야 해서 개발 시 사용할 수 없도록 하는 회사가 존재함
  • LGPL(Lesser GPL)은 Link 형태로 결합할 경우, LGPL Library 부분만 소스 코드를 공개하면 됨

사용 제한 라이선스

  • 비상업용 라이선스: 연구, 학습 목적이라도 영리 회사 내에서 사용하며 불법임
  • Network 서비스 제한 라이선스: Network서비스를 제공하는 서버에 AGPL이 포함 되어 있다면 AGPL+링크로 동작하는 다른 소스코드 까지 공개해야 해서 회사에서 잘 안씀
  • 광고 조항 포함 라이선스: 오픈소스의 기능/활용을 언급하는 모든 광고에 특정 문구 포함 요구해서 잘 안씀

소스코드 제공 의무 유형

  • Work Based on the Code: 파생 저작물로 인정되는 범위 내의 모든 소스코드 공개
  • Derivative Work: 원 저작물 수정 시 원 저작물의 소스코드에서부터 존재하던 파일을 모두 공개해야 함
  • File: 원 저작물 수정 시 수정된 부분을 포함하는 파생 저작물을 모두 공개해야 함
  • Module: 원 저작물 수정 시 원 저작물의 소스코드에서부터 존재하던 파일 중 수정된 부분을 포함하는 모듈을 공개해야 함
  • Fild Derivative Work: 원 저작물의 소스코드에서부터 존재하던 파일 중‘수정된 부분을 파일 단위’로 공개
  • ModuleDerivativeWork: 원 저작물의 소스코드에서부터 존재하던 파일 중‘수정된 부분을 모듈 단위’로 공개

오픈소스 라이선스 예시

  • Apache License: 공개의무 사항은 없으나 수정 배포하는 경우 아파치 라이선스 버전 2.0을 꼭 포함시켜야 하며 아파치 재단에서 만든 소프트웨어임을 밝혀야 
  • GPL: 강력한 제약 조건을 포함함, 배포시 무조건 동일 라이선스로 배포해야 함

  • AGPL: 서버에서 프로그램을 실행해 다른 사용자들과 통신하면, 실행되고 있는 프로그램의 소스코드를 사용자들이 다운로드 할 수 있게 해야 함
  • LGPL: 단순한 라이브러리, 모듈 링크정도는 소스코드 공개를 봐줌, 동적 링크시 LGPL 라이브러리 소스코드만 공개하면 됨, 정적 링크시 소스코드와 오브젝트 코드도 공개해야 함
  • MPL(소스코드와 실행파일 저작권 분리), MIT License(라이선스와 저작권 관련 명시만 지켜주면 되는 라이선스로, 가장 느슨한 조건을 가진 라이선스 중 하나), BSD(라이선스 및 저작권 표시 조건 외엔 제약이 없는 굉장히 자유로운 라이선스)

'수업 내용 정리 > 오픈소스SW개발방법및도구' 카테고리의 다른 글

13. Project Planning & Management  (0) 2023.06.14
11. Design Pattern  (0) 2023.06.08
10. Test and Enhancement  (0) 2023.06.07
9. Online Co-work & Eduacation  (0) 2023.06.07