** 소프트웨어의 배포 모델과 라이선스
상용 소프트웨어를 사용할 때 비용을 지불한다
--> 비용 지불 = 라이선스 획득 ( SW 사용에 대한 권리만 획득)
오픈소스 소프트웨어는 사용할 때 비용을 지불하지 않는 경우 많음
--> 사용, 수정, 배포를 위해서는 오픈소스 라이선스를 준수해야한다.
--> 준수하지 않는다 ? -> 법적 리스크 발생
** 소프트웨어의 배포모델
4, 오픈소스 소프트웨어
장점
단점
** 오픈소스 라이선스의 정의
** 오픈 소스 소프트웨어의 기본 원칙
** 오픈 소스 라이선스의 순기능
** 상호적/전염성 라이선스 : 배포시 소스코드 제공의무 있음
** 허용적 라이선스 : 배포 시 소스코드 제공의무 없음
** GNU : 자유 소프트웨어 재단에서 개발
** 전염성 라이선스 : 수정된 버전 재배포 시 라이선스 공개
** AGPL : GPL을 기반으로 네트워크를 통해 서비스를 제공하는 경우 소스코드 접근 권한이 추가된 라이서스
** 허용적 라이선스 : 사용자와 개발자에게 광범위한 자유를 제공, 수정된 소스코드는 동일한 라이선스 하에 공개할 필요 없음.
** BSD : SW 사용, 복사, 수정 및 재배포에 상대적으로 제약이 적다. --> 개발자가 법적 책임 지지 않음.
빌드 = 소스코드를 바이너리로 만드는 과정
소스코드 = 개발자가 프로그래밍 언어로 개발한 SW 문서
목적파일 = 소스코드를 컴파일해서 생긴 파일(실행되지 않음, .obj)
바이너리 = 컴퓨터가 이해할 수 있는 기계어
** 소프트웨어의 빌드 과정
** 오픈소스 소프트웨어 활용과 라이선스 정책
GPL 소스코드 포함
--> GPL 소스코드를 본인 코드와 결합하여 배포하는 경우, 결과물 전체는 GPL 라이선스를 따라야 한다. 따라서 배포시 전체 소스코드를 공개해야한다.
GPL 라이브러리 링크
--> 본인 코드가 GPL 라이선스 라이브러리와 링크될 경우, 전체 결과물은 GPL 라이선스를 따라야 하며, 소스코드 공개해야함
LGPL 소스코드 포함
--> 본인 코드와 LGPL 소스코드를 결합하여 배포하면, 결합된 결과물은 혼합 라이선스가 됨. LGPL 부분에 대해서는 소스코드 공개가 필요하지만, 내 코드는 독립적으로 유지할 수 있음.
LGPL 라이브러리 링크
--> 본인 코드가 LGPL 라이브버리와 링크될 경우, 본인 코드를 공개할 필요 없지만, LGPL 라이브러리에 대한 수정 사항은 공개해야한다.
BSD 소스코드 포함
--> 본인 코드와 BSD 소스코드를 결합하여 배포하면, BSD 라이선스 조건을 따르되 개발한 코드는 비공개로 유지 가능, BSD는 소스코드 공개를 강제하지 않지만, 저작권 고지를 해야함.
MPL 소스코드 포함
--> 본인 코드와 MPL 소스코드를 결합하여 배포하면, MPL 소스코드 부분에 대해서는 소스코드를 공개해야한다.
--> MPL은 파일 단위로 적용되기 떄문에, 개발한 코드 파일이 MPL 코드를 포함하지 않으면 비공개로 유지할 수 있다.