레이블이 Opensource인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Opensource인 게시물을 표시합니다. 모든 게시물 표시

2009년 5월 20일 수요일

오픈 소스의 정의와 오픈 소스를 해야하는 이유

UIzard를 통해 저도 이제 오픈 소스 프로젝트의 소유자가 되었습니다. 하지만 여전히 어떻게 진행해야할지 막막해서오픈 소스의 정의부터 그 진행방법까지 알아보면서 포스팅을 시작하기로 마음먹었습니다. 오늘은 오픈 소스의 정의에 대해 알아보면서 오픈 소스를 해야하는 이유에 대해서 정리해보았습니다.

먼저, 위키피디아에서 오픈소스의 정의에 대해서 알아보았습니다.
오픈 소스(open source)는 소프트웨어 혹은 하드웨어의 제작자의 권리를 지키면서 원시 코드를 누구나 열람할 수 있도록 한 소프트웨어 혹은 오픈 소스 라이선스에 준하는 모든 통칭을 일컫는다. 어원에 대해서는 History of the OSI 자료에 따르면, 1998년 2월 3일에 넷스케이프 브라우저의 원시 코드에 대해 어떠한 형태로 공개할까하는 전략회의에서 붙여진 새로운 용어라고 설명되어 있다.
소스 코드를 공개한다고 해서 모두 오픈 소스인 것은 아니다. 예를 들어, 마이크로소프트는 전체 비율로 보았을 때 극소수의 고객(주로 정부나 거대 다국적 기업 또는 대학교 및 연구소)들에게 마이크로소프트 윈도의 소스를 공개했다. 오로지 보안 유지를 위해서만 소스를 직접 수정할 수 있으며, 그 수정본을 재배포하는 것은 금지되어 있다. 이것은 오픈 소스의 의의에 어긋나므로 이러한 경우는 오픈 소스라 부르지 않는다.
위의 정의를 보기좋게 요약해보면,

- 오픈 소스는 오픈 소스 라이선스에 준하는 모든 통칭이다.
- 오픈 소스에서 원시코드는 특정 계층이 아닌 누구나 열람할 수 있다.
- 오픈 소스에서 제작자의 권리는 유지된다.
- 오픈 소스는 라이센스에 따라 재배포가 가능하다.

요약해놓고 보니 편합니다. 뭐, 평범한 정의이고, 평소에 생각하던 개념과 크게 다르지 않습니다만, 새삼 곱씹어 보면, "원시 코드는 특정 계층이 아닌 누구나 열람할 수 있다."라는 문장이 재미있습니다. 특히, 위의 마이크로소프트 윈도의 예와 함께 생각해본다면 말이죠.

우선, 특정 계층이 아닌 누구나 열람할 수 있도록 해놓더라도, 프로그래밍 언어라는 장벽이 있는 이상 일반인이 아닌 개발자라는 범주의 사람들만이 열람하게 될 것입니다. 그리고 그 중에서도 해당 오픈 소스를 필요로 하는 사람만이 열람하게 될 것입니다.

결국, 소스를 필요로 하는 특정 계층이 형성되는 것이죠. 물론 재배포 가능 여부와 보안 유지 등에 있어서는 마이크로소프트 윈도 예에서의 그것과는 차이가 있습니다만, 양쪽 특정 계층 모두가 소스코드를 수정하여 자신의 필요와 의도에 맞게 변형하여 사용하고 싶어한다는 점은 같다고 볼 수 있을 것 같습니다.

즉, 오픈을 하더라도 "내가 공들여 만든 프로그램을 남에게 뺏기게 되는 것이 아닐까?" 또는 "괜히 공개했다가 나만 완전히 개털리는 건 아닐까?"라는 생각은 조금은 어리석은 생각이라는 거죠. 오픈 소스를 시작하더라도, 소스에 접근하는 사람들은 대부분 해당 소프트웨어나 하드웨어를 자신의 입맛에 바꾸어 사용해보고 싶거나, 버그 수정을 직접하고 싶은 사람들일 가능성이 큽니다. 마이크로소프트 윈도의 예에서 윈도우를 자신의 연구나 회사 사정에 맞게 수정하고 싶어하는 특정 계층과 크게 다르지 않죠. 또 라이센스가 법적 분쟁의 가능성을 최소화해주고 있는 이상, 완전히 똑같은 복제품으로 누군가가 자신과 똑같은 권리를 주장할 수도 없기 때문에 공개라는 것이 불리한 것만은 아닙니다.

물론, 돈이라는 측면에서 본다면 차이가 있습니다. 오픈 소스를 통해서는 수입을 기대하기 어렵습니다. 그에 반해, 마이크로소프트는 윈도의 소스를 특정 계층에게 공개하고 그 특정 계층로부터 엄청난 수익을 올릴 것입니다. 하지만 윈도만큼의 큰 규모에 견줄만한 오픈 소스는 얼마 존재하지 않습니다. 만약, 어느 한 개발자 또는 개발자 그룹이 윈도에 필적할만한 프로그램을 만들었다면 오픈 소스보다는 클로즈드 소스로 창업을 하는 것이 합리적인 방법일 수도 있을 것입니다.

하지만, 중소규모의 프로젝트라면, 오픈 소스로 진행하는 것이 좋다고 봅니다. 형성된 특정 계층이 프로젝트에 새로운 기능을 추가해주고 버그를 찾아줄 것이며, 나아가서는 그것을 고쳐줄 지도 모릅니다. 이것은 클로즈드 소스로 프로젝트를 진행하였을 때 기대할 수 있는 수익보다 그 가치가 훨씬 클 수도 있습니다. 또한 프로젝트에 대한 자신의 권리는 유지되면서 프로젝트는 계속해서 진화할 것입니다. 프로젝트가 올바른 방향으로 잘 이끌어지고 유지된다면, 개발자는 소프트웨어로서 세계에 이바지할 수 있을 것이고, 돈도 많이 벌 수 있을 것입니다.

사람들 각자는 서로 다른 생각을 갖고 있고, 자신이 해야할 일이 있기 때문에 소스를 복제하여 재배포하거나 모방하는 일이 발생한 가능성은 낮습니다. 오히려, 소스를 공개하게 되면 넓은 범위의 사람들이 특정 계층을 형성할 것이고 그것은 프로젝트를 조금씩 성장시켜줄 것입니다. 특히 개인 개발자들에게는 자신이 만든 프로젝트를 검증 받고 그 우수성에 대해 알릴 수 있으며, 다양한 피드백을 기대할 수 있는, 그리고 명예를 얻을 수 있는 좋은 기회이자 방법이 될 것입니다.

마지막으로, UIzard의 오픈 소스 프로젝트를 응원해주시기 위해 Luke Kenneth Casson Leighton 씨가 보내주신 이메일을 소개하면서 글을 마치겠습니다. 지난 일주일간 혼란스러웠던 저에게 큰 힘이 된 글입니다. 번역이 좀 건방지지만, 오픈 소스 프로젝트를 시작하는 데 있어 저에게 용기와 동기를 주는 내용입니다. 오픈 소스 프로젝트한다고 해서 마냥 가난한 것만은 아니라 다행입니다!

ryu, congratulations on writing something

that people find useful and exciting.

don't let it go to your head - it's just code,

and they're just people.

i had to deal with what seemed like fame, too,

when i was working on samba, ten years ago.
there are lots of ways to make your life easier

when you "properly" embrace free software ethics

and principles, and lots and lots of resources and people

who will help and make this a big and successful,
and useful project.

if you try to "control" everything yourself, it will get messy.
you may also get offers from companies to buy your code.

please don't take them.

there are enough proprietary tools out there,

and you can make enough money and help far more people

with free software.
take the developer of Ruby on Rails as an example:

look him up.  he makes his money from consultancy

and on giving talks, world-wide.
whatever you decide, good luck,

and i hope to be in touch perhaps when things calm down :)

if you keep this as a free software project,

and you need any help from me, you only have to ask.

 

류야 사람들이 쓸모있다고 느끼고 즐거워할만할걸 써낸거 ㅊㅋ
니 머리로 흘러들어가게 두지마 그냥 코드니까

그리고 걔네도 그냥 인간이니까
나도 십년전에 삼바(Samba) 만들때 유명세처럼 보이는 것을

대처해야했었거덩
니가 "적절하게" 공짜 소프트웨어 윤리와 규칙을 포용한다면

니 삶을 더 쉽게 만들 방법도 많아
그리고 이걸 더 크고 성공적으로 쓸모있는 프로젝트로 만들게

도와줄 사람들과 자원들도 많아

니 혼자서 다 컨트롤하려고 하지마 그럼 힘들어질꺼니까
니 코드를 살려고 회사에서 너한테 제의할지도 몰라

받아들이지마
세상에는 유료 툴들도 충분히 많이있고

게다가 넌 공짜 소프트웨어로도 돈을 많이 벌면서

중생을 도울수 있느니라
Ruby on Rails 개발자를 예로 들어보자

걔는 상담해주고 연설해주는데서 돈을 벌어, 세계적으로
니가 뭘 선택하든 굳럭

그리고 상황이 좀 진정되면 너랑 연락하고 싶네
만약에 니가 이걸 공짜 소프트웨어 프로젝트로 놔둘꺼고

나한테 도움이 필요하다면 나한테 묻기만 하면되


(장수민(24세)이라는 신제품 번역기의 번역 결과입니다.)


2009년 3월 13일 금요일

오픈 소스 라이센스 GPL, LGPL, BSD


UIzard의 소스 공개를 위해 라이센스에 대해 알아보는 중입니다. 전혀 모르던 부분인데ㅋ 생각보다 복잡하지는 않네요.

주요 오픈 소스 라이센스의 종류는 다음과 같습니다.

1. GPL : GNU General Public License
2. LGPL : Lesser GPL
3. BSD : Berkeley Software Distribution
4. Apache
5. MPL
6. QPL


우선 제 개인적으로는 GPL, LGPL, BSD, Apache 이외의 라이센스는 사실상 처음 접한 라이센스들이고 대충 훓어보니 GPL과 LGPL, BSD가 비교적 더 중요한 거 같아서 이 세가지 라이센스에 대해 중점적으로 알아보았습니다.


1. GPL : GNU General Public License

GPL 라이센스에 관한 전문은 다음 링크를 통해 읽어보실 수 있습니다.
http://korea.gnu.org/people/chsong/copyleft/gpl.ko.html

GPL 라이센스에 대해 요약해보면,
- 자유 소프트웨어라고 할 때 자유(Free)의 의미는 무료 사용이 아닌 자유로운 사용이다.
- GPL로 프로그램을 배포할 경우 유료/무료 판매에 관계없이 자신이 해당 프로그램에 대해 가질 수 있었던 모든 권리를, 프로그램을 받게 될 사람에게 그대로 양도해야 한다.
- 무보증 : 자유 소프트웨어는 반복적인 재배포 과정을 통해 소프트웨어 자체에 대해 수정과 변형이 일어날 수도 잇으며, 이는 최초의 저작자가 만든 소프트웨어의 문제가 아닐 수도 있다.
- GPL을 따르는 소프트웨어 소스 코드의 일부를 사용해 만든 소프트웨어는 GPL을 따라야 한다.
- GPL을 따르는 소프트웨어 소스 코드를 개인적으로 사용할 수 없다. 반드시 소프트웨어를 개발한 원작자나 공동체에 환원해야한다.

소스코드 배포 시
- 저작권 표시
- No Warranty
- GPL로 배포

실행파일 배포 시
- 저작권 표시
- No Warranty
- GPL로 배포
- 소스코드 제공

수정코드 배포 시
- 저작권 표시
- No Warranty
- GPL로 배포
- 소스코드 제공
- 수정 사실 및 일자

2. LGPL : Lesser GPL

LGPL 라이센스에 관한 전문은 다음 링크를 통해 읽어보실 수 있습니다.
http://korea.gnu.org/people/chsong/copyleft/lgpl.ko.html

- LGPL은 GPL의 강한 Copyleft 조건과 BSD를 절충하여 만들어졌다.
- LGPL은 Copyleft에 대한 규제를 프로그램 자체에 두나 이 프로그램을 사용한 다른 프로그램에 대해서는 Copyleft를 두지 않는다.
- 따라서 LGPL은 소프트웨어 라이브러리에 주로 쓰이며, 간혹 독립적인 프로그램(모질라, 오픈오피스)에도 쓰인다.
- GPL의 "소프트웨어 소스 코드의 일부를 사용해 만든 소프트웨어는 GPL을 따라야 한다."는 조항을 완화한 라이센스 모델.
- LGPL 대상 라이브러리와 링크만 해서 사용한 경우 실행 프로그램에 대한 공개 의무가 없다.

소스코드 배포 시
- 저작권 표시
- No Warranty
- LGPL로 배포

실행파일 배포 시
- 저작권 표시
- No Warranty
- LGPL로 배포
- 소스코드 제공

수정코드 배포 시
- 저작권 표시
- No Warranty
- LGPL로 배포
- 소스코드 제공
- 수정 사실 및 일자

3. BSD : Berkeley Software Distribution

- 프로그램의 자유로운 사용, 복제, 배포, 수정을 허용한다.
- 수정한 프로그램이더라도 소스 코드를 공개할 필요가 없기 때문에 상용 소프트웨어에도 무제한으로 사용가능하다.
- Yahoo User Interface Library의 경우 BSD 라이센스를 따르고 있다.



라이센스에 대해 간단히 알아보면서 UIzard의 경우 GPL 라이센스를 따르는 것이 좋겠다고 결정했습니다. 다음주 월요일에 소스코드를 공개하는 것을 목표로 준비를 시작해야겠습니다.