2025. 5. 6. 16:06ㆍ리눅스
3. 1 리눅스의 철학
상용 유닉스는 시스템의 설계부터 개발, 품질 보증, 버전 관리 등의 모든 과정이 기업의 엄격한 통제 및 계획아래서 개발됩니다.
개발자는 임의로 새로운 기능을 추가하거나 코드의 중요 부분을 변경할 수 없으며, 버그 보고에 대한 수정 사항을 확인 받아야 하며 모든 변화를 소스 제어 시스템에서 확인해야 합니다. 또한 유닉스 개발자는 자신이 프로그램을 개발하였다 하더라도 자신의 프로그램이 아닌 유닉스 회사의 제품이 되는 것이므로 완성되어 배포된 프로그램에 대해 일정한 권리를 행사할 수 없습니다.
리눅스는 상용 유닉스와 같은 엄격한 정책하에서 이루어지는 작업도 아니고, 특별한 정책하에 개발자가 분배해서 작업을 진행하지도 않는다. 인터넷을 통해 연결된 전 세계 개발자 그룹들의 개발 노력으로 이루어졌다. 리눅스 시스템을 통합적으로 책임지고 개발하는 어떠한 조직이나 업체가 존재하지 않으면서 하나의 잘 짜여진 틀에 의해 관리되는 조직 못지 않게 유지되고 있다. 일명 리눅스 공동체는 리눅스와 관련된 다양한 소프트웨어의 개발을 위해서 다양한 메일링 리스트, 유즈넷 뉴스그룹 등을 통해 대화한다. 그러면서 자연스럽게 많은 관계들이 생겨났고, 리눅스 커널도 이러한 방식으로 발전하게 되었다. 현재 리눅스 커널은 많은 개발자와 리눅스 토발즈의 주도하에 개발이 진행되는데, 본인이 개발한 소스를 메일로 보내면 토발즈가 그 소스를 테스트하여 유용하다고 판단되면 커널에 포함시키는 동시에 공식 버전을 만들어 배포한다. 리눅스 커널 이외에 많은 자유 소프트웨어와 공개 소프트웨어들도 최초 개발자가 중심이 되어 수많은 개발자들이 참여하게 하여 개발이 이루어진다. 이런 개발 소프트웨어들은 그 소프트웨어를 기반으로 파생되어 다른 소프트웨어로 발전하기도 한다. 이렇게 리눅스와 관련된 개발은 수많은 변수를 가지고 있으면서 자유롭게 이루어지고 있다.
3.2 리눅스와 라이선스
GPL(General Public License)
리눅스는 GNU 프로젝트와 연계하여 발전해왔기 때문에 FSF(Free Software Foundation)의 GPL(General Public License)를 따릅니다.
FSF의 창시자인 리처드 스톨먼은 GNU GPL에서 다섯가지의 의무를 저작권의 한 부분으로서 강제한다.
- 컴퓨터 프로그램은 어떠한 목적으로든지 사용할 수 있습니다. 다만 법으로 제한하는 행위는 할 수 없습니다.
- 컴퓨터 프로그램의 실행 복사본은 언제나 프로그램의 소스 코드와 함께 판매하거나 소스 코드를 무료로 배포해야 합니다.
- 컴퓨터 프로그램 소스 코드를 용도에 따라 변경 할 수 있습니다.
- 변경된 컴퓨터 프로그램 역시 프로그램의 소스 코드를 반드시 공개 배포해야 합니다.
- 변경된 컴퓨터 프로그램 역시 반드시 똑같은 라이선스인 GPL 라이선스를 적용해야 합니다.
버전 | 내용 |
GPLv1 | 1989년 1월에 발표되었다. 프로그램의 소스 코드를 공개하지 않은 채 바이너리 파일만 배포하는 것을 막기 위해 GPLv1 프로그램을 배포할 때에는 사람이 이해하기 쉬운 코드를 같이 배포해야 한다는 조건이 삽입되었다. |
GPLv2 | 1991년 6월에 발표되었다. 특허로 인하여 추가적으로 돈을 지불해야 하거나 소스 코드의 공개가 불가능하여 실행 바이너리 프로그램만 배포할 경우에 소스 코드뿐 아니라 실행 바이너리 프로그램까지 배포할 수 없도록 보완하였다. |
GPLv3 | 2007년 6월에 발표되었다. 소프트웨어에 특허 대처법, 다른 라이선스와의 호환성, 원시 코드 구성 부분, 디지털 제한 권리(DRM: Digital Restrictions Management) 관련 내용이 추가되었다. |
3.3 주요 라이선스
LGPL (Library/Lesser General Public License)
1991년 6월, FSF의 리처드 스톨만은 GPL 라이선스의 강력한 카피레프트 조건과 단순한 사용 허가를 위한 절충안으로 소프트웨어 라이브러리에 관한 라이선스인 LGPL(Library General Public License)을 발표하였다.
LGPL은 독립적인 프로그램에도 사용되나, 대부분 소프트웨어 라이브러리에 주로 쓰인다.
LGPL이 기존의 GPL과 다른 점은 GPL이 적용된 라이브러리를 자유 소프트웨어를 만들 때에만 사용해야 하나,
LGPL이 적용된 라이브러리는 자유 소프트웨어뿐만 아니라 독점 소프트웨어에서도 사용 가능하다는 점이다. 다만,
LGPL 라이브러리의 소스 코드를 수정했을 경우에는 2차적 파생물 저작물에 해당하므로 라이브러리의 소스 코드를 제공해야 한다. LGPL을 사용해서 개발한 뒤에 GPL 라이선스로 변경은 가능하나, GPL을 LGPL로 변경할 수는 없다. 1999년, 리처드 스톨만은 기존의 LGPL이 보완된 LGPL 2.1 버전을 발표하였고, 명칭도 LGPL(Lesser General Public License)로 변경되었다.
BSD(Berkeley Software Distribution) 라이선스
버클리의 캘리포니아대학에서 배포하는 공개소프트웨어 라이선스로 해당 소프트웨어를 누구나 개발할 수 있고, 수정한 것을 제한 없이 배포할 수 있다. 다만 수정본의 재배포는 의무적인 사항이 아니므로, 2차적 파생물에 대한 원시 소스 코드의 비공개를 허용한다. 즉, BSD 라이선스를 갖는 프로그램은 소스 코드를 공개하지 않는 상용 소프트웨어에서도 사용 가능하다.
아파치(Apache) 라이선스
아파치 라이선스는 아파치 소프트웨어 재단(Apache Software Foundation, ASF)에서 자체적으로 만든 소프트웨어에 대한 라이선스 규정이다. 아파치 라이선스 버전 2.0에 따르면 누구든 자유롭게 아파치 소프트웨어를 다운 받아 부분 혹은 전체를 개인적 또는 상업적 목적으로 이용할 수 있다. 또한 재배포 시에도 소스 코드 또는 수정한 소스 코드를 포함하여 반드시 공개할 필요가 없다. 다만 재배포할 경우에는 아파치 라이선스 2.0을 포함시키고 아파치 소프트웨어 재단에서 개발된 소프트웨어임을 명확히 밝혀야 한다.
아파치 소프트웨어 재단에서 관리되는 프로그램은 모두 이 라이선스를 적용받는데,
대표적인 프로그램에는 Apache HTTP Server, Hadoop, Hbase, Tomcat 등이 있다.
MPL (Mozilla Public License) 라이선스
MPL 라이선스는 모질라 재단에서 규정한 라이선스로 BSD와 GPL 라이선스의 혼합적 성격을 띠고 있다. MPL 소스 코드 수정 시에는 소스 코드 공개는 필수이지만, MPL 소스 코드와 다른 코드를 결합해서 만든 프로그램의 경우에는 MPL 코드를 제외한 다른 소스 코드는 공개하지 않아도 된다.
MPL은 모질라 재단에서 만든 Firefox, 모질라 애플리케이션 스위트(Mozilla Application Suite), 모질라 썬더버드(Mozilla Thunderbird) 등에 적용되어 있으며, 썬 마이크로시스템즈(Sun Microsystems)에서 만든 라이선스인 CDDL(Common Development and Distribution License) 탄생에 영향을 주었다.
MIT (Massachusetts Institute of Technology) 라이선스
미국 MIT 대학에서 해당 Software 공학도를 돕기 위해 개발한 라이선스로 BSD 라이선스를 기초로 작성되었다. 라이선스와 저작권 관련 문서만 지켜주면 되는데, 기본적인 조건은 BSD 라이선스와 매우 유사하다. 해당 소프트웨어는 누구나 개발할 수 있고, 수정본의 재배포 시에 소스 코드 비공개가 가능하다.
MIT 라이선스가 적용된 소프트웨어에는 X Window System, JQuery, Node.js, Ruby on Rails 등이 있다.
라이선스별 주요 비교 표
라이선스 | 무료이용 | 배포 | 소스 코드 취득 및 수정 | 2차적 저작물 소스 코드 공개 | 독점 소프트웨어와 결합 |
GPL | 무료 | 허용 | 가능 | 공개 | 불가능 |
LGPL | 무료 | 허용 | 가능 | 공개 | 가능 |
BSD | 무료 | 허용 | 가능 | 비공개 가능 | 가능 |
Apache | 무료 | 허용 | 가능 | 비공개 가능 | 가능 |
MPL | 무료 | 허용 | 가능 | 공개 | 가능 |
MIT | 무료 | 허용 | 가능 | 비공개 가능 | 가능 |
'리눅스' 카테고리의 다른 글
리눅스 마스터 2급 - 리눅스 명령어(사용자 생성 명령어) (0) | 2025.05.07 |
---|---|
리눅스 마스터 2급 - 리눅스 명령어의 개요 (0) | 2025.05.06 |
리눅스 마스터 2급 - 리눅스의 역사 (1) | 2025.05.06 |
리눅스 마스터 2급 - 리눅스의 이해 (리눅스 등장에 영향을 준 요소와 관련 용어) (0) | 2025.05.06 |
리눅스 마스터 2급 - 리눅스의 이해 (리눅스 디렉터리 종류와 특징) (0) | 2025.05.05 |