GNU 프로젝트

GNU 프로젝트(GNU project)는 리처드 스톨먼의 주도하에 시작된 공개 소프트웨어 프로젝트이다. 1983년 9월 27일 유즈넷 net.unix-wizard 그룹을 통해 일반에 알려졌다. 스톨만은 첫 선언문에 이은 "GNU 선언문"을 비롯한 여러 글들을 통해서, "초기 전산 공동체에 지배적이었던, 협동 정신을 되돌리자"라고 주장했다. GNU 프로젝트는 누구나 자유롭게 "실행, 복사, 수정, 배포"할 수 있고, 누구도 그런 권리를 제한하면 안 된다는 사용 허가권(License) 아래 소프트웨어를 배포한다. 카피레프트로 불리는 이런 생각은 GPL(GNU 일반 공중 사용 허가서)에 나타나 있다.

GNU는 "GNU는 유닉스가 아니다."란 의미를 갖는 영어 문장 "GNU's Not UNIX"의 약자로, 원래의 문장 안에 자신이 이미 들어 있는 재귀 약자이다. 스톨만은 GNU를 그누로 읽자고 제안한다. 유닉스는 이미 널리 쓰이던 독점 소프트웨어 운영 체제로, 유닉스의 아키텍처는 기술적으로 믿을만 한 것으로 증명되어 있어, GNU 시스템은 유닉스와 호환될 수 있도록 만들어졌다. 유닉스 아키텍처는 개별적인 요소들이 따로 따로 작성되는 것을 허용한다. 또, 이미 공개되어 있던 조판 소프트웨어 TeX나 X 윈도도 쓸 수 있는 장점이 있었다.

1985년에 스톨만은 GNU 프로젝트를 철학적, 법률적, 금융적으로 지원하기 위해  자선단체인 자유 소프트웨어 재단(FSF, Free Software Foundation)을 세웠다. 이 재단은 GNU를 개발할 프로그래머들도 고용했다. 그러나, 프로젝트의 대부분은 자원 봉사자들이 개발했으며, 앞으로도 그럴 것이다. GNU가 눈길을 끎에 따라, 이를 주목한 회사들은 GNU 소프트웨어의 개발이나 판매 및 기술 지원을 돕기 시작했다. 이 가운데 가장 두드러지고 성공적인 것은 (현재는 레드햇의 일부인) Cygnus Solutions이다.

1990년까지 GNU 시스템엔 확장 가능한 문서 편집기(이맥스), 뛰어난 최적화 컴파일러(GCC), 그리고 표준 유닉스 배포판의 핵심 라이브러리와 유틸리티가 있었다. 하지만, 여기엔 주요 구성요소인 커널이 빠져 있었다.

GNU 선언문에서, 스톨만은 "기본적인 커널은 있지만 유닉스를 흉내내려면 아직 더 많은 기능이 필요하다"라고 했다. 여기서 그가 지칭한 것은 MIT에서 개발하여 자유롭게 배포했고, 유닉스 7번째 판과 호환되는 트릭스(TRIX)라는 원격 프로시저 호출 커널이었다. 1986년 12월, 이 커널을 고치는 작업이 시작됐다. 하지만, 개발자들은 결국 트릭스(TRIX)를 기반으로 새 커널을 만드는 것은 어렵다는 결론을 내렸다. 주된 이유는 트릭스(TRIX)는 "애매하고(잘 안 쓰이고?) 비싼 68000 box"에서만 동작했고, 따라서 그 상자에서 쓰이기 전에 다른 구조로 포팅해야 했기 때문이다. 1988년 즈음에, 카네기멜론 대학교에서 개발되던 마하 통신-전송 커널(Mach message-passing kernel)을 그 대체품으로 고려했지만, 이것은 처음에 이것을 개발한 사람들이 AT&T 소유의 코드를 지우면서 지연되었다. 처음엔, 이 커널은 앨릭스(Alix)라고 불렸지만, 나중에 개발자 마이클 부시넬(Michael Bushnell)는 HURD라는 이름을 선호하여, 앨릭스(Alix)란 이름은 하부 구조로 옮겨지고 마침내 완전히 떨어졌다. 결국은, HURD의 개발은 기술적이고 개인적인 충돌로 지지부진해지고 말았다.

1991년에 리누스 토르발스는 유닉스 호환의 리눅스 커널을 작성하여 GPL 라이선스 아래에 배포했다. 다른 여러 프로그래머들은 인터넷을 통해 리눅스를 더욱 발전시켰다. 1992년 리눅스는 GNU 시스템과 통합되었고, 이로써 완전한 공개 운영 체제가 탄생되었다. GNU 시스템들 가운데 가장 흔한 것이, "GNU/리눅스" 또는 "리눅스 배포판"이라고 불리는 바로 이 시스템이다. (2016년 기준으로, 허드(HURD)는 여전히 개발 중이며, 리눅스를 대신하여 허드를 사용한 GNU 시스템을 비공식 실험판으로 사용할 수 있다.)

또한, 비공개 유닉스 시스템에도 GNU의 구성 요소들이 본래의 유닉스 프로그램을 대신하여 들어 있는 경우도 많다. 이는 GNU 프로젝트를 통해 쓰여진 프로그램들이 질적으로 우수하다는 사실을 증명한다. 종종, 이런 구성 요소들은 "GNU 툴"로 불리기도 한다. 다수의 GNU 프로그램은 마이크로소프트 윈도우나 맥 OS X 등으로 포팅되기도 했다.

GNU 소프트웨어 

다음은 GNU 프로젝트를 통해 개발한 소프트웨어들이다.
 Bison, yacc을 대체하려고 만든 파서 발생기
 Bash, 셸.
 Binutils, 어셈블러와 링커를 포함.
 이맥스 (Emacs), 다양한 기능의 문서 편집기.
 GCC, C를 비롯한 다양한 프로그래밍 언어를 위한 컴파일러
 GDB, 디버깅 프로그램.
 김프, 그림 편집기.
 glibc, C 라이브러리.
 GMP, 수치 계산 라이브러리.
 그놈, 그래픽 데스크톱 환경.
 GNU 빌드 시스템 - Autoconf, Automake, Libtool
 GNUStep - 오픈스텝 표준의 추가 (그래픽 응용 소프트웨어를 위한 라이브러리 및 개발 도구 집합)
 GSL, GNU 과학 라이브러리.
 GZip, 데이터 압축을 위한 라이브러리와 프로그램
 HURD, 유닉스 커널과 같은 기능을 수행하는 마이크로커널과 서버들의 모임
 Maxima, 컴퓨터 대수학 체계.
 Octave, MATLAB과 비슷한 수치 계산기.
 GNU MDK, MIX 안에서 프로그램을 짜기 위한 개발 키트.
 GNU 라디오, 범용 하드웨어를 이용한 소프트웨어 무선 통신 신호 처리 패키지
 오픈오피스 (Open Office), GNU 오피스

GNU 프로젝트는 다른 곳에서 개발된 패키지로 배포하고 도와 주기도 한다.

같이 보기 
 GNU
 GNU 선언문
 오픈 소스
 자유소프트웨어

각주

외부 링크 
 
 GNU 자유 소프트웨어 디렉터리

 
자유 소프트웨어 재단