티스토리 뷰

오픈소스

오픈 소스란?

토마's 2018. 7. 20. 12:04

1. 오픈 소스(Open Source)란?


오픈 소스는 소프트웨어 혹은 하드웨어의 제작자가 권리를 지키면서 원시 코드를 누구나 열람할 수 있도록 한 소프트웨어 혹은 오픈 소스 라이선스에 준하는 모든 통칭을 말합니다. 즉, 소스 코드가 공개된 소프트웨어 또는 하드웨어이며, 소스의 수정이나 공유가 가능하다라고 생각하시면 됩니다.


그러나, 소스 코드를 공개한다고 해서 모두 오픈 소스인 것은 아니며, 오픈 소스가 꼭 무료인 것만은 아닙니다. 오픈 소스 소프트웨어의 반대말은 Proprietary Software(사유)이며, 오픈 소스이면서도 유료인 것도 있고, 사유이면서 무료인 것들도 있습니다.



2. 사유 소프트웨어 vs 오픈 소스 소프트웨어 

    • 사유 소프트웨어의 발전
      1. 기업들이(ex: Microsoft) 자신이 개발하는 소프트웨어를 위해 인력을 고용함
      2. 소프트웨어가 필요한 사람들은 회사에 돈을 지불하고 구입
      3. 소비자들이 더 필요로 할수록, 회사가 커지고 많은 인력이 투입되어 발전이 이루어짐


    • 오픈 소스 소프트웨어의 발전
      1. 시간이 있고, 열정이 넘치는 개발자들이 업무의 연장 혹은 취미 삼아서 개발
      2. 사용자들이 버그를 제보하거나 수정, 기능을 추가하기도 함
      3. 기업들이 오픈 소스 개발을 지원하기도 함



3. 오픈 소스의 대표적인 사례


    • GNU 프로젝트 (GNU is Not UNIX)

완전 자유인 OS를 만드는 프로젝트이며, 1980년대 리차드 스톨만(Richard Stallman)이 런치하고 FSF(Free Software Foundation)를 설립


    • 리눅스 (LINUX : LINUX Is Not UNIX or LINU's miniX)

리누스 토발즈(Linus Torvalds)에 의해 만들어 졌으며, GNU OS 프로젝트의 커널이고, GNU OS를 나타내는 말로도 쓰이고 있습니다. 누구나 무료로 사용할 수 있는데다 공개된 코드 기반으로 프로그램을 마음대로 변경이 가능하고, 인터넷을 이용하는 다수의 기술자가 소프트웨어를 공동으로 개발할 경우, 보다 나은 소프트웨어를 단기간에 개발할 수 있다는 개념에서 추진 되었음



4. 오픈소스의 장단점


    • 장점

- 낮은 진입비용 : 오픈소스는 무료로 다운로드 및 소스코드의 수정 및 (재)배포가 가능하므로 일반적으로 초기 개발 비용이 새로 개발하는 것에 비해 1/2 정도인 것으로 알려져 있습니다.

- 빠르고 유연한 개발 : 오픈소스 커뮤니티는 보통 최신 기술 정보 및 문제점과 해결책을 공유하는 형태로 자유롭게 운영되기 때문에 독점 프로그램에 비해 기술 발전 속도가 빠릅니다.

- 호환성 : 오픈소스는 주로 오픈 포맷 또는 프로토콜을 사용하기 때문에 서로 다른 소프트웨어간 상호 연동성이 보장됩니다. 모든 기기들이 서로 다른 네트워크를 통해 하나로 연결되는 유비쿼터스 시대에 필수적인 요소입니다.

- 신뢰성과 안정성 : 오픈소스의 개발 과정을 보면 전세계에 있는 수많은 우수한 개발자들이 직접 개발과 디버깅 과정에 참여하기 때문에In-house에서 폐쇄적으로 개발되는 독점 프로그램에 비해 비교적 안정적으로 동작합니다. 하지만 신뢰성과 안정성은 많은 개발자들이 적극적으로 참여할 때에만 가능하므로, 사용하고자 하는 오픈소스의 개발 과정, 평판 등을 주의 깊게 살펴야 합니다. 실제로 잡다한 수많은 오픈소스들이 있기 때문에 쓸만한 오픈소스를 가려내는 것이 중요합니다.


  • 단점

- 애플리케이션의 부족 : 대부분의 이용자들이 MS Windows기반의  GUI에 익숙한 반면, 오픈소스는 GUI가 일반적이지 않습니다. 또 오픈소스는 리눅스 기반으로 개발된 애플리케이션이 많기 때문에 윈도우즈 기반 애플리케이션과 호환되지 않는 문제점도 내포하고 있습니다.

- 빈약한 문서 : 오픈소스를 수정하여 원하는 애플리케이션을 제작하고자 할 경우 문서화가 중요한데, 상용 프로그램에 비해 오픈소스는 체계적인 문서를 갖추지 않은 경우가 많습니다. 경우에 따라서는 개발 과정을 지체시키는 원인이 되기도 합니다.

- 불확실한 로드맵 : 오픈소스는 영리는 목적으로 하는 회사에서 개발하는 것이 아니라 개인의 자발적인 참여를 통해 개발되는 경우가 많습니다. 따라서, 독점 프로그램에서 볼 수 있는 로드맵을 기대하기 어렵습니다. 어느 날 갑자기 단종되고, 업그레이드가 중단되는 경우도 있습니다.

- 지적재산권 : 일반적으로 오픈소스를 수정한 프로그램은 사용료 없이 배포할 것을 요구하고 있습니다. 따라서 기업이 보유한 특허를 소스 코드에 포함시켜 재 배포하려는 경우 반드시 명확안 입장을 밝히고 오픈소스 저작권자의 정책을 고려해야 합니다.



이상으로, 오픈소스가 무엇인지에 대한 간략한 포스팅을 마치도록 하겠습니다. 오픈 소스 카테고리의 다음 내용들은 괜찮은 오픈소스가 무엇이 있는지 또는 추천하고 싶은 오픈소스가 있으면 소개하는 포스팅을 작성하도록 하겠습니다.