Esta é uma tradução da página original em Inglês.

Linux e o Sistema GNU

Muitos usuários de computador utilizam uma versão modificada do sistema GNU todos os dias, sem perceberem. Através de uma peculiar reviravolta dos fatos, a versão do GNU que é largamente utilizada hoje é mais conhecida como “Linux”, e muitos usuários não estão a par de sua conexão com o Projeto GNU.

Há realmente um Linux, e essas pessoas estão usando-o, mas ele é apenas uma parte do sistema que eles usam. Linux é o núcleo (kernel): o programa no sistema que aloca os recursos do sistema para outros programas que você utiliza. O núcleo é uma parte essencial de um sistema operacional, mas inútil por si só; ele pode apenas funcionar no contexto de um sistema operacional completo. Linux é normalmente usado em combinação com o sistema operacional GNU: todo o sistema é basicamente GNU com Linux adicionado, ou GNU/Linux. Todas as distribuições chamadas de “Linux” são, na verdade, GNU/Linux.

Muitos usuários não estão totalmente a par da diferença entre o núcleo, que é o Linux, e todo o sistema operacional, que eles também o chamam de “Linux”. O uso ambíguo desse nome não promove o entendimento. Esses usuários geralmente pensam que Linus Torvalds desenvolveu todo o sistema operacional em 1991, com um pouco de ajuda.

Programadores geralmente sabem que Linux é o núcleo. Mas já que eles também ouviram todo o sistema ser chamado “Linux”, eles muitas vezes visualizam uma história que justificaria chamar todo o sistema pelo nome do núcleo. Por exemplo, muitos acreditam que, assim que Linus Torvalds terminou de escrever o Linux, que é o núcleo, seus usuários procuraram por outros softwares livres e descobriram que (por nenhuma razão em particular) praticamente tudo necessário para criar um sistema similar ao Unix já estava disponível.

O que eles acharam não foi nenhum acidente — foi o não exatamente-completo sistema GNU. O software livre disponível compôs um sistema completo porque o Projeto GNU já estava trabalhando desde 1984 para criar um. No Manifesto GNU nós definimos o objetivo de criar um sistema livre similar ao Unix, chamado GNU. O Anúncio Oficial do Projeto GNU também ressalta alguns dos planos originais para o sistema GNU. Quando o Linux iniciou, GNU já estava quase concluído.

A maioria dos projetos de software livre tem por objetivo desenvolver um programa em particular para uma tarefa em particular. Por exemplo, Linus Torvalds escreveu um núcleo similar ao Unix (Linux); Donald Knuth escreveu um formatador de textos (TeX); Bob Scheifler escreveu um sistema de janelas (o X Window System). É natural medir a contribuição deste tipo de projeto pelos programas específicos que vieram daquele projeto.

Se tentássemos medir a contribuição do Projeto GNU dessa forma, o que concluiríamos? Um distribuidor de CD-ROM percebeu que em sua “distribuição Linux”, software GNU era o maior contingente único, por volta de 28% de todo o código-fonte, e isso incluía alguns dos componentes essenciais sem os quais não poderia haver sistema. O Linux, por si só, representava por volta de 3%. (As proporções em 2008 eram similares: no repositório “main” do gNewSense, Linux era 1,5% e pacotes GNU eram 15%.) Assim, se você for escolher um nome para o sistema baseado em quem escreveu os programas no sistema, a escolha simples mais apropriada seria “GNU”.

Mas esta é a maneira correta de considerar a questão. O Projeto GNU não foi, não é, um projeto para desenvolver pacotes específicos de software. Não foi um projeto para desenvolver um compilador C, apesar de o termos feito. Não foi um projeto para desenvolver um editor de texto, apesar de termos desenvolvido um. O objetivo do Projeto GNU era desenvolver um sistema operacional livre similar ao Unix: GNU.

Muitas pessoas fizeram grandes contribuições para o software livre no sistema, e todos eles merecem crédito por seus softwares. Mas a razão pela qual temos um sistema integrado — e não somente uma coleção de programas úteis — é porque o Projeto GNU decidiu fazer um. Nós fizemos uma lista de programas necessários para compor um sistema livre completo, e nós sistematicamente achamos, escrevemos, ou encontramos pessoas para escrever tudo na lista. Nós escrevemos componentes principais, essenciais mas não excitantes [1], porque você não pode ter um sistema sem eles. Alguns de nossos componentes, as ferramentas de sistema, se tornaram populares por conta própria entre os programadores, mas nós escrevemos muitos componentes que não são ferramentas [2]. Nós desenvolvemos um jogo de xadrez, o GNU Chess, porque um sistema completo precisa de jogos também.

Por volta do início dos anos 90, agrupamos todo o sistema à parte do núcleo. Nós também tínhamos começado a desenvolver um núcleo, o GNU Hurd, que funciona em cima do Mach. Desenvolver esse núcleo tem sido bem mais difícil do que esperávamos; o GNU Hurd começou a funcionar de forma segura em 2001, mas está longe de estar pronto para as pessoas usarem, de forma geral.

Felizmente, não precisamos esperar pelo Hurd, por causa do Linux. Assim que Torvalds escreveu o Linux, este preencheu a última grande lacuna no sistema GNU. Pessoas puderam, então, combinar o Linux com o sistema GNU para compor um sistema livre completo – uma versão do sistema GNU contendo também o Linux. O sistema GNU/Linux, em outras palavras.

Fazer os dois funcionarem bem juntos não foi uma tarefa trivial. Alguns componentes GNU [3] precisaram de alterações substanciais para funcionar com o Linux. Integrar um sistema completo como uma distribuição que funcionasse “fora da caixa” foi também um trabalho grande. Foi necessário resolver o problema de como instalar e iniciar o sistema (boot) – um problema que ainda não resolvemos porque ainda não atingimos esse ponto. Portanto, as pessoas que desenvolveram as várias distribuições de sistema fizeram um trabalho substancial. Mas foi um trabalho que, naturalmente, seria feito por alguém.

O Projeto GNU oferece suporte para os sistemas GNU/Linux assim como para o sistema GNU. A FSF financiou a reescrita das extensões relacionadas ao Linux para a biblioteca C do GNU, de forma que agora elas estão bem integradas, e os novos sistemas GNU/Linux usam a versão corrente da biblioteca sem modificações. A FSF também financiou um estágio inicial do desenvolvimento do Debian GNU/Linux.

Há hoje muitas variantes diferentes do sistema GNU/Linux (frequentemente chamadas de “distros”). A maioria delas inclui software não livre – seus desenvolvedores seguem a filosofia do “código aberto” associada ao Linux em vez da filosofia do “software livre” do GNU. Mas também há distros GNU/Linux completamente livres. A FSF oferece suporte a instalações de computador para algumas delas.

Fazer uma distribuição GNU/Linux não é apenas uma questão de eliminar vários programas não livres. Hoje em dia, a versão usual do Linux também possui programas não livres. A intenção é esses programas serem carregados para os dispositivos de E/S na inicialização do sistema, e eles são incluídos, como longas séries de números, no “código fonte” do Linux. Portanto, manter distribuições GNU/Linux livres agora significa manter uma versão do Linux livre também.

Você usando GNU/Linux ou não, por favor não confunda o público usando o nome “Linux” de forma ambígua. Linux é o núcleo (kernel), um dos principais componentes essenciais do sistema. O sistema como um todo é mais ou menos o sistema GNU, com Linux adicionado. Quando você fala sobre essa combinação, por favor chame-a de “GNU/Linux”.

Se você deseja fazer um link sobre “GNU/Linux” para posterior referência, essa página e https://www.gnu.org/gnu/thegnuproject.html são ótimas escolhas. Se você mencionar Linux, o núcleo (ou kernel) e deseja adicionar um link para posterior referência, https://foldoc.org/linux é uma boa URL para se usar.

Observações

À parte do GNU, um outro projeto desenvolveu um sistema livre similar ao Unix. Este sistema é conhecido como BSD, e foi desenvolvido na Universidade da Califórnia em Berkeley. Ele era não livre nos anos 80, mas se tornou livre no início dos 90. Um sistema operacional livre que existe hoje [4] é quase com certeza ou uma variante do sistema GNU ou um tipo de sistema BSD.

Pessoas algumas vezes perguntam se BSD também é uma versão do GNU, como o GNU/Linux. Os desenvolvedores do BSD se inspiraram para fazer o código de seu software livre pelos exemplos do Projeto GNU, e apelos explícitos de ativistas do GNU ajudaram a persuadi-los, mas o código teve uma pequena mudança com GNU. Sistemas BSD de hoje usam alguns programas GNU, assim como o sistema GNU e suas variantes usam alguns programas BSD; porém, como um todo, eles são dois sistemas diferentes que evoluíram separadamente. Os desenvolvedores do BSD não escreveram um núcleo e o adicionaram ao sistema GNU, e um nome como GNU/BSD não se adequaria à situação [5].

Notas de rodapé

  1. Esses componentes não excitantes, mas essenciais, incluem o GNU assembler (GAS) e o linker (GLD), ambos agora parte do pacote GNU Binutils, GNU tar e muito mais.
  2. Por exemplo, o Bourne Again SHell (BASH), o interpretador de PostScript Ghostscript e a biblioteca C do GNU não são ferramentas de programação. Nem o GNUCash, GNOME e GNU Chess.
  3. Por exemplo, a biblioteca C do GNU.
  4. Desde que foi escrito, um sistema quase-todo-livre similar ao Windows foi desenvolvido, mas tecnicamente não é todo como o GNU ou Unix, de forma que não exatamente afeta essa questão. A maioria do kernel do Solaris foi feito livre, mas se você desejava fazer um sistema livre fora disto, além de substituir as partes faltando do kernel, você também precisaria colocá-la no GNU ou BSD.
  5. Por outro lado, nos anos que seguiram desde a escrita deste artigo, a biblioteca C do GNU foi portada para várias versões do núcleo do BSD, o que simplificou combinar o sistema GNU com aquele núcleo. Assim como com o GNU/Linux, essas realmente são variantes do GNU e, portanto, são chamadas, por exemplo, de GNU/kFreeBSD e GNU/kNetBSD dependendo do núcleo do sistema. Usuários comuns em ambientes padrões mal conseguem distinguir entre GNU/Linux e GNU/*BSD.