오픈소스 라이선스

Ryan Han·7일 전
0
post-thumbnail

소프트웨어의 배포 모델

** 소프트웨어의 배포 모델과 라이선스

  • 상용 소프트웨어를 사용할 때 비용을 지불한다
    --> 비용 지불 = 라이선스 획득 ( SW 사용에 대한 권리만 획득)

  • 오픈소스 소프트웨어는 사용할 때 비용을 지불하지 않는 경우 많음
    --> 사용, 수정, 배포를 위해서는 오픈소스 라이선스를 준수해야한다.
    --> 준수하지 않는다 ? -> 법적 리스크 발생

** 소프트웨어의 배포모델

  1. 독점 소프트웨어
  • 저작권 소유자가 완전히 통제, 소스코드 비공개.
  • 사용자는 소프트웨어를 사용하기 위해 라이선스를 구매.
  • 사용자는 소프트웨어를 수정하거나 재배포할 수 없다.
  1. 프리웨어
  • 사용자에게 무료로 제공되는 소프트웨어
  • 독점 소프트웨어와 유사하게 소스코드 비공개
    --> 단점 : 업데이트 불확실, 기술 지원 부족
  1. 쉐어웨어
  • 일정 기간 동안 무료로 사용할 수 있는 소프트웨어
  • 기간이 끝나면 라이선스를 구입해야한다.

4, 오픈소스 소프트웨어

  • 소스코드가 공개되어 누구나 수정하고 배포할 수 있는 소프트웨어
  • 사용자가 소스코드에 접근, 수정, 사용, 재배포할 수 있는 권리를 가지고 있음.
  1. 프리 소프트웨어
  • 사용자에게 자유롭게 사용, 수정, 복사, 배포 권리 부여

오픈소스 소프트웨어 장단점

장점

  • 초기 개발비용이 작다
  • 독점 프로그램에 비해 기술 발전 속도가 빠르다.
  • 다른 SW간의 상호 연동성이 보장된다.
  • 강력한 네트워킹 기능 지원

단점

  • GUI 애플리케이션이 부족
  • 상용 프로그램에 비해 체계적인 문서를 가지고 있지 못하다.
  • 독점 프로그램에서 볼 수 있는 로드맵을 기대하기 어려움
  • Royalty-free 요구( 라이선스 구매 등의 권한 획득시 지속적으로 사용할 수 있는 것)

오픈소스 라이선스의 정의

** 오픈소스 라이선스의 정의

  • 소프트웨어의 소스코드를 공개하고, 누구나 해당 코드를 자유롭게 사용, 수정, 배포할 수 있는 권리를 부여하는 법적 합의.

** 오픈 소스 소프트웨어의 기본 원칙

  • 소스코드의 공개
  • 자유로운 재 배포
  • 소스코드의 무결성 유지
  • 개별 사용자 및 단체가 변경된 버전을 배포할 수 있는 권리

** 오픈 소스 라이선스의 순기능

  • 개발자 간의 협업을 강화 --> 지식의 확산
  • 사용자와 개발자 모두가 기술 발전에 기여 --> 기술 혁신을 촉진

주요 오픈소스 라이선스

** 상호적/전염성 라이선스 : 배포시 소스코드 제공의무 있음

** 허용적 라이선스 : 배포 시 소스코드 제공의무 없음

** GNU : 자유 소프트웨어 재단에서 개발

** 전염성 라이선스 : 수정된 버전 재배포 시 라이선스 공개

** AGPL : GPL을 기반으로 네트워크를 통해 서비스를 제공하는 경우 소스코드 접근 권한이 추가된 라이서스

** 허용적 라이선스 : 사용자와 개발자에게 광범위한 자유를 제공, 수정된 소스코드는 동일한 라이선스 하에 공개할 필요 없음.

** BSD : SW 사용, 복사, 수정 및 재배포에 상대적으로 제약이 적다. --> 개발자가 법적 책임 지지 않음.


소프트웨어의 빌드 과정

빌드 = 소스코드를 바이너리로 만드는 과정

소스코드 = 개발자가 프로그래밍 언어로 개발한 SW 문서

목적파일 = 소스코드를 컴파일해서 생긴 파일(실행되지 않음, .obj)

바이너리 = 컴퓨터가 이해할 수 있는 기계어

  • 실행파일 (.exe) : main 함수가 포함되어 실행할 수 있는 바이너리
  • 라이브러리 : main 함수 없이 함수로만 구성된 바이너리
    --> 정적 라이브러리 : 실행파일에 포함되어 메모리에 적재
    --> 동적 라이브러리 : 실행파일과 별도로 메모리에 적재

** 소프트웨어의 빌드 과정

  • 컴파일러 : 소스코드를 목적파일로 변환
  • 링커 : 목적파일과 라이브러리를 묶어 실행파일 생성

** 오픈소스 소프트웨어 활용과 라이선스 정책

  • GPL 소스코드 포함
    --> GPL 소스코드를 본인 코드와 결합하여 배포하는 경우, 결과물 전체는 GPL 라이선스를 따라야 한다. 따라서 배포시 전체 소스코드를 공개해야한다.

  • GPL 라이브러리 링크
    --> 본인 코드가 GPL 라이선스 라이브러리와 링크될 경우, 전체 결과물은 GPL 라이선스를 따라야 하며, 소스코드 공개해야함

  • LGPL 소스코드 포함
    --> 본인 코드와 LGPL 소스코드를 결합하여 배포하면, 결합된 결과물은 혼합 라이선스가 됨. LGPL 부분에 대해서는 소스코드 공개가 필요하지만, 내 코드는 독립적으로 유지할 수 있음.

  • LGPL 라이브러리 링크
    --> 본인 코드가 LGPL 라이브버리와 링크될 경우, 본인 코드를 공개할 필요 없지만, LGPL 라이브러리에 대한 수정 사항은 공개해야한다.

  • BSD 소스코드 포함
    --> 본인 코드와 BSD 소스코드를 결합하여 배포하면, BSD 라이선스 조건을 따르되 개발한 코드는 비공개로 유지 가능, BSD는 소스코드 공개를 강제하지 않지만, 저작권 고지를 해야함.

  • MPL 소스코드 포함
    --> 본인 코드와 MPL 소스코드를 결합하여 배포하면, MPL 소스코드 부분에 대해서는 소스코드를 공개해야한다.
    --> MPL은 파일 단위로 적용되기 떄문에, 개발한 코드 파일이 MPL 코드를 포함하지 않으면 비공개로 유지할 수 있다.

profile
소프트웨어학과 대학생

0개의 댓글