원래 오픈 소스 소프트웨어(Open Source Software, OSS)를 뜻하는 용어
오픈 소스 소프트웨어는 공개적으로 액세스할 수 있게 설계되어 누구나 자유롭게 확인, 수정, 배포할 수 있는 코드
오픈 소스 소프트웨어는 동료 평가(peer review) 와 커뮤니티 기반 프로덕션에 의지하므로, 분산된 동시에 협업 방식으로 개발
단일 작성자 또는 기업이 아닌 커뮤니티가 개발하므로 독점적 소프트웨어보다 저렴하고, 유연하며, 지속성이 있다.
오픈 소스 소프트웨어는 최종 사용자가 소스 코드를 합법적으로 사용할 수 있도록 특별한 라이센스를 통해 릴리스
대표적인 OSS 라이센스
오픈 소스 소프트웨어가 반드시 무료로 제공되는 실행 가능한 소프트웨어라는 의미는 아님
그러나 그 소스 코드는 무료로 제공되어야 한다.
프리 소프트웨어 운동
소스 코드를 변경하고, 변경한 소프트웨어를 공유하려면 원래 프로젝트에 해당 변경 사항을 다시 공유해야만 한다. (OSS와 다른점)
OSS와 가치공유로 "프리 오픈 소스 소프트웨어(Free and Open Source Software, FOSS)" 라는 용어가 널리 사용됨
오픈 소스 개발 모델은 오픈 소스 커뮤니티 프로젝트에서 오픈 소스 프로젝트를 개발하기 위한 프로세스
이러한 소프트웨어는 오픈 소스 라이센스로 출시되어, 누구든지 소스 코드를 보고 수정가능
대부분의 오픈 소스 프로젝트는 GitHub에서 호스팅되며, 여기에서 저장소(Repository)에 접속하거나 커뮤니티 프로젝트에 참여할 수 있습니다.
대표적인 예 - 리눅스, 쿠버네티스
소스 코드에 누구나 액세스할 수 있으며 오픈소스 커뮤니티 자체도 활발하기 때문에, 오픈 소스 코드는 동료 프로그래머에 의해 적극적으로 검토 및 개선될 수 있다.
침체 상태에 놓인 비공개 코드보다 훨씬 살아 있는 코드라고 간주할 수 있다.
오픈 소스를 사용하면 해당 코드에서 어떤 종류의 데이터가 어디로 이동했는지, 어떤 변경 사항이 있었는지 정확하게 파악해야 하는 경우 벤더에 의존할 필요 없이 직접 이를 확인 및 추적할 수 있다.
독점 코드의 경우 해당 코드의 업데이트, 패치 작업을 제어하는 단일 작성자 또는 기업에 의존해야 한다.
오픈 소스 코드는 활발한 오픈 소스 커뮤니티를 통해 지속적으로 업데이트되므로 오래 지속되고 오픈 표준과 동료 평가를 통해 테스트 역시 적절한 방식으로 자주 이루어진다.
오픈 소스는 수정을 강조하므로 오픈 소스 코드를 사용해 자신의 비즈니스 또는 커뮤니티에서 겪고 있는 고유한 문제를 해결할 수 있다.
해당 코드를 특정한 방식으로만 사용해야 한다는 법이 없으므로, 새로운 솔루션을 구현할 때 커뮤니티의 도움을 받고 동료 프로그래머에게 검토받을 수도 있다.
오픈 소스 코드 자체가 무료입니다. Ubuntu, Oracle(MySQL), Red Hat과 같은 기업을 활용하는 경우 지원 서비스, 보안강화, 상호 운용성 관리와 같은 부분에 비용을 지불하게 된다.
활발한 오픈 소스 커뮤니티 덕분에 하나의 관심 그룹 또는 기업에 의존하지 않고 다양한 지원, 리소스, 관점을 접할 수 있다.
Public Domain License
누구나 제한 없이 소프트웨어를 수정, 사용 또는 상업화 할 수 있다.
대부분의 경우 퍼블릭 도메인 오픈 소스 소프트웨어 제작자는 소프트웨어에 저작권을 부여하지 않기로 의도적이거나 자발적인 결정을 내렸다.
허용적 오픈 소스 라이선스에는 소프트웨어를 수정하거나 배포하는 방법에 대한 최소한의 요구 사항이 포함되어 있다.
대표적인 예
원본 소프트웨어는 저작권이 있고 오픈 소스이지만 사용자는 수정된 버전을 상업화하고 재배포할 수 있다.
LGPL (GNU Library General Public License)
약소 일반 퍼블릭 라이선스(LGPL)로 오픈 소스 구성 요소를 무제한으로 사용할 수 있다.
이러한 구성 요소는 코드에 연결하여 사용할 수 있는 라이브러리라는 코드 모듈로 액세스할 수 있는 경우가 많다.
애플리케이션에서 LGPL 소스 코드를 사용하면 애플리케이션을 상용화할 수 있다.
단, 기존 LGPL 코드를 수정하는 경우 동일한 라이선스로 재배포해야 한다.
Copyleft License
가장 일반적인 오픈 소스 라이선스이며 일반 퍼블릭 라이선스(GPL)가 대표적인 예. 카피레프트 라이선스 조건은 상업화를 제한한다.
카피레프트 오픈 소스 구성 요소를 수정하는 경우 애플리케이션과 함께 모든 새 소스 코드를 릴리스해야 한다. 그러나 애플리케이션을 내부에서만 사용하고 일반에 공개하지 않는 경우에는 그럴 필요가 없다.
GPL 수정본을 판매할 수 있지만 구매자가 원하는 경우 추가로 재배포할 수 있다.
새 코드의 저작권 설명에 모든 과거 코드 작성자의 기여한 바를 밝혀야 한다.
Open Source Initiative(OSI)
모든 유형의 오픈 소스 소프트웨어에 대해 교육하고 지지하는 글로벌 비영리 조직
표준 기관으로서 소프트웨어를 오픈 소스로 만드는 조건을 법적으로 정의하는 문서인 오픈 소스 정의를 유지 관리
Open Source Initiative의 오픈 소스 정의를 따르면 OSI 승인 라이선스 상표를 받을 수 있다. 상표는 신뢰를 구축하고 다른 사람들이 귀화와 함께 기여하고 협업하도록 장려한다. OSI는 승인된 라이선스 목록을 유지 관리하고 오픈 소스 커뮤니티에서 새 라이선스를 승인한다. 또한 소프트웨어에 대한 공개 표준 요구 사항을 규제한다.