GNU 프로젝트 (GNU project, 그누 프로젝트)는 리처드 스톨만이 완전한 공개 운영 체제인 GNU 시스템을 만들기 위한 목적으로 시작했다. 이 프로젝트는 1983년 9월 27일 유즈넷 net.unix-wizard 그룹을 통해 일반에 알려졌다. 스톨만은 첫 선언문에 이은 "GNU 선언문"을 비롯한 여러 글들을 통해서, "초기 전산 공동체에 지배적이었던, 협동 정신을 되돌리자"고 주장했다.
GNU는 "GNU는 유닉스가 아니다."란 의미를 갖는 영어문장 "GNU's Not UNIX"의 약자로, 원래의 문장 안에 자신이 이미 들어 있는 재귀 약자이다. 스톨만은 GNU를 그누로 읽자고 제안한다. 유닉스는 이미 널리 쓰이던 독점 소프트웨어 운영 체제로, 유닉스의 아키텍쳐는 기술적으로 믿을 만 한 것으로 증명되어 있어, GNU 시스템은 유닉스와 호환될 수 있도록 만들어 졌다. 유닉스 아키텍쳐는 개별적인 요소들이 따로따로 작성되는 것을 허용한다. 또, 이미 공개되어 있던 조판 소프트웨어 텍(TeX)이나, X 윈도우도 쓸 수 있는 장점이 있었다.
GNU 프로젝트는 누구나 자유롭게 "실행, 복사, 수정, 배포"할 수 있고, 누구도 그런 권리를 제한하면 안 된다는 사용 허가권(License) 아래 소프트웨어를 배포한다. 카피레프트로 불리는 이런 생각은 GPL(GNU 일반 공중 사용 허가서)에 나타나 있다.
1985년에 스톨만은 GNU 프로젝트를 철학적, 법률적, 금융적으로 지원하기 위해 자선단체인 자유 소프트웨어 재단(FSF, Free Software Foundation)을 세웠다. 이 재단은 GNU를 개발할 프로그래머들도 고용했다. 그러나, 프로젝트의 대부분은 자원봉사자들에 의해 개발되었으며, 앞으로도 그럴 것이다. GNU가 눈길을 끔에 따라, 이를 주목한 회사들은 GNU 소프트웨어의 개발이나 판매 및 기술 지원을 돕기 시작했다. 이 중에서 가장 두드러지고 성공적인 것은 (현재는 Red Hat의 일부인) Cygnus Solutions이다.
1990년까지, GNU 시스템엔 확장 가능한 문서 편집기(이맥스), 뛰어난 최적화 컴파일러(GCC), 그리고 표준 유닉스 배포판의 핵심 라이브러리와 유틸리티가 있었다. 하지만, 여기엔 주요 구성요소인 커널이 빠져 있었다.
GNU 선언문에서, 스톨만은 "기본적인 커널은 있지만 유닉스를 흉내 내기 위해서는 아직 더 많은 기능이 필요하다"고 했다. 여기서 그가 지칭한 것은 MIT에서 개발하여 자유롭게 배포했고, 유닉스 7번째 판과 호환되는 TRIX라는 원격 작업 호출 커널(remote procedure call kernel)이었다. 1986년 12월, 이 커널을 고치는 작업이 시작됐다. 하지만, 개발자들은 결국 TRIX를 기반으로 새 커널을 만드는 것은 어렵다는 결론을 내렸다. 주된 이유는 TRIX는 "애매하고(잘 안 쓰이고?) 비싼 68000 box"에서만 동작했고, 따라서 그 상자에서 쓰이기 전에 다른 구조로 옮겨야(ported) 했기 때문이다. 1988년 경에, 카네기멜론 대학교에서 개발되던 Mach 통신-전송 커널(Mach message-passing kernel)을 그 대체품으로 고려했지만, 이것은 처음에 이것의 개발자들이 AT&T 소유의 코드를 지우면서 지연되었다. 처음엔, 이 커널은 Alix라고 불렸지만, 후에 개발자 Michael Bushnell는 Hurd라는 이름을 선호하여, Alix란 이름은 하부구조로 옮겨지고 마침내 완전히 떨어졌다. 결국은, Hurd의 개발은 기술적이고 개인적인 충돌로 지지부진해 지고 말았다.
1991년, 리누스 토르발스는 유닉스 호환의 리눅스 커널을 작성해, GPL 라이선스아래 배포했다. 다른 여러 프로그래머들은 인터넷을 통해 리눅스를 더욱 발전시켰다. 1992년 리눅스는 GNU 시스템과 통합되었고, 이로서 완전한 공개 운영 체제가 탄생되었다. GNU 시스템들 중에 가장 흔한 것이, "GNU/Linux"혹은 "Linux 배포판"이라고 불리는 바로 이 시스템이다. (2003년 현재, 허드(Hurd)는 여전히 개발 중이며, 리눅스를 대신하여 허드를 사용한 GNU 시스템이 비정식 실험판으로 사용가능하다.)
또한, 비공개 UNIX 시스템에도 GNU의 구성 요소들이 오리지널 UNIX 프로그램을 대신하여 들어있는 경우도 많다. 이는 GNU 프로젝트를 통해 쓰여진 프로그램들이 질적으로 우수하다는 사실을 증명하는 것이다. 종종, 이런 구성요소(컴포넌트)들은 "GNU 툴"로 불리기도 한다. 다수의 GNU 프로그램은 마이크로소프트 윈도우즈나 맥 OS X등으로 port되기도 했다.