본문 바로가기

class "Think"/"IBM CW"

오픈 소스 입문 (한글)

오픈 소스 같은 가장 광범위하게 성장하고 있는 소프트웨어의 개발 분야를 시작하려는 분들을 위한 지침서이다. 오픈 소스 존에서는 하우투 정보, 툴, 프로젝트 업데이트 등을 통해 IBM 제품을 사용하여 오픈 소스 기술을 개발하고 사용하는 방법에 대한 가이드라인을 제공하고 있다. EclipseApache DerbyApache Geronimo, 그리고PHPPythonPerl, 같은 스크립팅 언어들, 라이센싱과 오픈 소스 개발 관련 디스커션 등의 주제들을 다룬다.


오픈 소스란 무엇인가?

한 마디로 말해서, 오픈 소스는 협업(collaboration)이라고 할 수 있다. 보다 구체적으로 말하면, 소프트웨어 프로젝트에 대한 공개적 협업(public collaboration)이다. IBM은 리눅스 개발에 10억 달러 이상을 투자한 것 외에도120개 이상의 프로젝트에 기여함으로서 오픈 소스에 헌신하고 있다. Open Source Initiative(OSI)는 다음과 같이 정의를 내리고있다. “오픈 소스는 독립적인 피어 리뷰와 재빠른 소스 코드 진화를 지원하여 소프트웨어의 신뢰성과 품질을 촉진하고 있다. OSI의 인증을 받기 위해서는, 소프트웨어가 무료로 읽혀지고, 재배포, 변경, 수정될 수 있음을 보장하는 라이센스를 통해 배포되어야 한다.”

오픈 소스는 이 같은 소프트웨어 사용을 주류에 편입시키고자 하는 개인, 조직, 기업들의 대중적인 움직임에도 적용될 수 있다. Open Source Initiative는 오픈 소스가 될 수 있는 10 가지 조건들을 발표했다. 오픈 소스는 소스 코드에 접근하는 것만을 의미하지는 않는다. 오픈 소스 소프트웨어의 배포 조건은 다음의 기준들을 따른다.

1. 무료 재배포
라이센스는 여러 다른 소스들의 프로그램을 포함하고 있는 집합적 소프트웨어 배포판의 컴포넌트로서 소프트웨어의 판매나 기부에 대해서 그 어떤 누구도 배제되어서는 안된다. 라이센스는 로열티 또는 판매 비용이 없다.

2. 소스 코드
프로그램에는 소스 코드가 포함되어 있어야 하며 소스 코드 형태와 컴파일이 완료된 형태로 배포될 수 있어야 한다. 특정 형태의 제품이 소스 코드로 배포되지 않으면 소스 코드를 구매해야 하며 인터넷을 통해 무료로 다운로드 해야 한다. 소스 코드는 프로그래머가 프로그램을 변경하기에 좋은 형식이다. 알아보기 힘든 소스 코드는 사용될 수 없다. 프리프로세서(preprocessor)의 아웃풋 또는 트랜슬레이터 같은 중간 형태도 사용될 수 없다.

3. 파생 작업 (Derived work)
라이센스는 변경과 파생 작업이 가능해야 한다. 원래의 소프트웨어 라이센스와 같은 조건 하에 배포되어야 한다.

4. 소스 코드의 무결성
구현 시 프로그램을 변경할 목적으로 소스 코드와 함께 “패치 파일”의 배포를 허용하는 경우에만, 라이센스는 소스 코드가 변경된 형태로 배포되는 것을 제한한다. 라이센스는 변경된 소스 코드에서 구현된 소프트웨어의 배포를 허용해야 한다. 라이센스는 파생 작업(derived work)을 통해 다른 이름 또는 다른 버전을 만들어야 한다.

5. 개인 또는 그룹의 평등
라이센스는 어떤 개인이나 그룹에 차별을 두어서는 안된다.

6. 분야에 대한 평등 
라이센스는 특정 분야에서 프로그램을 사용하는 것에 대해 제한을 두어서는 안된다. 예를 들어, 프로그램은 비즈니스 또는 유전공학 연구 분야에서 사용될 수 있다.

7. 라이센스 배포
프로그램에 대한 권한은 프로그램이 재배포 된 모든 곳에 적용되어야 한다. 추가 라이센스를 발행할 필요가 없다.

8. 제품 스팩에 따른 라이센스
프로그램에 대한 권한은 특정 소프트웨어 배포판의 프로그램의 일부에 해당하지 않는다. 프로그램이 그 배포판에서 추출되었고, 그 프로그램의 라이센스의 조건 하에 사용 및 배포된다면 재배포 된 프로그램을 사용하는 모든 당사자들은 원래의 소프트웨어 배포판에서 허용된 것과 같은 권한을 갖게 된다.

9. 라이센스는 다른 소프트웨어를 제한하지 않는다.
라이센스는 라이센스를 받은 소프트웨어와 함께 배포된 다른 소프트웨어에 제약 사항을 두어서는 안된다. 예를 들어, 같은 미디어에 배포된 모든 다른 프로그램들이 오픈 소스 소프트웨어가 될 필요는 없다.

10. 라이센스는 기술 중립적이어야 한다.
라이센스는 기술이나 인터페이스 스타일을 한정해서는 안된다.

developerWorks 기술자료 "Open source licensing, Part 1: The intent" 와 "Open source licensing, Part 2: Academic v. reciprocal" 을 참조하라.


 
위로


오픈 소스 기술이 중요한 이유

대부분의 사용자들이 오픈 소스 소프트웨어에 끌리는 첫 번째 매력은 가격이다. 오픈 소스 프로그램들은 종종 그 작성자가 누구인지 모른다. 하지만 무료에 가까운 비용이 오픈 소스 소프트웨어의 근본적인 매력은 아니다.

다음은 오픈 소스 개발을 지지할 수 밖에 없는 논거이다.

  1. 오픈 소스 프로그램은 개발자들이 코드를 보고, 고칠 점이 있는지 점검하고, 자신의 프로그램에서 사용하는 것이다. 기여의 종류로는 트랜잭션, 문서, 버그 리포트, 여러 형태의 도움말 등이 있다. 생각을 무료로 교환할 수 있기 때문에 혁신의 속도도 빠르다.
  2. GNU Manifesto에 따르면, 사람들은 인간이 읽을 수 있는 형태의 컴퓨터 프로그램에 대한 권리를 갖고 있다.

 
위로


FOSS란 무엇인가?

FOSS는 Free and Open Source Software의 약자이다. 이 용어는 무료 또는 오픈 소스에 대한 정의를 충족시키는 소프트웨어에 사용된다.


 
위로


“공짜 맥주”와 “자유 연설” 사이에서의 오픈 소스의 입장

영어 단어 "free"는 자유(freedom) 또는 “공짜(gratis)” 의미한다. 오픈 소스 사용자들이 “free”라는 단어를 사용할 때에는 “공짜(free) 맥주”의 “공짜(free)”를 의미하는 것이 아닌 “연설의 자유(free speech)”에 사용되는 “자유(free)”를 의미하는 것이다. 누군가는 맥주(또는 소프트웨어)를 만들 때 비용을 지불해야 하는 반면, 어떤 사람들은 무료로 사용할 수도 있다.


 
위로


오픈 소스를 시작하는 방법은?

오픈 소스 소프트웨어를 개발하겠다는 결정은 정치적인 이슈이자 라이센스 이슈이다. 기술적인 문제가 아니다. OSI의 승인된 오픈 소스 라이센스 리스트를 참조하여 필요에 맞게 선택하고 프로젝트 계획을 세워야 한다. developerWorks 기술자료 "Open source licensing, Part 1: The intent" 와 "Open source licensing, Part 2: Academic v. reciprocal" 을 참조하라. 기존 라이센싱 조건을 이해할 수 없다면 지적 재산권에 대한 전문가와 상의하라.

2005년 초반, 오픈 소스 라이센스 선지자들은 오픈 소스 라이센스가 더 적어질 것이라고 예견했다. 비록 그러한 예견이 기대한 것 보다 희망적인지는 불투명하다.


 
위로


LAMP란 무엇인가?

LAMP는 Linux, Apache, MySQL, PHP를 의미한다. 하지만 누구와 이야기하는가에 따라서 P는 Perl 또는 Python을 의미할 수도 있다. 일반적으로 P는 PHP를 의미한다. LAMP는 두 가지 큰 뜻이 있다. LAMP는 소유권이 없는, 유연한 서버 기반 애플리케이션 개발 방식이다. 이 조건을 구성하고 있는 각 프로그램들은 애플리케이션의 필요에 가장 잘 맞는 대안으로 대체될 수 있다. 각 컴포넌트는 독립적으로 업그레이드 된다. 물론 특별한 주의와 계획이 필요하다. 무엇보다도 LAMP의 각 프로그램은 무료이다.

developerWorks는 LinuxApacheMySQLPHPPythonPerl 관련하여 엄선된 기술자료와 튜토리얼을 제공하고 있다.


 
위로


오픈 소스를 작성할 수 있는 언어는?

거의 모든 언어가 가능하다. 오픈 소스 뒤에 숨은 기술은 오픈 소스의 가장 중요한 요소가 아니다. 중요한 요소는 작성자들이 소프트웨어를 오픈 소스로 배포하고 많은 오픈 소스 라이센스들 중 하나를 사용하겠다는 결정인 것이다. 승인된 라이센스를 참조하라.


 
위로


오픈 소스 소프트웨어는 합법적인가?

그렇다. 그리고 이메일을 사용하거나 웹 서핑을 하는 거의 모든 사람들이 오픈 소스 소프트웨어 사용자라고 할 수 있다. 대부분의 이메일은 인터넷을 돌아다니는 동안 오픈 소스 서버를 통해 전달된다. 대부분의 웹 서버는 오픈 소스 소프트웨어 기반이다. Google도 오픈 소스 기반이다. OSI는 메일 전송, 인터넷 실행 축, 웹과 FTP 서버가 모두 오픈 소스 기반이라고 밝힌 바 있다.

오픈 소스 소프트웨어는 저작권 소유자의 허락이나 적절한 라이센스 없이 배포되는 소프트웨어인 “warez”가 아니다.


 
위로


IBM의 오픈 소스를 위한 노력은?

IBM은 오픈 소스 혁신과 협업을 지원하는 중요한 힘이라고 할 수 있다. 120개 이상의 협동 프로젝트에 참여하여 EclipseDerbyGeronimoGlobus 같은 오픈 소스 커뮤니티에 기여하고 있다.

IBM은 개발과 혁신을 위한 “patent commons”에 500 개 페이턴트를 기부했다. IBM은 10억 달러 이상을 리눅스 개발에 투자하고 있다. IBM은 개발 커뮤니티가 리눅스를 채택하고, 또 리눅스로 마이그레이션 할 수 있도록 장려하고 있으며 엔터프라이즈 레벨의 오픈 소스 개발 툴까지 확장하고 있다.


 
위로


IBM은 오픈 소스 라이센스가 있는가?

그렇다. Common Public License가 있다. Common Public License (CPL) Frequently asked questions 참조.) 2005년 초에, 오픈 소스 라이센스 선각자들은 이 커뮤니티가 라이센스를 조금 더 갖추게 될 것이라고 예견했다.



출처: http://www.ibm.com/developerworks/kr/opensource/newto/index.html