INDEX
개요
오픈 소스란 소프트웨어 프로그램을 개발하는 과정에 필요한 소스 코드나 설계도를 누구나 접근해서 열람할 수 있도록 공개하는 것을 의미합니다. 보통 소스가 공개된 소프트웨어를 ‘오픈 소스 소프트웨어’ 라고 하고, 소프트웨어 말고도 개발 과정이나 설계도가 공개되는 경우 하드웨어에도 오픈 소스 모델이 적용할 수 있으며, 글꼴과 같은 데이터에도 오픈 소스 개발 모델이 적용되는 경우가 있습니다. 오픈 소스 소프트웨어는 공개적으로 액세스할 수 있게 설계되어 누구나 자유롭게 확인, 수정, 배포할 수 있는 코드입니다.
단순히 소스를 공개만 하는 것이 아니라, 이를 2차 창작하는 것을 허용하기도 하고, 나아가 조건 없이 상업적 용도로까지 사용할 수 있게 하는 경우가 있으며, 최종 사용자가 소스 코드를 합법적으로 사용할 수 있도록 특별한 라이센스를 통해 릴리스됩니다. 이러한 라이센스는 여러 가지가 있지만, 일반적으로 다음과 같은 소프트웨어를 오픈소스 방식이라고 간주합니다.
추가 비용 없이 소스 코드 형식으로 제공됩니다. 즉, 사용자는 소프트웨어를 구성하는 코드를 볼 수 있으며, 원하는 경우 얼마든지 변경할 수 있습니다.
소스 코드를 새 소프트웨어에 다른 용도로 사용할 수 있습니다. 즉, 누구든 해당 소스 코드를 활용해 자신의 프로그램을 만들고 이를 배포할 수 있다는 뜻입니다.
오픈 소스 소프트웨어
위에서도 말했듯이 오픈 소스 소프트웨어란 소스가 공개(open)된 소프트웨어입니다. 대부분의 오픈 소스 소프트웨어가 무료로 사용이 가능하기 때문에 많은 사용자들이 프리웨어(Freeware)와 헷갈리는 경우가 많지만, 단순히 사용이 무료인 프리웨어와 소스 코드가 공개된 오픈 소스 소프트웨어는 엄연히 다른 개념입니다.
일반 사용자의 입장에서는 둘 다 무료로 사용이 가능하다는 점에서 비슷할 수 있지만, 소스 코드를 보고 이해할 수 있고 수정할 수 있는 개발자의 입장에서는 크게 다르게 느껴질 것입니다. 예를 들어, 프리웨어의 경우 사용자가 버그를 발견했다 하더라도 소스 코드를 모르고 저작권 등의 문제와 직면할 수 있기에 문제점을 직접 수정할 수 없고 새로운 아이디어가 떠올랐다 해도 그것을 프로그램에 적용할 수 없습니다.
하지만 오픈 소스 소프트웨어의 경우 사용자가 프로그래밍 언어를 안다면 공개되어 있는 소스를 이용해 직접 소프트웨어의 문제를 수정하거나, 개선 시키는 것이 가능합니다. 이러한 점으로 개발이 중단된 프리웨어의 경우 프로그램이 그대로 사장되는 경우도 있으나, 오픈 소스 소프트웨어는 공개된 소스코드를 또 다른 개발사/개발자가 이어받아 새로이 개선해 나가면서 개발하는 모습도 볼 수 있습니다. 소스가 공개되어 있고, 이를 마음껏 개조해 사용할 수 있다는 점에서 개발에 필요한 방향으로 최적화가 용이하기 때문에 일반 개인 사용자 보다는 개발자들 사이에서 강세를 보이고 있습니다.
오픈 소스의 장점
오픈 소스는 어떤 장점을 가지고 있기에 많은 사용자들에게 사랑 받는것일까요? 오픈 소스만의 매력을 가지도록 하는 주요 장점들은 다음과 같습니다.
- 비용 절감 오픈 소스 소프트웨어는 프리웨어와 마찬가지로 무료 이용이 가능하고 더 나아가 소스코드가 공개 되어 직접 소프트웨어의 개선 또는 수정이 가능해지며, 이로 인해 개발 비용이 적게 드는 편입니다. 실제로 오픈 소스는 무료 다운로드와 수정/재배포가 가능하여 초기 개발 비용이 새 소프트웨어를 개발하는 것의 절반 정도 되는 것으로 알려져 있습니다.
- 빠르고 유연한 개발 오픈소스 커뮤니티는 다양한 이용자들에게서 최신 기술 정보와 문제점의 해결책을 공유하여 운영되기 때문에 독점 프로그램에 비해 기술의 발전 속도가 빠른 편입니다. 특히 개발자와 사용자가 일치하는 경우 클로즈드 소스 프로그램보다 뛰어난 고품질의 오픈 소스 소프트웨어가 개발되기도 합니다.
- 호환성/유연성 오픈 소스는 주로 오픈 포맷 또는 오픈 프로토콜(개방형 표준)을 사용하기 때문에 서로 다른 소프트웨어간의 연동이 쉽습니다. 서로 다른 플랫폼끼리의 상호 연동 또한 가능하고 또한 특정 기기, 운영체제, 어플리케이션에 종속되지 않고 자유로운 변경이 가능합니다. 여러 기기들이 네트워크를 통해 하나로 연결되는 유비쿼터스 시대에 아주 적합한 장점이라고 할 수 있습니다.
- 신뢰성/안정성 전 세계의 수많은 개발자들과 전문가들이 오픈 소스의 개발에 참여하기 때문에 폐쇄적으로 개발되는 독점 프로그램에 비해 안정적으로 작동합니다.
오픈 소스의 단점
환대 받는 오픈 소스도 완벽하지만은 않습니다. 오픈 소스를 사용함에 있어 따르는 단점들은 다음과 같습니다.
- 빈약한 문서 오픈소스를 수정하여 원하는 애플리케이션을 제작하고자 할 경우 문서화가 중요한데, 상용 프로그램에 비해 오픈소스는 체계적인 문서를 갖지 않은 경우가 많습니다. 경우에 따라서는 개발과정을 지체시키는 원인이 되기도 합니다. 불확실한 로드맵 오픈소스는 영리를 목적으로 하는 회사에서 개발되는 것이 아니라 개인의 자발적인 참여를 통해 개발되는 경우가 많기 때문에 독점 프로그램에서 볼 수 있는 로드맵을 기대하기 어렵습니다. 어느날 갑자기 단종되고, 업그레이드가 중단되는 경우도 있습니다.
- 지적재산권 일반적으로 오픈소스를 수정한 프로그램은 사용료 없이 배포할 것을 요구하고 있습니다. 따라서 기업이 보유한 특허를 소스코드에 포함시켜 재배포하려는 경우, 반드시 명확한 입장을 밝히고 오픈소스 저작권자의 정책을 고려해야 합니다.
- 불명확한 주체 유지보수의 주체가 명확하지 않다보니 유지보수가 제대로 이루어지지 않는 경우가 많기도 합니다. 대부분의 오픈 소스 프로젝트는 비영리성으로 돌아가며 전적으로 유저 기여에 의존하기 때문에 업데이트가 비정기적이며 크리티컬한 문제의 해결이 지체 되는 경우도 많고 아예 업데이트 자체가 거의 멈춘 프로젝트들이 많습니다. 또한 해당 소프트웨어를 사용하다 문제가 발생할 경우 책임의 소재가 명확하지 않습니다.
오픈 소스 소프트웨어 목록
개발 및 텍스트 에디터 관련
- 이클립스 JAVA를 기반으로 한 통합 개발 환경
- Git 리누스 토르발스가 개발한 분산형 버전 관리 시스템(VCS)
- Node.js 오픈 소스 JavaScript 엔진인 크롬 V8에 비동기 이벤트 처리 라이브러리인 libuv를 결합한 플랫폼
네트워크 관련
- 아파치 HTTP 서버 “NCSA HTTPd”를 기반으로 만들어진 웹 서버 프로그램
- OpenVPN 오픈소스 VPN 프로토콜과 그 접속 프로그램
운영체제 관련
- 리눅스 컴퓨터 OS 커널의 일종인 리눅스 커널, 또는 리눅스 커널을 사용하는 운영체제
- 안드로이드 리눅스 커널을 기반으로 Google에서 제작하고 있는 모바일 운영 체제와 미들웨어 및 중요 애플리케이션이 포함된 소프트웨어