오픈소스란 라이선스 방식을 통해 배포된 소스 코드를 자유롭게 복사, 수정, 사용, 재배포 할 수 있는 소프트웨어를 지칭함.
오픈소스는 누구라도 버그를 수정하거나, 코드를 개조하여 기능을 추가할 수 있으며, 소프트웨어 개발에 참여할 수 있음
오픈소스는 개발자에게 프로그램 배포 권리, 소스코드 접근 권리, 소스 코드 수정 권리를 제공함
품질
기능, 성능, 호환성 등 오픈소스의 품질은 오픈소스를 선택하는데 가장 중요한 요소이다.
Github에 호스팅하는 프로젝트라면, Star수, Fork수로 오픈소스의 완성도를 가늠할 수 있다.
오픈 소스를 사용하려는 기술 조직은 당연히 충분한 기능과, 성능 검증을 수행한 후 제품/서비스에 도입해야한다.
커뮤니티
문서화
오픈소스를 적절히 도입하고 유지보수하기 위해 프로젝트가 얼마나 문서를 충실하게 제공되는지 확인.
문서화가 잘 된 프로젝트의 산출물은 기업이 도입하는데 수월.
보안 취약점
오픈소스 보안 취약점이 알려진 오픈소스는 사용해선 안됨.
보안 취약점이 발견된 오픈소스의 버전은 CVE 등 데이터베이스에서 관리.
라이선스
오픈소스 라이선스는 소프트웨어를 누구나 자유롭게 사용할 수 있는 권리르 부여하는 허가증.
대부분의 라이선스는 오픈소스를 재배포시 준수해야할 의무사항을 요구.
오픈소스에 대한 법적 책임과 이에 따른 위험을 제대로 숙지하지 못할 경우, 사용권리 박탈과 제품을 판매 불가할 수 있음.
일반 상용소프트웨어와 마찬가지로 오픈소스에도 저작권 등 지식 재산권이 있으며, 권리자의 허락 없이 함부로 사용하면 소송을 당할 수 있다.
오픈소스 권리자들은 많은 사람들이 사용할 수 있도록, 광범위한 라이선스 부여.
저작권 표시 및 라이선스 고지
소스코드 공개
재배포시 동일 라이선스 적용
아무조건 없이 사용할 수 있는 라이선스
예시
Creative Commons Zero v1.0 Universal (CC0-1.0)
The Unlicense (Unlicense)
Permissive License
오픈소스 라이선스의 고지 의무가 있으며, 비교적 수월하게 준수할 수 있다.
예시
Apache License 1.1 (Apache-1.1)
Apache License 2.0 (Apache-2.0)
BSD 2-Clause "Simplified" License (BSD-2-Clause)
BSD 3-Clause "New" or "Revised" License (BSD-3-Clause)
Json License (JSON)
Microsoft Public License (MS-PL)
PostgreSQL License (PostgreSQL)
zlib License (zlib)
주의가 필요한 Copyleft 라이선스
GPL(GNU General Public License)은 오픈소스 재배포 시 소스 코드 공개를 요구함.
Copyleft 라이선스 유형은 오픈소스 라이선스 중에 요구하는 의무사항이 가장 많은 라이선스 유형이기 때문에 주의가 필요함.
소스 코드를 직접 제공하거나, 사용자가 요청시 소스 코드를 제공하겠다는 서면 약정서를 제공.
예시
GNU General Public License v2.0 (GPL-2.0)
GNU General Public License v3.0 (GPL-3.0)
우회방법
자사 코드 분리 방법 : Copyleft라이선스 유형의 라이선스가 적용된 오픈소스는 개발자가 소속한 회사가 배포하는 제품에 포함시 주의해야한다.
따라서 오픈소스는 설계 단계에서 Build시 자사 소프트웨어와 통합되지 않고 Runtime에도 독립된 프로세스로 동작하도록 한다.
Weak Copyleft 라이선스
Weak Copyleft는 Copyleft 유형의 라이선스에 비해 공개 범위가 약하다.
우회방법
LGPL Library - Dynamic Link 사용
LGPL도 재배포시 소스 코드 공개를 요구함.
하지만 Library형태의 LGPL하의 오픈소스를 Link형태로 결합할 경우, LGPL Library 부분만 소스 코드를 공개하면 되고, 결합하는 코드는 공개 의무가 없다.
예시
GNU Lessor General Public License v2.0 (LGPL-2.1)
GNU Lessor General Public License v3.0 (GPL-3.0)
사용 제한 라이선스
비상업용 라이선스
예시
Network 서비스 제한 라이선스
Network 서비스도 배포로 간주하여 의무사항 준수를 요구.
Network 서비스를 제공하는 서버에 AGPL로 공개된 오픈소스가 포함되어 있을 경우, 소프트웨어를 배포하지 않아도, AGPL 오픈소스 뿐 아니란 다른 소프트웨어의 소스코드까지 공개해야함.
예시
광고 조항 포함 라이선스
소스코드 제공 의무 유형
Work Based on the Code
제공의무 : 원 저작물의 소스코드를 원본 그대로, 혹은 수정하여 새로운 SW에 포함하였을 경우
제공범위 : 원 저작물의 소스코드가 포함되어, 파생 저작물로 인정되는 범위내의 모든 소스코드
Derivative Work
제공의무 : 원 저작물의 소스코드를 수정하여 사용한 경우 제공의무가 존재하며, 수정 없이 그대로 사용하였을 경우에는 소스코드를 제공하지 않아도 됨
제공범위 : 원 저작물의 사용함에 있어, 수정을 거쳤을 경우, 원 저작물의 소스코드에서 부터 존재하던 파일을 모두 공개.
File
제공의무 : 원 저작물의 소스코드를 원본 그대로, 혹은 수정하여 새로운 SW에 포함하였을 경우.
제공범위 : 원 저작물의 사용함에 있어, 수정을 거쳤을 경우, 원 저작물의 소스코드에서 부터 존재하던 파일 중 수정된 부분을 포함하는 파생 저작물을 모두 공개.
Module
제공의무 : 원 저작물의 소스코드를 원본 그대로, 혹은 수정하여 새로운 SW에 포함하였을 경우.
제공범위 : 원 저작물의 사용함에 있어, 수정을 거쳤을 경우, 원 저작물의 소스코드에서 부터 존재하던 파일 중 수정된 부분을 포함하는 모듈을 모두 공개.
File Derivative Work
제공의무 : 원 저작물의 소스코드를 수정하여 사용한 경우 제공의무가 존재하며, 수정 없이 그대로 사용하였을 경우에는 소스코드를 제공하지 않아도 됨.
제공범위 : 원 저작물의 소스코드에서부터 존재하던 파일 중 '수정된 부분을 파일 단위'로 공개.
Module Derivative Work
제공의무 : 원 저작물의 소스코드를 수정하여 사용한 경우 제공의무가 존재하며, 수정 없이 그대로 사용하였을 경우에는 소스코드를 제공하지 않아도 됨.
제공범위 : 원 저작물의 소스코드에서부터 존재하던 파일 중 '수정된 부분을 모듈 단위'로 공개.
대표적인 오픈소스 라이선스
Apache License
GNU(Gnu is Not Unix) General Public License(GPL)
GNU Affero GPL(AGPL)
GPL을 기반으로 만든 라이선스로 버전 1,2,는 아페로, 가장 최신버전인 3은 자유소프트웨어재단에 의해 개발.
서버에서 프로그램을 실행해 다른 사용자들과 통신하면, 실행되고 있는 프로그램의 모든 소스코드를 사용자들이 다운로드 할 수 있게 해야한다는 조항을 포함.
GNU Lesser GPL(LGPL)
좋은 자유 소프트웨어 제품이 더 많이 쓰이고, 표준이 되도록 유도하기 위해 단순한 라이브러리 모듈 링크를 허용한 라이선스.
너무 강력한 철학이 담긴 GPL의 카피레프트 조항을 보완하기 위해 만든 라이선스로 자유소프트웨어를 지향하짐만 GPL이 오히려 자유소프트웨어의 철학을 훼손한다는 생각에서 나온 라이선스.
LGPL 라이브러리를 정적 링크하는 애플리케이션을 배포하는 경우에는 LGPL 라이브러리의 소스코드와, 애플리케이션의 오브젝트 코드도 공개해야한다.
LGPL 라이브러리를 동적 링크하는 애플리케이션을 배포하는 경우에는 LGPL 라이브러리의 소스코드를 공개해야한다. 하지만 애플리케이션의 오브젝트 코드도 공개할 필요는 없다.
Mozila Public License (MPL)
모질라 공용 허가서는 과거 넷스케이프 웹브라우저의 소스코드를 공개하기 위해 개발된 라이선스.
MPL의 특징은 소스코드와 실행파일의 저작권을 분리했다는 부분이 있다.
MIT License
Berkeley Software Distribution(BSD) License
버클리 캘리포니아 대학에서 배포하는 공개 SW라이선스.
공공기관에서 만들어낸 것으로 공익성이 강하다. 따라서 아무런 제한 없이 누구나 자신의 용도에 사용할 수 있다.
라이선스 및 저작권 표시 조건 외엔 제약이 없는 굉장히 자유로운 라이선스 중 하나이다.