오픈 소스

1 개요

Open Source

어떤 제품을 개발하는 과정에 필요한 소스나 설계도를 누구나 접근 해서 열람 가능하도록 공개하는 것. 보통 소스가 공개된 소프트웨어를 오픈 소스 소프트웨어라고 하며, 소프트웨어 말고도 개발 과정이나 설계도가 공개되는 경우 하드웨어에도 오픈 소스 모델이 적용 가능하며, 글꼴과 같은 데이터에도 오픈 소스 개발 모델이 적용되는 경우가 있다.
단순히 소스를 공개만 하는 것이 아니라, 이를 2차 창작하는 것을 허용하기도 하고 심지어 조건 없이 상업적 용도로도 사용할 수 있게 하는 경우가 있다.[1]

2 오픈 소스 소프트웨어

소스 코드가 공개(Open)된 프로그램이다. 대부분의 오픈 소스 소프트웨어는 무료로 사용 가능하기 때문에 프리웨어와 헷갈리는 경우가 많지만, 프리웨어는 무료로 사용 가능한 프로그램이고, 오픈 소스는 소스 코드가 공개된 프로그램이기 때문에 엄연히 다른 개념이다. (예를 들어 오픈 소스 소프트웨어를 돈 받고 파는 경우도 있다.) 자유 소프트웨어(Free Software)와 비슷하기는 하지만 오픈 소스 소프트웨어가 자유 소프트웨어보다 조금 더 상위 개념이다.

일반 사용자 입장에서는 프리웨어나 오픈 소스 소프트웨어나 단순히 공짜로 사용할 수 있다는 점에서는 비슷할 수 있지만, 소스코드를 보고 이해할 수 있고, 수정할 수 있는 개발자 입장에서는 크게 다르다. 예를 들어 상용, 혹은 프리웨어 프로그램을 사용하는 사람들은 버그를 발견했다 하더라도 소스 코드를 모르니 수정할 수 없고, 사용자가 새로운 아이디어가 떠올랐다 해도 그것을 곧바로 프로그램에 적용시킬 수도 없다. 비교적 간단한 프로그램일 경우 리버스 엔지니어링으로 어셈블러 수준에서 뜯어고칠 수는 있으나 코드가 공개된 것보다 몇 십 배는 어렵기도 하고, 저작권 등의 문제가 얽히고설키기에 하려는 사람은 없다고 보면 된다.

하지만, 사용자가 프로그래밍 언어를 아는 경우 소스가 공개되어 있다면, 본인이 직접 소프트웨어의 문제를 수정하거나 개선을 할 수 있게 되는 것이다. 또한, 개발 중이던 프리웨어가 개인적인 사정이나 회사의 사정으로 인해서 개발이 중지된 경우, 그대로 사장되는 경우가 종종 있는데, 오픈 소스 소프트웨어는 소스가 공개되어 있었기 때문에 다른 개발자/개발사가 이를 이어 받아서 새로이 개선해 나가면서 개발하는 것이 가능하다. 그래서 개발자와 사용자가 일치하는 개발 및 시스템, 네트워크 분야에는 웬만한 클로즈드 소스 상용 소프트웨어는 명함도 못 내밀 정도로 고품질의 오픈 소스 소프트웨어가 넘쳐난다. 다만 그렇지 않은 분야에선 말 그대로 취미 수준에 머물러 있는 경우도 많다.

물론 오픈 소스에도 단점은 있다. 특히 GPL 라이센스 부류의 오픈 소스에 해당되는 것인데, 가장 치명적인 단점이 상용화가 어렵다는 점이다(추구하는 방향이 상용화가 아니기도 하고, 골수 오픈소스 지지자들은 오히려 장점으로 생각하기도 한다). 흔히 GPL 소프트웨어는 무료라고 생각하는 사람들이 많은데, 사실 GPL은 소스 공개에 관련된 부분만을 라이선스에서 정의하고 있기 때문에, GPL 소프트웨어를 수정해서 유료로 판매하는 것은 이론상으로는 가능하다. 하지만, 유료로 판매한 GPL소프트웨어를 구매한 사용자가 다시 이를 수정해서 무료로 배포하는 것을 막을 수 없기 때문에, 유료 소프트웨어가 GPL 라이선스를 채택하는 경우는 극히 드물다. 상기했듯 추구하는 방향이 상용화가 아니기 때문에 간접적인 유료화를 최대한 막는 방향으로 라이센스가 변경되기도 한다.[2] 물론, 이를 극복하기 위한 방법도 존재하는데, 그중 하나가 듀얼 라이선스를 채택하는것. 대표적인 경우가 x264). 그 이외에도 레드햇처럼 소프트웨어 자체는 오픈 소스이지만 사후 지원 계약을 유료로 하는 방법이나, 광고를 달아서 애드웨어로 만들거나, 오픈 소스에 우호적인 단체나 기업으로부터 후원을 받거나, 사용자들에게 기부를 받는 등의 방법을 사용한다.

또 다른 단점으로, 소스를 도용 당할 수도 있다. 개발자들이 선의로 배포한 소스 코드를 상용 소프트웨어 제작사들이 도용해서 유료 프로그램을 제작해 버리는 것이다. 가끔은 그냥 조용히 소스 코드만 쓰는 것에 그치지 않고 아예 그 소스가 자신들이 제작한 것으로 잡아떼는 사태도 벌어진다. 그게 바로 티맥스 소프트티맥스 윈도우와 거기에 내장한 오피스 프로그램이다. GPL에 전염과 소스 코드 공개 강제 조항이 있는 것은 이런 상황을 막기 위해서이다.

또한 오픈 소스에는 원칙적으로 사후 지원, 즉 AS 제공 의무가 없다. 이것은 소스코드를 제공하니 문제가 발생하면 사용자가 직접 고쳐 쓰라는 의미이다. 오픈 소스 프로그램인데도 불구하고 빨리 고쳐달라고 제작자 게시판에 욕을 해대는 사람들이 있는데, 그러지 말자. 오픈 소스는 그렇게 해 줄 의무 자체가 없다.

물론 일반적인 용도로 많이 사용되는 오픈 소스 소프트웨어의 경우 이런 사후지원이 없으면 일반 사용자는 쓰기 힘드니 사후 지원은 따로 계약하는 경우도 많다. 당연히 이런 사후지원은 비용을 받는 것이 일반적이다. 예를 들면 레드햇 엔터프라이즈 리눅스의 경우 상용으로 판매하는데, 소스를 따로 공개해놓고 상용 버전에는 1년 기술지원을 포함해 놓고 있다. 이 소스를 가져다가 레드햇 상표만 들어내고 그대로 만든 것이 센트OS인데, 이렇게 제 3자가 다시 만들어 배포해도 라이선스(리눅스의 경우 GPL)만 지킨다면 불법복제가 아니다. 기술지원만 못 받는 것일 뿐이다.

3 오픈 소스 소프트웨어 라이선스

다양한 오픈소스 라이선스를 정리한 표 : #
오픈소스 라이선스 가이드 : #

figure1.png
2015년 2월 기준의 라이선스 사용 통계 #

흔히 오픈 소스에는 저작권이 없을 것이라고 오해하는 경우가 있는데 독점적인 권리가 없을 뿐이지 저작권은 존재한다. 예로써, 오픈 소스 프로그램은 보통 일정한 라이선스로 배포한다. 이 중 가장 강제성이 강한 것이 GPL인데, GPL은 오픈 소스인 만큼 소스 코드를 자유롭게 수정하고 배포할 수 있는 권리를 보장하지만, 재귀적 전염성 조항이라는 특이적인 성질이 부여된다. 이는 GPL 소스로부터 파생된 프로그램도 소스가 공개되어야 하고, 파생된 프로그램 또한 강제로 GPL 라이선스 또는 그 호환 라이선스로 배포되어야 한다는 뜻이다.

그래서 개념 없는 개발자가 생각 없이 GPL 라이선스를 따르는 오픈소스 코드를 집어넣어서 프로그램을 만들면, 그 프로그램 전체의 코드가 강제공개당하게 된다. 투하트 2, 스카이프 등등이 소스를 강제공개 형벌을 당한 바 있으며[3] ICO는 영구 판매중지 되었다[4]. 소니는 GPL 위반사항 때문에 DVD 4천만장리콜한 적도 있다. 컴파일 된 프로그램인데 GPL위반을 어떻게 아느냐고? GPL 코드를 사용했는지 안 했는지 매의 눈으로 감시하는 단체가 있다(...). 자유 소프트웨어 재단 등의 단체에서 이런 일을 한다.

한때 마이크로소프트는 이러한 강제규정이 산업발전에 악영향을 끼친다며 암세포에 비유하고 깠다. 천문학적인 시간과 돈을 들여 개발한 프로그램인데 일찍 퇴근하고픈 하청업체 개발자가 어디선가 따와서 스윽 집어넣은 코드 몇 줄 때문에 공짜가 된다니? 이런 뒷목 잡는 시나리오도 충분히 가능한 것이다. 물론 자신들의 독점적 지위를 유지하기 위하여 오픈 소스 진영에서 먼저 열심히 만들어 놓으면 뒤늦게 그걸 참고해서 그에 대응되지만 호환은 안 되는 것을 떡 하니 윈도우에 박아서 오픈 소스 진영 것을 무효화시키려는 뻘짓을 자주 했던 마이크로소프트가 할 말은 아니지만.
이처럼 발머 시절 "자유 소프트웨어를 방해하는 악의 축" 취급을 받던 MS였지만, 최근 들어서는 오픈 소스에 호의적이다. .NET과 차크라코어[5]를 공개 개발로 전환한 덕에 프로그램 개발과 회사 이미지 개선에 꽤나 크게 도움이 되었다고 한다. 이후 C#을 완전 오픈소스로 풀거나, Windows 10 레드스톤에 우분투 기반 서브시스템과 Bash 셸을 탑재하는 등 오픈 소스를 적극 활용하는 모습을 보이고 있다. 오라클 보고 있나?

가끔 오픈 소스 프로젝트로 하드웨어 디바이스를 제어하기 위한 라이브러리를 만들거나 차트(그래프)UI 컴포넌트 등을 만드는 팀들을 볼 수 있다. 이런 프로젝트 그룹이 만들어 놓은 결과물을 쓰면 비싼 라이브러리를 쓰지 않아도 된다는 장점이 있으나... 가끔 중요한 API를 껍데기만 만들고 방치하는 경우도 종종 만나게 된다.그리고 당연히 개발자는 멘탈붕괴

GPL 규약은 사실 리눅스 운영체제나 과거 유닉스 프로그램 등의 상당히 GEEK한 소프트웨어들을 목적으로 만들어져서 위에 나온 빡빡한 정책을 고집하고 있는데, 이것을 약간 완화시킨 것이 LGPL 라이선스이며, 아예 소스 재 공개를 하지 않아도 되거나, 라이선스의 전염성 조항이 없는 MIT/ZLIB 라이선스도 있다. 그리고 아예 라이선스 없이 저작권 자체를 포기해버린 경우는 퍼블릭 도메인(Public Domain)이라고 한다[6].

유명한 소프트웨어 회사들과 소프트웨어 재단 등은 각자의 개발 철학에 맞는 소프트웨어 라이선스를 배포한다.[7] 다만 뼈대는 기존 라이선스에서 따오는 경우가 대부분이고 엄격할수록 GPL을 따르고 조금 빡빡한 문제를 덜고 싶거나 자유도를 높이고 싶을 때는 LGPL, MIT, 아파치 라이선스를 참고하는 경우가 많다. 원체 엄격한 GPL이다보니 GPL를 채택하는 경우 법적인 문제를 감당할 수 있는 거대 집단 등이 대부분이다. 반대로 소규모(대학원을 포함한) 소프트웨어 제작집단의 경우 태생이 태생인 만큼 MIT 라이선스를 따르는 경우가 많다. BSD의 경우 초기 라이선스와 변경된 내용이 다르니 주의.

3.1 주요 라이선스

4 소프트웨어 목록

※ 가나다순으로 나열하며 우선순위는 한글-알파벳-숫자 순으로 작성해 주세요. (기타 제외)

4.1 개발 및 텍스트 에디터 관련

4.2 게임 관련

보통 인기를 끌었다고 생각되는 게임들은 리메이크를 하거나 재구현을 통해 오픈소스화하여 현재에 맞게 구성되는 경우가 많다. 그리고 에뮬레이터는 특히나 오픈소스를 찾아보기 쉽다. 아무레도 개발자가 개발자이다보니 에뮬레이터 만드는게 수월한 모양. 아래에 후술하는 게임 이외에도 다양한 게임이 오픈소스로 제작되었거나 되고 있다. 더 많은 목록은 링크에서 참고할 것.

4.3 그래픽 관련

4.4 네트워크 관련

4.5 콘텐츠 메니지먼트(CMS) 관련

4.6 데스크탑 환경

전부 리눅스용이다. 아무레도 리눅스 자체가 오픈소스다보니 많은듯.

  • GNOME - 리눅스를 대표하는 데스크톱 환경
  • KDE
  • Xfce
  • LXDE - 매우 가벼운 데스크톱 환경으로, 64비트 프로그램임에도 불구하고 램을 약 20MiB 밖에 안쓴다.

나머지 항목의 설명은 추가바람

4.7 보안 관련

  • KeePass - 계정 관리 (정확히는 패스워드 관리) 프로그램이다.

4.8 시스템 관련

4.9 업무, 출판 관련

4.10 운영 체제

4.11 음악, 동영상 관련

4.12 파일 관련

4.13 기타

  1. 물론 공개만 하고 2차 창작이 불가능한 경우도 있기는 하지만 이런 경우는 보통 오픈 소스라고 부르지 않는다.
  2. 대표적인 예가 바로 미국의 Tivo와 관련된 일화다. 리처드 스톨만은 Tivo가 하드웨어적 제약을 통해 GPL코드에서 수익을 창출하자 'Tivoization'이라고 비판하며 GPL을 3버전으로 업그레이드시켰다.
  3. 물론 소스만 공개되고 리소스는 빠졌으므로 그것만 가지고 똑같이 만들 수는 없다. 컴파일이 제대로 되더라도 아마 검은 화면만 나올 듯.
  4. 훗날 플레이스테이션 3용 게임으로 재발매 되었는데, 재발매 본에서는 GPL 소스를 전부 들어냈다.
  5. 인터넷 익스플로러 11엣지의 자바스크립트 엔진
  6. 본질적으로 퍼블릭 도메인과 같지만 이런 법적 문제에 넌덜머리가 난 한 데비안 개발자는 니 X대로 해라라는 뜻의 WTFPL을 배포했다. WTF는 모두가 알고 있는 그것이 맞다.
  7. 마이크로소프트, 애플, IBM 등의 회사도 각자의 오픈 소프트웨어 라이선스를 가지고 있다.
  8. 오픈소스 에니메이팅 도구(!!!)
  9. 위와동일.하지만 0.4.4b를 마지막으로 지원이 중단되었다가 최근 pencil2d라는 이름으로 부활했다.Synfig와 가장 다른점이라면 비교적 비트맵 애니메이팅에 더 특화된 편이라는 것.
  10. 크로뮴 또는 크로미움이라고도 부른다.
  11. L2/L3 소프트웨어 스위치