오픈소스 개요
현재, 전 세계 연간 오픈소스 컴포넌트 다운로드 수는 약 4.5조 건(2024년 기준)이며 주요 IT 기업의 95%가 오픈소스를 적극적으로 사용하고 있습니다.
널리 사용되어 가깝게 느껴지지만 또 헷갈릴 수 있는 오픈소스에 대해, 이 가이드에서는 오픈소스가 무엇인지, 또 오픈소스 이니셔티브(Open Source Initiative, OSI)에서 정립한 오픈소스 정의 기준(Open Source Definition, OSD)은 무엇인지 알아봅니다.
2023년 초에 GitHub에서 총 개발자가 1억 명을 넘었으며, 개발자 수는 빠르게 증가하고 있습니다. 2024년에 전 세계 개발자는 5억 1,800만 개가 넘는 오픈 소스 프로젝트에 52억 개 이상의 기여를 했습니다.
오픈소스 소프트웨어의 합법적인 정의와 가이드라인을 제공하는 비영리 단체입니다.
FOSS (Free and Open Source Software)
오픈소스(FOSS, Free and Open Source Software)는 저작권자가 소스 코드를 공개하여 누구나 사용, 수정, 재배포 할 수 있는 소프트웨어를 말합니다.
오픈소스 정의(The Open Source Definition)
오픈소스는 단순히 소스 코드 공개를 의미하지 않습니다. 오픈소스 소프트웨어의 배포 조건은 아래 기준을 준수해야 합니다.
1. 자유로운 재배포(Free Redistribution)
오픈소스 라이선스는 어떠한 당사자도 여러 출처의 프로그램을 포함한 종합적인 소프트웨어 배포의 구성 요소로 판매하거나 무료로 배포하는 것을 제한하지 않아야 합니다. 또한, 이러한 판매에 대해 로열티나 다른 비용을 요구해서는 안 됩니다.
2. 소스 코드(Source Code)
오픈소스 프로그램은 반드시 소스 코드를 포함해야 하며, 컴파일된 형태뿐만 아니라 소스 코드 형태로도 배포가 가능해야 합니다. 만일 오픈소스 소프트웨어 제품이 소스 코드와 함께 배포되지 않는 경우, 합리적인 재생산 비용(무료로 인터넷을 통해 다운로드 가능한 것을 권장) 이하로 소스 코드를 얻을 수 있도록, 잘 알려진 방법으로 제공되어야 합니다.
또한, 소스 코드는 프로그래머가 프로그램을 수정할 때 선호하는 형식이어야 하며, 의도적으로 난독화된 소스 코드는 허용되지 않습니다. 전처리기 또는 번역기의 출력과 같은 중간 형식도 허용되지 않습니다.
3. 파생 저작물(Derived Works)
오픈소스 라이선스는 수정 및 파생 저작물을 허용해야 하며, 원본 소프트웨어의 라이선스와 동일한 조건으로 배포할 수 있어야 합니다.
4. 저작자의 소스 코드 원형 유지(Integrity of The Author’s Source Code)
오픈소스 라이선스는, 빌드 시 프로그램을 수정할 목적으로 소스 코드와 함께 “패치 파일”의 배포를 허용하는 경우에만 소스 코드가 수정된 형태로 배포되는 것을 제한할 수 있습니다.
오픈소스 라이선스는 수정된 소스 코드로 구축된 소프트웨어의 배포를 명시적으로 허용해야 합니다. 또한, 오픈소스 라이선스는 원본 소프트웨어와 그 파생 저작물을 구분하기 위해, 차별화된 명칭이나 버전 번호를 수반하는 파생 작업을 파생 저작물에 대해 요구할 수 있습니다.
5. 개인 또는 집단에 대한 차별 금지(No Discrimination Against Persons or Groups)
오픈소스의 라이선스는 특정인이나 그룹에게 차별 없이, 누구나 해당 오픈소스를 사용할 수 있도록 해야 합니다.
6. 사용 분야에 대한 차별 금지(No Discrimination Against Fields of Endeavor)
오픈소스 라이선스는 특정 분야에서 프로그램을 사용하는 사람의 오픈소스 사용을 제한해서는 안 됩니다. 예를 들어, 프로그램이 비즈니스에서 사용되거나 유전자 연구에 사용되는 것을 제한할 수 없습니다.
7. 라이선스 배포(Distribution of License)
프로그램에 부여된 오픈소스 라이선스가 보장하는 권리는, 프로그램을 재배포하는 모든 사람에게 그대로 적용되어야 하며, 이 과정에서 추가적인 라이선스 실행은 필요하지 않습니다.
8. 특정 제품에만 유효한 라이선스 금지(License Must Not Be Specific to a Product)
프로그램이 어떤 권한을 갖는지는 그 프로그램이 특정한 소프트웨어 배포판의 일부라는 사실과 독립적입니다.
즉, 그 프로그램이 어떤 배포판의 일부더라도 그 프로그램 자체가 갖는 권한은 그 프로그램이 단독으로 존재하거나, 어떤 배포판의 일부로 존재하는 경우에도 동일합니다.
또한, 프로그램이 해당 배포판에서 추출되어 라이선스 조건 내에서 사용되거나 배포하는 경우, 프로그램을 재배포하는 모든 사람들은 원본 소프트웨어 배포 때 주어진 권리와 동일한 권리를 가져야 합니다.
9. 다른 소프트웨어를 제한하는 라이선스 금지(License Must Not Restrict Other Software)
오픈소스 라이선스 조건은 해당 소프트웨어만을 대상으로 하며, 그와 함께 배포되는 다른 소프트웨어를 제한해서는 안됩니다. 예를 들어, 라이선스는 동일한 매체에 배포되는 다른 모든 프로그램이 오픈 소스 소프트웨어여야 한다고 주장해서는 안 됩니다.
A 소프트웨어가 오픈소스 라이선스를 가지고 있고 이와 함께 B 소프트웨어가 동일한 매체에 배포된다면, A 소프트웨어의 라이선스는 B 소프트웨어에게는 아무런 영향을 미치지 않아야 합니다. 특히, A 소프트웨어의 오픈소스 라이선스 때문에 B 소프트웨어 또한 오픈소스가 되어야 한다는 조건을 부여하면 안 됩니다. 이는 소프트웨어 개발자가 자신의 소프트웨어를 자유롭게 선택하고 라이선스를 적용하도록 보장하기 위한 것입니다. 각 소프트웨어는 개별적으로 그에 적합한 맞춤형 라이선스를 가질 수 있어야 합니다.
10. 기술 중립적인 라이선스 사용(License Must Be Technology-Neutral)
오픈소스 라이선스의 조항은 개별 기술이나 인터페이스 스타일에 근거할 수 없습니다.
참고
오픈소스 소프트웨어가 반드시 무료로 제공되는 실행 가능한 소프트웨어라는 의미는 아닙니다. 그러나 그 소스 코드는 무료로 제공되어야 합니다.
예를 들어, Red Hat® Enterprise Linux®의 소스 코드는 무료로 제공되지만, 이러한 소스 코드를 실행 가능한 코드로 변환하는 데는 전문 지식과 시간 및 서버가 필요합니다. 소스 코드를 재구성하지 않고도 바로 사용할 수 있는 Red Hat Enterpirse Linux의 프로덕션 레디(Production-ready) 코드를 원한다면, 비용을 지불하여 서브스크립션을 구매해야 합니다.