무료= 오픈소스
1.개요
오픈소스란 원래 오픈소스 소프트웨어(Open Source Software, OSS)를 뜻하는 용어입니다. 오픈소스 소프트웨어는 공개적으로 액세스할 수 있게 설계되어 누구나 자유롭게 확인, 수정, 배포할 수 있는 코드입니다.
오픈소스 소프트웨어는 동료 평가(peer review) 와 커뮤니티 기반 프로덕션에 의지하므로, 분산된 동시에 협업 방식으로 개발됩니다. 단일 작성자 또는 기업이 아닌 커뮤니티가 개발하므로 독점적 소프트웨어보다 저렴하고, 유연하며, 지속성이 있습니다.
오픈소스는 단순한 소프트웨어 프로덕션을 넘어서는 작업 방식이자 하나의 흐름이 되었습니다. 이러한 흐름은 오픈소스 소프트웨어의 가치와 분산된 프로덕션 모델을 활용하여 커뮤니티와 업계가 당면한 문제를 해결할 새로운 방법을 찾습니다.
오픈 소스는 소프트웨어 혹은 하드웨어의 제작자가 권리를 지키면서 원시 코드를 누구나 열람할 수 있도록 한 소프트웨어 혹은 오픈 소스 라이선스에 준하는 모든 통칭을 말합니다. 즉, 소스 코드가 공개된 소프트웨어 또는 하드웨어이며, 소스의 수정이나 공유가 가능하다라고 생각하시면 됩니다.
그러나, 소스 코드를 공개한다고 해서 모두 오픈 소스인 것은 아니며, 오픈 소스가 꼭 무료인 것만은 아닙니다. 오픈 소스 소프트웨어의 반대말은 Proprietary Software(사유)이며, 오픈 소스이면서도 유료인 것도 있고, 사유이면서 무료인 것들도 있습니다.

오픈소스 소프트웨어(Open Source Software, OSS) 는 무엇인가?
오픈소스 소프트웨어는 최종 사용자가 소스 코드를 합법적으로 사용할 수 있도록 특별한 라이센스를 통해 릴리스됩니다. 이러한 라이센스는 여러 가지가 있지만, 일반적으로 다음과 같은 소프트웨어를 오픈소스 방식이라고 간주합니다.
- 추가 비용 없이 소스 코드 형식으로 제공됩니다. 즉, 사용자는 소프트웨어를 구성하는 코드를 볼 수 있으며, 원하는 경우 얼마든지 변경할 수 있습니다.
- 소스 코드를 새 소프트웨어에 다른 용도로 사용할 수 있습니다. 즉, 누구든 해당 소스 코드를 활용해 자신의 프로그램을 만들고 이를 배포할 수 있다는 뜻입니다.
오픈소스 소프트웨어는 무료인가요?
오픈소스 소프트웨어가 반드시 무료로 제공되는 실행 가능한 소프트웨어라는 의미는 아닙니다. 그러나 그 소스 코드는 무료로 제공되어야 합니다.
예를 들면, Red Hat® Enterprise Linux®의 소스 코드는 누구에게든 무료로 제공되지만(직접 확인하세요), 이러한 소스 코드를 실행 가능한 코드로 변환하는 데는 전문 지식과 시간, 서버가 필요합니다. 조직에서 소스 코드를 재구성하지 않고도 바로 사용할 수 있는 Red Hat Enterpirse Linux용 프로덕션 레디 코드를 원한다면 서브스크립션이 있어야 합니다.
오픈소스 소프트웨어는 가끔 프리 소프트웨어 운동과 혼동되어, 오픈소스 자체가 "무료"를 의미한다고 오해되는 경우가 많습니다. 프리 소프트웨어 운동은 1970년대 해커 문화에서 발전해 나간 것으로, 공식적으로 Richard Stallman이 시작했으며 GNU Project와 비영리 조직인 Free Software Foundation의 일환으로 시작되었습니다. 일반적으로 "프리 소프트웨어"는 최종 사용자의 자유를 강조하기 위한 것이지만, "무료"를 의미한다고 잘못 여겨질 때도 있습니다.
사실은 프리 소프트웨어도, 오픈소스 소프트웨어도 비용에 대해 언급한 바는 없으므로 두 소프트웨어 모두 합법적으로 판매하거나 무료로 제공될 수 있습니다.
프리 소프트웨어와 오픈소스 소프트웨어는 공통된 가치를 공유하며, 둘을 합쳐 "프리 및 오픈소스 소프트웨어"(FOSS)라는 용어라고 표현하기도 합니다.
오픈소스 소프트웨어가 중요한 이유는 무엇인가요?
오픈소스 소프트웨어는 프로그래머만이 아니라, 모두에게 중요한 요소입니다. 폐쇄형 소스 모델에 비해 오픈소스 모델은 더 많은 사람들이 혁신을 실현할 수 있는 가능성을 열어주기 때문입니다. 예를 들어, 오픈소스 커뮤니티는 기술을 가진 사람은 누구든 참여해 코드에 기여할 수 있는 오픈소스 프로젝트를 기반으로 조직됩니다. 이러한 그룹은 독점 소프트웨어 팀과 마찬가지로 오픈소스 프로젝트에 기여하기 위한 표준을 유지하면서도, 기여하려는 모두에게 이러한 프로세스를 공개하고 있습니다.
이러한 오픈소스 개발 모델을 기반으로 오늘날 많은 사람들이 사용하는 중요한 애플리케이션과 클라우드 플랫폼이 탄생하게 되었습니다. 이중 가장 유명한 것은 대부분의 웹을 지원하는 서비스 스택 모델인 LAMP입니다. LAMP는 다음의 약자입니다.
- Linux: 오픈소스 운영 체제(OS)이자 세계 최대 규모의 오픈소스 프로젝트
- Apache: 초기 웹에서 핵심 역할을 한 오픈소스 크로스 플랫폼 웹 서버
- MySQL: 대부분의 데이터베이스 기반 웹 애플리케이션에서 사용하는 오픈소스 관계형 데이터베이스 관리 시스템
- PHP: 소프트웨어 개발에 사용되는 범용 스크립팅 언어(가끔 Perl 또는 Python 언어로 대체됨)
널리 사용되는 오픈소스 기술의 다른 예로는 Android 모바일 OS, Mozilla Firefox 웹 브라우저, 널리 사용되는 버전 제어 시스템인 Git과 관련 Office 제품군인 OpenOffice 및 LibreOffice가 있습니다. 광범위하게 봤을 때 클라우드 컴퓨팅, 빅데이터, 인공지능 분야에서의 혁신은 대부분 오픈소스 소프트웨어 프로젝트부터 시작되었습니다.
오픈소스 소프트웨어는 초기 웹 및 오늘날 널리 사용되는 일부 애플리케이션에서 중요한 역할을 할 뿐만 아니라, 비즈니스 및 개인 프로그래머에게도 이점을 제공합니다. 소스 코드를 공개하면 누구든 보다 쉽게 연구하여, 새로운 프로그래밍 기술을 개발할 수 있습니다. 또한 학생은 오픈소스 라이센스를 통해 코드를 편집하고, 이를 친구 또는 보다 광범위한 오픈소스 커뮤니티와 공유하며, 기존 오픈소스 프로젝트를 수정해 실질적으로 커뮤니티에 기여하는 등 실습을 할 수 있습니다.
오픈소스 소프트웨어는 기업이 구체적인 요구 사항에 맞게 커스터마이징하거나, 원래 소스코드에는 포함되지 않았던 새로운 사용자 경험으로 혁신할 수 있도록 지원하기도 합니다. 소스 코드가 공개되며 이를 지원하는 활발한 커뮤니티가 있는 경우 더 많은 개발자가 보안 취약점을 찾아낼 수 있으므로 오픈소스 소프트웨어를 선호하는 이도 있습니다.
오픈소스 소프트웨어는 오픈소스 개발 모델의 결과입니다. 오픈소스 개발 모델은 분산형이며, 개방적인 협업과 피어 프로덕션을 권장합니다. 이는 소프트웨어 개발에 광범위한 영향을 미쳤으며, 그 핵심 원칙을 "오픈소스 방식"이라고 부르기도 합니다.
오픈소스 방식은 매우 효율적이어서 우수한 기술 인재를 모으기에 용이합니다. 기술 혁신의 상당수가 오픈소스 커뮤니티 내에서 일어나고 있으므로 전 세계가 오픈소스 소프트웨어를 사용하게 됩니다. 유명 웹사이트와 애플리케이션은 Linux, 쿠버네티스 및 Git 프로젝트에서 탄생한 경우가 많으며, 많은 사람들이 오픈소스 브라우저인 Firefox와 Chromium을 통해 인터넷에 액세스합니다.
2. 오픈소스의 장단점
- 장점
- 낮은 진입비용 : 오픈소스는 무료로 다운로드 및 소스코드의 수정 및 (재)배포가 가능하므로 일반적으로 초기 개발 비용이 새로 개발하는 것에 비해 1/2 정도인 것으로 알려져 있습니다.
- 빠르고 유연한 개발 : 오픈소스 커뮤니티는 보통 최신 기술 정보 및 문제점과 해결책을 공유하는 형태로 자유롭게 운영되기 때문에 독점 프로그램에 비해 기술 발전 속도가 빠릅니다.
- 호환성 : 오픈소스는 주로 오픈 포맷 또는 프로토콜을 사용하기 때문에 서로 다른 소프트웨어간 상호 연동성이 보장됩니다. 모든 기기들이 서로 다른 네트워크를 통해 하나로 연결되는 유비쿼터스 시대에 필수적인 요소입니다.
- 신뢰성과 안정성 : 오픈소스의 개발 과정을 보면 전세계에 있는 수많은 우수한 개발자들이 직접 개발과 디버깅 과정에 참여하기 때문에In-house에서 폐쇄적으로 개발되는 독점 프로그램에 비해 비교적 안정적으로 동작합니다. 하지만 신뢰성과 안정성은 많은 개발자들이 적극적으로 참여할 때에만 가능하므로, 사용하고자 하는 오픈소스의 개발 과정, 평판 등을 주의 깊게 살펴야 합니다. 실제로 잡다한 수많은 오픈소스들이 있기 때문에 쓸만한 오픈소스를 가려내는 것이 중요합니다.
- 단점
- 애플리케이션의 부족 : 대부분의 이용자들이 MS Windows기반의 GUI에 익숙한 반면, 오픈소스는 GUI가 일반적이지 않습니다. 또 오픈소스는 리눅스 기반으로 개발된 애플리케이션이 많기 때문에 윈도우즈 기반 애플리케이션과 호환되지 않는 문제점도 내포하고 있습니다.
- 빈약한 문서 : 오픈소스를 수정하여 원하는 애플리케이션을 제작하고자 할 경우 문서화가 중요한데, 상용 프로그램에 비해 오픈소스는 체계적인 문서를 갖추지 않은 경우가 많습니다. 경우에 따라서는 개발 과정을 지체시키는 원인이 되기도 합니다.
- 불확실한 로드맵 : 오픈소스는 영리는 목적으로 하는 회사에서 개발하는 것이 아니라 개인의 자발적인 참여를 통해 개발되는 경우가 많습니다. 따라서, 독점 프로그램에서 볼 수 있는 로드맵을 기대하기 어렵습니다. 어느 날 갑자기 단종되고, 업그레이드가 중단되는 경우도 있습니다.
- 지적재산권 : 일반적으로 오픈소스를 수정한 프로그램은 사용료 없이 배포할 것을 요구하고 있습니다. 따라서 기업이 보유한 특허를 소스 코드에 포함시켜 재 배포하려는 경우 반드시 명확안 입장을 밝히고 오픈소스 저작권자의 정책을 고려해야 합니다.
이상으로, 오픈소스가 무엇인지에 대한 간략한 포스팅을 마치도록 하겠습니다
*본문 내용은 Red Hat 홈페이지 내용을 부분 참조하여 작성하였습니다.
'◈◈IT.News◈◈' 카테고리의 다른 글
[iPhone 15 PRO] 디자인 종류 사진 모음 4가지 종류 사진들 모아서 스크랩해 보았습니다. (4) | 2023.10.23 |
---|