Ideologia do Software Livre e o Projeto GNU: Situação Atual e Desafios Imediatos.

Honorários Renda

Erro Lua em Module:Wikidata na linha 170: tentativa de indexar o campo "wikibase" (um valor nil).

Doações

Erro Lua em Module:Wikidata na linha 170: tentativa de indexar o campo "wikibase" (um valor nil).

Número de voluntários

Erro Lua em Module:Wikidata na linha 170: tentativa de indexar o campo "wikibase" (um valor nil).

Número de empregados

Erro Lua em Module:Wikidata na linha 170: tentativa de indexar o campo "wikibase" (um valor nil).

Número de membros

Erro Lua em Module:Wikidata na linha 170: tentativa de indexar o campo "wikibase" (um valor nil).

Subsidiárias

Erro Lua em Module:Wikidata na linha 170: tentativa de indexar o campo "wikibase" (um valor nil).

Ter

Erro Lua em Module:Wikidata na linha 170: tentativa de indexar o campo "wikibase" (um valor nil).

Slogan

Erro Lua em Module:Wikidata na linha 170: tentativa de indexar o campo "wikibase" (um valor nil).

Local na rede Internet

Erro Lua em Module:Wikidata na linha 170: tentativa de indexar o campo "wikibase" (um valor nil).

Data de liquidação

Erro Lua em Module:Wikidata na linha 170: tentativa de indexar o campo "wikibase" (um valor nil).

O trabalho atual do Projeto GNU inclui desenvolvimento de software, conscientização, campanha política e distribuição de novos materiais.

Origens do projeto

Quando o projeto começou, eles...

  • Um asteróide é nomeado após o projeto GNU - (9965) GNU.

Veja também

Escreva um comentário sobre "O Projeto GNU"

Notas

Links

  • (Inglês) - site oficial do projeto GNU

Um trecho caracterizando o Projeto GNU

- Mentiras, assassinato, traição... Você não tem essas palavras? ..
- Foi há muito tempo... ninguém se lembra mais. Só eu. Mas sabemos o que foi. Isso está embutido em nossa "memória antiga" para nunca mais esquecer. Você veio de onde o mal vive?
Eu balancei a cabeça tristemente. Eu sentia muito pela minha terra natal, e pelo fato de que a vida nela era tão imperfeita que me fez fazer tais perguntas... Eu amava esta casa com todo o meu coração, e muitas vezes sonhei que algum dia um dia tão maravilhoso chegaria quando:
uma pessoa vai sorrir de alegria, sabendo que as pessoas só podem lhe trazer o bem...
quando uma garota solitária não tem medo de andar pela rua mais escura à noite, sem medo de que alguém a ofenda...
quando você consegue abrir seu coração com alegria, sem medo de que seu melhor amigo te traia...
quando será possível deixar algo muito caro na rua, sem ter medo de que se você se virar - e será imediatamente roubado ...
E eu sinceramente, com todo o meu coração, acreditei que em algum lugar um mundo tão maravilhoso realmente existe, onde não há mal e medo, mas há uma simples alegria de vida e beleza ... É por isso que, seguindo meu sonho ingênuo, eu aproveitei a mínima oportunidade para aprender pelo menos alguma coisa sobre como é possível destruir este mesmo, tão tenaz e tão indestrutível, nosso Mal terrestre... E mais uma coisa - para que nunca tenha vergonha de dizer a alguém em algum lugar que eu sou um humano...
Claro, esses eram sonhos de infância ingênuos... Mas então eu ainda era apenas uma criança.
– Meu nome é Atis, Svetlana Man. Eu moro aqui desde o começo, eu vi o Mal... Muito mal...
– E como você se livrou dele, sábio Hatis?! Alguém te ajudou? .. - perguntei esperançoso. - Você pode nos ajudar?... Dê pelo menos um conselho?
– Encontramos o motivo... E o matamos. Mas o seu mal está além do nosso controle. É diferente... Assim como os outros e você. E nem sempre o bem de outra pessoa pode ser bom para você. Você deve encontrar sua própria razão. E destruí-lo, - ele gentilmente colocou a mão na minha cabeça e uma paz maravilhosa fluiu em mim ... - Adeus, Humana Svetlana ... Você encontrará a resposta para sua pergunta. Descanse para você...
Fiquei imerso em pensamentos e não prestei atenção ao fato de que a realidade ao meu redor havia mudado há muito tempo e, em vez de uma cidade estranha e transparente, agora “flutuamos” em uma densa “água” roxa em alguma incomum, aparelho plano e transparente, que não tinha alças, nem remos - nada, como se estivéssemos em cima de um vidro transparente grande, fino e móvel. Embora nenhum movimento ou arremesso fosse sentido. Deslizou sobre a superfície surpreendentemente suave e calmamente, fazendo você esquecer que estava se movendo ...
– O que é?.. Para onde estamos navegando? Eu perguntei surpresa.
“Para pegar seu amiguinho”, Veya respondeu calmamente.
- Mas como?!. Ela não pode...
- Será capaz. Ela tem o mesmo cristal que o seu, foi a resposta. - Vamos encontrá-la na "ponte", - e sem explicar mais nada, ela logo parou nosso estranho "barco".
Agora já estávamos ao pé de uma parede noturna brilhante e “polida”, que era nitidamente diferente de tudo brilhante e cintilante ao redor, e parecia criada artificialmente e alienígena. De repente, a parede “separou-se”, como se naquele lugar consistisse em neblina densa, e em um “casulo” dourado apareceu... Stella. Fresca e saudável, como se tivesse acabado de dar um passeio agradável... E, claro, ela estava muito satisfeita com o que estava acontecendo... Quando ela me viu, seu lindo rosto sorriu feliz e, por hábito, ela imediatamente falou:
– Você também está aqui?!... Ah, que bom!!! E eu estava tão preocupado! .. Tão preocupado! .. Eu pensei que algo deveria ter acontecido com você. Mas como você chegou aqui? .. - o bebê me encarou estupefato.

NORMAS PRINCIPAIS

UNIX's fornecidos por fabricantes de computadores

O carro Sistema operacional "Original"
Dom 1,2,10, ... Sun OS 4.1.2 BSD 4.3
Dom 10.20.1000 Sun OS 5.5 SVR 4.0
IBM RS/6000 AIX SV 3.2
HP Apollo 900 HP/UX 10 BSD 4.2 e SV 3.2
Sequente Dynix SW 4.0
Motorola 922 SVR4/88 SVR 4.0
Besta-88 bestix SV 3.1
DEZ Ultrix BSD 4.2
DEC Alfa AXP OSF/1 BSD 4.3
Gráfica de Silicone SGCS IRIX 6.0

Ao escolher uma plataforma, automaticamente obtemos "seu" UNIX com ela. Talvez, do ponto de vista da conveniência e integridade do ambiente de usuário e administrador, o mais agradável deles seja o AIX. E o mais comum é o Solaris 2.5 (claro).

Foi o advento das implementações comerciais do Unix que levou às chamadas guerras do Unix. Cada uma das empresas, em um esforço para alcançar a superioridade no mercado, incluiu em seu sistema algumas características, suas próprias melhorias e aperfeiçoamentos, às vezes até com o objetivo direto de isolar seu sistema dos demais existentes no mercado. As empresas-desenvolvedores em seus esforços para obter vantagem sobre os concorrentes fizeram mudanças mesmo em interface de programação de aplicativos(API- Application Programmer "s Interface), - uma especificação de um conjunto de funções que os desenvolvedores de software devem cumprir para tornar seus programas compatíveis com o sistema operacional. Isso aumentou ainda mais a incompatibilidade de diferentes versões do Unix e levou à incompatibilidade de software desenvolvido por fornecedores diferentes (incluindo independentes).

Mas uma consequência muito pior das guerras entre as diferentes versões do Unix foi que a troca livre de código-fonte que ajudou a rápida melhoria do Unix nos estágios iniciais de seu desenvolvimento cessou. Não conhecendo nenhum outro modelo para lucrar com software além de mantê-lo em segredo e ter controle total sobre o desenvolvimento de um produto comercial, a AT&T proibiu estritamente a distribuição de códigos-fonte. Poucas pessoas foram atraídas pela ameaça de ação legal por distribuir ilegalmente fitas Unix. O fluxo de novas ideias das universidades secou.

Para superar esse problema, várias tentativas foram feitas para padronizar o Unix.

O primeiro esforço sério para padronizar as versões da API (interface de programação) desenvolvida para System V e Berkeley foi feito em 1983 por um grupo de iniciativa chamado /usr/group. No entanto, à medida que o número de versões do sistema operacional cresceu, a eficácia do padrão diminuiu e, um ano depois, em 1985, foi criado o padrão POSIX (Portable Operating System Interface for Computing Environment).



Em 1988, foi desenvolvido o padrão POSIX 1003.1-1988, que definiu a interface de programação de aplicativos. Este padrão encontrou ampla aplicação em muitos sistemas operacionais, incluindo arquiteturas não-UNIX. Dois anos depois, o padrão foi adotado como o padrão IEEE (Institute of Electrical and Electronic Engineers, ainda existente) IEEE 1003.1-1990. O padrão define apenas a interface, e organização específica, portanto, não faz distinção entre chamadas de sistema e funções de biblioteca, chamando todos os elementos da API apenas funções.

Todos os padrões Unix posteriores incluem POSIX, e todas as versões subsequentes do Unix aderem a este padrão. A única grande adição que mais tarde apareceu no kernel Unix foram os soquetes, que vieram do BSD.

Uma organização sem fins lucrativos - o Consórcio X / Open (mais tarde Open Group), criado em 1984 por várias empresas europeias, empreendeu o desenvolvimento de um conjunto comum de interfaces de sistemas operativos, acordados entre vários fabricantes, e a criação de sistemas para os quais o custo de portabilidade de aplicativos seria mínimo.

Em 1992, surgiu um documento conhecido como X/OpenPortability Guide versão 3 (XPG3), que incluía o POSIX 1003.1-1988 e o padrão para o sistema gráfico X Windows System desenvolvido no Massachusetts Institute of Technology (EUA). Em 1994 - XPG4.2.

Em 1996, a união de X / Open e OSF levou à criação do consórcio The Open Group, que deu continuidade aos desenvolvimentos no campo de sistemas abertos, por exemplo, desenvolvimento adicional da interface de usuário Common Desktop Environment, interfaces para o Distributed Computing Environment - DCE, etc.

(Instituto Nacional Americano de Padrões)

Em 1989, o American National Standards Institute aprovou o padrão X3.159-1989 para a linguagem de programação C. O padrão define a sintaxe, a semântica e o conteúdo da biblioteca padrão.

GNU é uma associação de desenvolvedores que criam software livre de todos os tipos.

GNU é um projeto que criou muito software livre como parte de uma estratégia de código aberto.

Ao mesmo tempo, esses programas podem fazer tudo, desde trabalhar com arquivos até processamento de texto, e o compilador gcc (GNU C) é um dos compiladores UNIX mais confiáveis ​​e eficientes. Isso torna possível equipar quase qualquer sistema operacional do tipo UNIX com software livre.

O que é GNU/Linux?

Como o Linux é apenas um kernel, esse tipo de equipamento é essencial. O kernel é responsável por trabalhar com memória, discos, dispositivos internos, mas, por exemplo, não possui editor de texto. Mas pode executar outros programas. Portanto, a adição de um kernel livre com um conjunto de programas livres parece muito natural. O resultado é o conjunto GNU/Linux.

"A abreviatura GNU significa "GNU não é UNIX" (GNU - Not UNIX). A idéia principal por trás do desenvolvimento do sistema GNU é sua diferença completa do Unix. O UNIX sempre foi e continua sendo um software proprietário, o que significa que priva seus usuários da liberdade de colaborar e controlar seus computadores. Para ser uma comunidade que usa livremente seus próprios computadores, precisávamos de um sistema operacional livre. Não tínhamos dinheiro suficiente para comprar e tornar gratuito qualquer um dos sistemas existentes, mas tínhamos conhecimento e habilidades suficientes para criar um novo. A criação do GNU foi um empreendimento enorme. Fizemos isso em nome da nossa liberdade e da sua também."

Em 1985, R. Stallman escreveu seu famoso Manifesto GNU (foi publicado na edição de março de 1985 do Dr. Dobb's Journal) e fundou a Free Software Foundation (FSF) - uma fundação de caridade para o desenvolvimento de software livre. , e posteriormente distribuindo outros softwares livres (tanto do Projeto GNU quanto fora dele) e vendendo seus manuais, que forneceram fundos para o desenvolvimento do projeto GNU. A FSF aceitou doações, mas a maior parte da receita sempre veio da venda de cópias de software livre e serviços relacionados.

O desenvolvimento do software livre foi um passo muito importante, mas o mérito ainda maior de R.Stallman deve ser reconhecido com a criação da GNU General Public License (GPL). Diferentes autores traduzem esse nome para o russo de diferentes maneiras - a Licença Pública Universal, a Licença Pública Generalizada, etc. Mas considera-se que Apenas a versão em inglês desta licença é válida. A ideia principal da GPL é que o usuário deve ter os seguintes quatro direitos (ou quatro liberdades):

O direito de executar o programa para qualquer finalidade (liberdade 0)

· O direito de estudar a estrutura do programa e adaptá-lo às suas necessidades (liberdade 1), o que implica o acesso ao código fonte do programa.

· O direito de distribuir o programa enquanto pode ajudar os outros (liberdade 2).

· O direito de melhorar o programa e publicar melhorias em benefício de toda a comunidade (liberdade 3), o que também envolve o acesso ao código fonte do programa.

Você pode usar, copiar, modificar, modificar, transferir ou vender versões modificadas (ou não modificadas) para outras pessoas da maneira que desejar, desde que o resultado de tal processamento também seja distribuído sob a licença GPL. A última condição é a mais importante e definidora nesta licença. Ele garante que os resultados dos esforços dos desenvolvedores de software livre permaneçam em código aberto e não se tornem parte de nenhum produto licenciado convencionalmente. Também distingue software livre de software livre. Um dos requisitos desta licença é que, ao vender software sob a GPL, você deve disponibilizar o código-fonte desse software para qualquer pessoa que queira ter acesso a ele. Nas palavras dos criadores da FSF, a GPL "torna o software livre e garante que ele permaneça livre".

O principal objetivo da GPL é proteger o software livre da "privatização". Mas deve-se notar que ele é projetado de forma a permitir todas as formas "justas" de ganhar dinheiro com software livre.Este é um ponto muito significativo que precisa de atenção especial. Quando introduzido pela primeira vez à GPL, pode ser mal interpretado que esta licença geralmente proíbe qualquer forma de ganhar dinheiro com o software ou seu desenvolvimento. Na verdade, a GPL em particular, e a FSF em geral, incentivam diretamente os negócios associados à prestação de serviços relacionados - treinamento, consultoria e replicação comercial de software. Isso torna possível atrair para a cooperação tanto empresas quanto pessoas para quem os interesses materiais são mais importantes do que os incentivos morais.

Publicado originalmente no livro fontes abertas. Richard Stallman era , mas contribuiu com este artigo para que as ideias do movimento do software livre não ficassem totalmente ausentes desse livro.

A primeira comunidade de compartilhamento de software

Quando comecei a trabalhar no Laboratório de Inteligência Artificial do MIT em 1971, tornei-me parte de uma comunidade de compartilhamento de software que existia há muitos anos. O compartilhamento de software não se limitava à nossa comunidade específica; é tão antigo quanto os computadores, assim como compartilhar receitas é tão antigo quanto cozinhar. Mas fizemos isso mais do que a maioria.

O AI Lab utilizava um sistema operacional de compartilhamento de tempo chamado ITS (o Sistema de Compartilhamento de Tempo Incompatível) que os hackers da equipe do laboratório (1) projetaram e escreveram em linguagem assembler para o Digital PDP -10, um dos grandes computadores da época. um membro desta comunidade, um hacker de sistema da equipe do AI Lab, meu trabalho era melhorar este sistema.

Não chamamos nosso software de “software livre”, porque esse termo ainda não existia; mas foi isso. Sempre que pessoas de outra universidade ou empresa queriam portar e usar um programa, nós permitimos com prazer. Se você visse alguém usando um programa desconhecido e interessante, você sempre poderia pedir para ver o código-fonte, para poder lê-lo, alterá-lo ou canibalizar partes dele para criar um novo programa.

(1) O uso de “hacker” para significar “quebra de segurança” é uma confusão por parte da mídia de massa. Nós hackers nos recusamos a reconhecer esse significado e continuamos usando a palavra para significar alguém que adora programar, alguém que gosta de esperteza divertida ou a combinação dos dois. Veja meu artigo, Sobre Hacking.

O colapso da comunidade

A situação mudou drasticamente no início dos anos 80, quando a Digital descontinuou a série PDP-10. Sua arquitetura, elegante e poderosa nos anos 60, não poderia se estender naturalmente aos maiores espaços de endereços que estavam se tornando viáveis ​​nos anos 80. Isso significava que quase todos os programas que compunham o ITS eram obsoletos.

A comunidade de hackers do AI Lab já havia entrado em colapso, não muito antes. Em 1981, a empresa spin-off Symbolics havia contratado quase todos os hackers do AI Lab, e a comunidade despovoada não conseguiu se manter. (O livro Hackers, de Steve Levy, descreve esses eventos, além de dar uma visão clara dessa comunidade em seu auge.) Quando o AI Lab comprou um novo PDP-10 em 1982, seus administradores decidiram usar o não-livre da Digital sistema de compartilhamento de tempo em vez de ITS.

Os computadores modernos da época, como o VAX ou o 68020, tinham seus próprios sistemas operacionais, mas nenhum deles era software livre: era preciso assinar um acordo de confidencialidade até mesmo para obter uma cópia executável.

Isso significava que o primeiro passo para usar um computador era prometer não ajudar seu vizinho. Uma comunidade cooperante foi proibida. A regra feita pelos donos do software proprietário era: “Se você compartilha com o vizinho, você é um pirata. Se você quiser alguma mudança, implore-nos para fazê-la.”

A ideia de que o sistema social de software proprietário – o sistema que diz que você não tem permissão para compartilhar ou alterar software – é anti-social, antiético, simplesmente errado, pode ser uma surpresa para alguns leitores. Mas o que mais poderíamos dizer sobre um sistema baseado em dividir o público e manter os usuários indefesos? Os leitores que acham a ideia surpreendente podem ter tomado o sistema social de software proprietário como um dado adquirido, ou julgado nos termos sugeridos pelas empresas de software proprietário. Os editores de software trabalharam muito e arduamente para convencer as pessoas de que só há uma maneira de encarar o problema.

Quando os editores de software falam sobre “reforçar” seus “direitos” ou “deter a pirataria”, o que eles realmente dizeré secundário. A mensagem real dessas declarações está nas suposições não declaradas que elas tomam como certas, que o público é convidado a aceitar sem exame. Vamos, portanto, examiná-los.

Uma suposição é que as empresas de software têm um direito natural inquestionável de possuir software e, portanto, ter poder sobre todos os seus usuários. (Se isso fosse um direito natural, não importa quanto dano cause ao público, não poderíamos objetar.) Curiosamente, a Constituição dos EUA e a tradição legal rejeitam essa visão; copyright não é um direito natural, mas um monopólio artificial imposto pelo governo que limita o direito natural dos usuários de copiar.

Outra suposição não declarada é que a única coisa importante sobre o software são os trabalhos que ele permite que você faça – que nós, usuários de computador, não deveríamos nos importar com o tipo de sociedade que podemos ter.

Uma terceira suposição é que não teríamos software utilizável (ou nunca teríamos um programa para fazer este ou aquele trabalho em particular) se não oferecêssemos a uma empresa poder sobre os usuários do programa. Essa suposição pode ter parecido plausível, antes que o movimento do software livre demonstrasse que podemos fazer muito software útil sem colocar cadeias nele.

Se nos recusarmos a aceitar essas suposições e julgarmos essas questões com base na moralidade comum do senso comum, colocando os usuários em primeiro lugar, chegaremos a conclusões muito diferentes. Os usuários de computador devem ser livres para modificar programas para atender às suas necessidades e livres para compartilhar software, porque ajudar outras pessoas é a base da sociedade.

Uma escolha moral gritante

Sem minha comunidade, continuar como antes era impossível. Em vez disso, enfrentei uma dura escolha moral.

A escolha fácil foi ingressar no mundo do software proprietário, assinando acordos de confidencialidade e prometendo não ajudar meu colega hacker. Muito provavelmente eu também estaria desenvolvendo software que foi lançado sob acordos de confidencialidade, aumentando assim a pressão sobre outras pessoas para trair seus companheiros também.

Eu poderia ter ganhado dinheiro dessa maneira e talvez me divertido escrevendo código. Mas eu sabia que, no final da minha carreira, olharia para trás, para anos construindo muros para dividir as pessoas, e sentiria que passei minha vida tornando o mundo um lugar pior.

Eu já havia recebido um acordo de confidencialidade quando alguém se recusou a fornecer a mim e ao MIT AI Lab o código-fonte do programa de controle de nossa impressora. (A falta de certos recursos neste programa tornava o uso da impressora extremamente frustrante.) Portanto, não podia dizer a mim mesmo que os acordos de confidencialidade eram inocentes. Fiquei muito zangado quando ele se recusou a compartilhar conosco; Eu não podia me virar e fazer a mesma coisa com todo mundo.

Outra escolha, direta mas desagradável, foi deixar o campo da informática. Dessa forma, minhas habilidades não seriam mal utilizadas, mas ainda seriam desperdiçadas. Eu não seria culpado por dividir e restringir os usuários de computador, mas isso aconteceria mesmo assim.

Então, procurei uma maneira de um programador fazer algo para o bem. Perguntei a mim mesmo se havia algum programa ou programas que eu pudesse escrever para tornar uma comunidade possível novamente?

A resposta foi clara: o que era necessário primeiro era um sistema operacional. Esse é o software crucial para começar a usar um computador. Com um sistema operacional, você pode fazer muitas coisas; sem um, você não pode executar o computador. Com um sistema operacional gratuito, poderíamos ter novamente uma comunidade de hackers cooperativos — e convidar qualquer pessoa a participar. E qualquer um seria capaz de usar um computador sem começar conspirando para privar seus amigos.

Como desenvolvedor de sistema operacional, eu tinha as habilidades certas para esse trabalho. Então, embora eu não pudesse tomar o sucesso como garantido, percebi que fui eleito para fazer o trabalho. Eu escolhi tornar o sistema compatível com o Unix para que fosse portátil e para que os usuários do Unix pudessem facilmente mudar para ele. O nome GNU foi escolhido, seguindo uma tradição hacker, como um acrônimo recursivo para “GNU”s Not Unix”. É pronunciado como uma sílaba com um g duro.

Um sistema operacional não significa apenas um kernel, apenas o suficiente para executar outros programas. Na década de 1970, todos os sistemas operacionais dignos desse nome incluíam processadores de comando, montadores, compiladores, interpretadores, depuradores, editores de texto, mala direta e muito mais. ITS os tinha, Multics os tinha, VMS os tinha e Unix os tinha. O sistema operacional GNU também os incluiria.

Mais tarde ouvi estas palavras, atribuídas a Hillel (1):

Se eu não for por mim, quem será por mim?
Se sou só para mim, o que sou?
Se não agora, quando?

A decisão de iniciar o Projeto GNU foi baseada em um espírito similar.

(1) Como ateu, não sigo nenhum líder religioso, mas às vezes acho que admiro algo que um deles disse.

Livre como em liberdade

O termo “software livre” às vezes é mal interpretado – não tem nada a ver com preço. É sobre liberdade. Aqui, portanto, está a definição de software livre.

Um programa é um software livre, para você, um usuário específico, se:

  • Você tem a liberdade de executar o programa como desejar, para qualquer finalidade.
  • Você tem a liberdade de modificar o programa para atender às suas necessidades. (Para tornar essa liberdade efetiva na prática, você deve ter acesso ao código-fonte, pois fazer alterações em um programa sem ter o código-fonte é extremamente difícil.)
  • Você tem a liberdade de redistribuir cópias, gratuitamente ou por uma taxa.
  • Você tem a liberdade de distribuir versões modificadas do programa, para que a comunidade possa se beneficiar de suas melhorias.

Já que “grátis” se refere à liberdade, não ao preço, não há contradição entre vender cópias e software livre. Na verdade, a liberdade de vender cópias é crucial: coleções de software livre vendidas em CD-ROMs são importantes para a comunidade, e vendê-las é uma forma importante de arrecadar fundos para o desenvolvimento de software livre. Portanto, um programa que as pessoas não são livres para incluir nessas coleções não é software livre.

Por causa da ambiguidade de “grátis”, as pessoas há muito procuram alternativas, mas ninguém encontrou um termo melhor. A língua inglesa tem mais palavras e nuances do que qualquer outra, mas carece de uma palavra simples e inequívoca que signifique “livre”, como em liberdade – “sem restrições” sendo a palavra que mais se aproxima em significado. Alternativas como “liberado”, “liberdade” e “aberto” têm o significado errado ou alguma outra desvantagem.

Software GNU e o sistema GNU

Desenvolver um sistema inteiro é um projeto muito grande. Para trazê-lo ao alcance, decidi adaptar e usar peças de software livre existentes sempre que possível. Por exemplo, decidi logo no início usar o TeX como o principal formatador de texto; alguns anos depois, decidi usar o X Window System ao invés de escrever outro sistema de janelas para GNU.

Por causa dessas decisões, e outras como elas, o sistema GNU não é o mesmo que a coleção de todos os softwares GNU. O sistema GNU inclui programas que não são software GNU, programas que foram desenvolvidos por outras pessoas e projetos para seus próprios propósitos, mas que podemos usar porque são software livre.

Iniciando o projeto

Em janeiro de 1984, larguei meu emprego no MIT e comecei a escrever software GNU. Sair do MIT foi necessário para que o MIT não pudesse interferir na distribuição do GNU como software livre. Se eu tivesse permanecido na equipe, o MIT poderia reivindicar a propriedade do trabalho e poderia ter imposto seus próprios termos de distribuição, ou até mesmo transformado o trabalho em um pacote de software proprietário. Eu não tinha intenção de fazer uma grande quantidade de trabalho apenas para vê-lo se tornar inútil para o propósito pretendido: criar uma nova comunidade de compartilhamento de software.

No entanto, o professor Winston, então chefe do MIT AI Lab, gentilmente me convidou a continuar usando as instalações do laboratório.

Os primeiros passos

Pouco antes de iniciar o Projeto GNU, ouvi falar do Free University Compiler Kit, também conhecido como VUCK. (A palavra holandesa para “grátis” é escrita com um v.) Este foi um compilador projetado para lidar com várias linguagens, incluindo C e Pascal, e para suportar várias máquinas de destino. Escrevi ao seu autor perguntando se o GNU poderia usá-lo.

Ele respondeu ironicamente, afirmando que a universidade era gratuita, mas o compilador não era. Portanto, decidi que meu primeiro programa para o Projeto GNU seria um compilador multilíngue e multiplataforma.

Esperando evitar a necessidade de escrever o compilador inteiro sozinho, obtive o código-fonte do compilador Pastel, que era um compilador multiplataforma desenvolvido no Lawrence Livermore Lab. Ele suportava e foi escrito em uma versão estendida do Pascal, projetada para ser uma linguagem de programação de sistemas. Adicionei um front-end C e comecei a portá-lo para o computador Motorola 68000. Mas tive que desistir disso quando descobri que o compilador precisava de muitos megabytes de espaço de pilha, e o sistema Unix 68000 disponível só permitiria 64k.

Percebi então que o compilador Pastel funcionava analisando todo o arquivo de entrada em uma árvore sintática, convertendo toda a árvore sintática em uma cadeia de “instruções” e gerando todo o arquivo de saída, sem nunca liberar nenhum armazenamento. Nesse ponto, concluí que teria que escrever um novo compilador do zero. Esse novo compilador agora é conhecido como GCC; nenhum compilador Pastel é usado nele, mas consegui adaptar e usar o front end C que eu havia escrito. Mas isso foi alguns anos depois; primeiro, trabalhei no GNU Emacs.

GNU Emacs

Comecei a trabalhar no GNU Emacs em setembro de 1984 e, no início de 1985, estava começando a ser utilizável. Isso me permitiu começar a usar sistemas Unix para editar; não tendo interesse em aprender a usar vi ou ed, eu tinha feito minha edição em outros tipos de máquinas até então.

Neste ponto, as pessoas começaram a querer usar o GNU Emacs, o que levantou a questão de como distribuí-lo. Claro, eu coloquei no servidor ftp anônimo no computador do MIT que eu usei. (Este computador, prep.ai.mit.edu, tornou-se assim o principal site de distribuição de ftp GNU; quando foi desativado alguns anos depois, transferimos o nome para nosso novo servidor ftp.) Mas naquela época, muitos dos interessados as pessoas não estavam na Internet e não podiam obter uma cópia por ftp. Então a pergunta era: o que eu diria a eles?

Eu poderia ter dito: “Encontre um amigo que esteja na rede e que faça uma cópia para você”. Ou eu poderia ter feito o que fiz com o PDP-10 Emacs original: dizer a eles: “Envie-me uma fita e um SASE, e eu enviarei de volta com o Emacs nele”. Mas eu não tinha emprego e estava procurando maneiras de ganhar dinheiro com software livre. Então anunciei que enviaria uma fita para quem quisesse, por uma taxa de $ 150. Dessa forma, iniciei um negócio de distribuição de software livre, precursor das empresas que hoje distribuem distribuições inteiras do sistema GNU/Linux.

Um programa é gratuito para todos os usuários?

Se um programa é software livre quando sai das mãos de seu autor, isso não significa necessariamente que será software livre para todos que tiverem uma cópia dele. Por exemplo, software de domínio público (software sem direitos autorais) é software livre; mas qualquer um pode fazer uma versão proprietária modificada dele. Da mesma forma, muitos programas gratuitos são protegidos por direitos autorais, mas distribuídos sob licenças permissivas simples que permitem versões proprietárias modificadas.

O exemplo paradigmático deste problema é o X Window System. Desenvolvido no MIT e lançado como software livre com licença permissiva, logo foi adotado por várias empresas de informática. Eles adicionaram X aos seus sistemas proprietários Unix, apenas em formato binário, e cobertos pelo mesmo acordo de confidencialidade. Essas cópias do X não eram mais software livre do que o Unix.

Os desenvolvedores do X Window System não consideraram isso um problema - eles esperavam e pretendiam que isso acontecesse. Seu objetivo não era a liberdade, apenas o “sucesso”, definido como “ter muitos usuários”. Eles não se importavam se esses usuários tivessem liberdade, apenas que fossem numerosos.

Isso levou a uma situação paradoxal em que duas maneiras diferentes de contar a quantidade de liberdade deram respostas diferentes à pergunta: “Este programa é gratuito?” Se você julgasse com base na liberdade fornecida pelos termos de distribuição da versão do MIT, diria que X era software livre. Mas se você medisse a liberdade do usuário médio de X, teria que dizer que era um software proprietário. A maioria dos usuários do X estava executando as versões proprietárias que vinham com os sistemas Unix, não a versão gratuita.

Copyleft e a GNU GPL

O objetivo do GNU era dar liberdade aos usuários, não apenas ser popular. Portanto, precisávamos usar termos de distribuição que impedissem que o software GNU fosse transformado em software proprietário. O método que usamos é chamado de “copyleft”.(1)

O copyleft usa a lei de direitos autorais, mas a inverte para servir ao contrário de seu propósito usual: em vez de um meio de restringir um programa, torna-se um meio de manter o programa livre.

A ideia central do copyleft é que damos a todos permissão para executar o programa, copiar o programa, modificar o programa e distribuir versões modificadas – mas não permissão para adicionar restrições próprias. Assim, as liberdades cruciais que definem o “software livre” são garantidas a todos que possuem uma cópia; tornam-se direitos inalienáveis.

Para um copyleft eficaz, as versões modificadas também devem ser gratuitas. Isso garante que o trabalho baseado no nosso fique disponível para nossa comunidade se for publicado. Quando programadores que têm empregos como programadores se voluntariam para melhorar o software GNU, é o copyleft que impede seus empregadores de dizer: “Você não pode compartilhar essas mudanças, porque vamos usá-las para fazer nossa versão proprietária do programa”.

A exigência de que as mudanças sejam gratuitas é essencial se quisermos garantir liberdade para todos os usuários do programa. As empresas que privatizaram o X Window System geralmente faziam algumas mudanças para portá-lo em seus sistemas e hardware. Essas mudanças foram pequenas em comparação com a grande extensão de X, mas não foram triviais. Se fazer mudanças fosse uma desculpa para negar liberdade aos usuários, seria fácil para qualquer um tirar vantagem da desculpa.

Um problema relacionado diz respeito à combinação de um programa livre com código não livre. Tal combinação inevitavelmente não seria livre; quaisquer liberdades que faltam para a parte não-livre também faltam para o todo. Permitir tais combinações abriria um buraco grande o suficiente para afundar um navio. Portanto, um requisito crucial para o copyleft é tapar esse buraco: qualquer coisa adicionada ou combinada com um programa com copyleft deve ser tal que a versão combinada maior também seja livre e com copyleft.

A implementação específica de copyleft que usamos para a maioria dos softwares GNU é a GNU General Public License, ou GNU GPL para abreviar. Temos outros tipos de copyleft que são usados ​​em circunstâncias específicas. Os manuais GNU também têm copyleft, mas usam um tipo muito mais simples de copyleft, porque a complexidade da GNU GPL não é necessária para manuais.(2)

(1) Em 1984 ou 1985, Don Hopkins (um sujeito muito imaginativo) me enviou uma carta. No envelope, ele havia escrito várias frases divertidas, incluindo esta: “Copyleft – todos os direitos revertidos”. Usei a palavra “copyleft” para nomear o conceito de distribuição que estava desenvolvendo na época.

Os funcionários da Free Software Foundation escreveram e mantiveram vários pacotes de software GNU. Dois notáveis ​​são a biblioteca C e o shell. A biblioteca GNU C é o que todo programa executado em um sistema GNU/Linux usa para se comunicar com o Linux. Foi desenvolvido por um membro da equipe da Free Software Foundation, Roland McGrath. O shell usado na maioria dos sistemas GNU/Linux é o BASH , o Bourne Again Shell(1), que foi desenvolvido pelo funcionário da FSF Brian Fox.

Nós financiamos o desenvolvimento desses programas porque o Projeto GNU não era apenas sobre ferramentas ou um ambiente de desenvolvimento. Nosso objetivo era um sistema operacional completo, e esses programas eram necessários para esse objetivo.

(1) “Bourne Again Shell” é uma brincadeira com o nome “Bourne Shell”, que era o shell usual no Unix.

Suporte de software gratuito

A filosofia do software livre rejeita uma prática comercial generalizada específica, mas não é contra os negócios. Quando as empresas respeitam a liberdade dos usuários, desejamos sucesso.

A venda de cópias do Emacs demonstra um tipo de negócio de software livre. Quando a FSF assumiu esse negócio, eu precisava de outra maneira de ganhar a vida. Encontrei-o na venda de serviços relacionados ao software livre que desenvolvi. Isso incluiu ensino, para assuntos como como programar o GNU Emacs e como personalizar o GCC, e desenvolvimento de software, principalmente portando o GCC para novas plataformas.

Hoje, cada um desses tipos de negócios de software livre é praticado por várias corporações. Alguns distribuem coleções de software livre em CD-ROM; outros vendem suporte em níveis que vão desde responder a perguntas do usuário, corrigir bugs e adicionar novos recursos importantes. Estamos até começando a ver empresas de software livre baseadas no lançamento de novos produtos de software livre.

Mas tome cuidado – várias empresas que se associam ao termo “código aberto” na verdade baseiam seus negócios em software não-livre que funciona com software livre. Estas não são empresas de software livre, são empresas de software proprietário cujos produtos afastam os usuários da liberdade. Eles chamam esses programas de “pacotes de valor agregado”, o que mostra os valores que eles gostariam que adotássemos: conveniência acima da liberdade. Se valorizamos mais a liberdade, devemos chamá-los de pacotes “subtraídos da liberdade”.

objetivos técnicos

O objetivo principal do GNU é ser software livre. Mesmo que o GNU não tivesse vantagem técnica sobre o Unix, teria uma vantagem social, permitindo que os usuários cooperem, e uma vantagem ética, respeitando a liberdade do usuário.

Mas era natural aplicar os padrões conhecidos de boas práticas ao trabalho - por exemplo, alocar dinamicamente estruturas de dados para evitar limites de tamanho fixos arbitrários e manipular todos os códigos de 8 bits possíveis sempre que isso fizesse sentido.

Além disso, rejeitamos o foco do Unix no tamanho pequeno da memória, ao decidir não suportar máquinas de 16 bits (estava claro que as máquinas de 32 bits seriam a norma quando o sistema GNU fosse concluído) e não fazer nenhum esforço para reduzir o uso de memória, a menos que exceda um megabyte. Em programas para os quais o manuseio de arquivos muito grandes não era crucial, incentivamos os programadores a ler um arquivo de entrada inteiro no núcleo e, em seguida, escanear seu conteúdo sem ter que se preocupar com E/S.

Essas decisões permitiram que muitos programas GNU superassem seus equivalentes Unix em confiabilidade e velocidade.

computadores doados

À medida que a reputação do Projeto GNU crescia, as pessoas começaram a oferecer para o projeto máquinas rodando Unix, o que foi muito útil, porque a maneira mais fácil de desenvolver componentes do GNU era fazê-lo em um sistema Unix e substituir os componentes desse sistema por um. Mas eles levantaram uma questão ética: se era certo que tivéssemos uma cópia do Unix.

Unix era (e é) software proprietário, e a filosofia do Projeto GNU dizia que não devemos usar software proprietário. um pacote proprietário quando isso era crucial para desenvolver um substituto gratuito que ajudaria outros a parar de usar o pacote proprietário.

Mas, mesmo que isso fosse um mal justificável, ainda era um mal. Hoje não temos mais cópias do Unix, porque as substituímos por sistemas operacionais gratuitos. Se não pudéssemos substituir o sistema operacional de uma máquina por um gratuito, substituímos a máquina.

A Lista de Tarefas GNU

À medida que o Projeto GNU prosseguia e um número crescente de componentes do sistema era encontrado ou desenvolvido, eventualmente tornou-se útil fazer uma lista das lacunas restantes. Usamos para recrutar desenvolvedores para escrever as peças que faltavam. Esta lista ficou conhecida como a Lista de Tarefas GNU. Além de componentes Unix ausentes, listamos vários outros projetos úteis de software e documentação que, pensávamos, um sistema realmente completo deveria ter.

Hoje (1), quase nenhum componente Unix é deixado na Lista de Tarefas GNU – esses trabalhos foram feitos, além de alguns não essenciais. Mas a lista está cheia de projetos que alguns podem chamar de “aplicativos”. Qualquer programa que atraia mais do que uma classe restrita de usuários seria uma coisa útil para adicionar a um sistema operacional.

Até os jogos estão incluídos na lista de tarefas – e estão desde o início. O Unix incluía jogos, então, naturalmente, o GNU também deveria. Mas compatibilidade não era um problema para jogos, então não seguimos a lista de jogos que o Unix tinha. Em vez disso, listamos um espectro de diferentes tipos de jogos que os usuários podem gostar.

(1) Isso foi escrito em 1998. Em 2009 não mantemos mais uma longa lista de tarefas. A comunidade desenvolve software livre tão rápido que nem conseguimos acompanhar tudo, mas temos uma lista de Projetos de Alta Prioridade, uma lista muito menor de projetos que realmente queremos encorajar as pessoas a escrever.

A Biblioteca GNU GPL

A biblioteca GNU C usa um tipo especial de copyleft chamado GNU Library General Public License(1), que dá permissão para vincular software proprietário à biblioteca. Por que fazer essa exceção?

Não é uma questão de princípio; não há nenhum princípio que diga que os produtos de software proprietário têm o direito de incluir nosso código. (Por que contribuir com um projeto baseado em recusar compartilhar conosco?) Usar a LGPL para a biblioteca C, ou para qualquer biblioteca, é uma questão de estratégia.

A biblioteca C faz um trabalho genérico; todo sistema proprietário ou compilador vem com uma biblioteca C. Portanto, tornar nossa biblioteca C disponível apenas para software livre não daria nenhuma vantagem ao software livre – apenas desencorajaria o uso de nossa biblioteca.

Um sistema é uma exceção a isso: no sistema GNU (e isso inclui GNU/Linux), a biblioteca GNU C é a única biblioteca C. Assim, os termos de distribuição da biblioteca GNU C determinam se é possível compilar um programa proprietário para o sistema GNU. Não há razão ética para permitir aplicações proprietárias no sistema GNU, mas estrategicamente parece que desativá-las faria mais para desencorajar o uso do sistema GNU do que para encorajar o desenvolvimento de aplicações livres. É por isso que usar a Biblioteca GPL é uma boa estratégia para a biblioteca C.

Para outras bibliotecas, a decisão estratégica precisa ser considerada caso a caso. Quando uma biblioteca faz um trabalho especial que pode ajudar a escrever certos tipos de programas, liberá-lo sob a GPL, limitando-o apenas a programas livres, é uma forma de ajudar outros desenvolvedores de software livre, dando-lhes uma vantagem em relação ao software proprietário.

Considere o GNU Readline, uma biblioteca que foi desenvolvida para fornecer edição de linha de comando para BASH. O Readline é lançado sob a GNU GPL comum, não a Library GPL. Isso provavelmente reduz a quantidade de Readline usada, mas isso não é uma perda para nós. Enquanto isso, pelo menos um aplicativo útil foi criado como software livre especificamente para poder usar o Readline, e isso é um ganho real para a comunidade.

Os desenvolvedores de software proprietário têm as vantagens que o dinheiro oferece; os desenvolvedores de software livre precisam fazer vantagens uns para os outros. Espero que algum dia tenhamos uma grande coleção de bibliotecas cobertas pela GPL que não tenham paralelo disponível para software proprietário, fornecendo módulos úteis para servir como blocos de construção em novo software livre e somando uma grande vantagem para o desenvolvimento de software livre.

(1) Esta licença é agora chamada de GNU Lesser General Public License, para evitar dar a ideia de que todas as bibliotecas deveriam usá-la. Consulte Por que você não deve usar a Lesser GPL para sua próxima biblioteca para obter mais informações.

Coçar uma coceira?

Eric Raymond diz que “Todo bom trabalho de software começa coçando a coceira pessoal de um desenvolvedor”. Talvez isso aconteça às vezes, mas muitas partes essenciais do software GNU foram desenvolvidas para ter um sistema operacional livre completo.

Por exemplo, desenvolvemos a biblioteca GNU C porque um sistema semelhante ao Unix precisa de uma biblioteca C, o BASH porque um sistema semelhante ao Unix precisa de um shell e o GNU tar porque um sistema semelhante ao Unix precisa de um programa tar. O mesmo vale para meus próprios programas – o compilador GNU C, GNU Emacs, GDB e GNU Make.

Alguns programas GNU foram desenvolvidos para lidar com ameaças específicas à nossa liberdade. Assim, desenvolvemos o gzip para substituir o programa Compress, que havia sido perdido para a comunidade por causa das patentes LZW. Encontramos pessoas para desenvolver o LessTif e, mais recentemente, iniciamos o GNOME e o Harmony, para resolver os problemas causados ​​por certas bibliotecas proprietárias (veja abaixo). Estamos desenvolvendo o GNU Privacy Guard para substituir o popular software de criptografia não-livre, porque os usuários não deveriam ter que escolher entre privacidade e liberdade.

É claro que as pessoas que escreveram esses programas se interessaram pelo trabalho, e muitos recursos foram adicionados a eles por várias pessoas para atender às suas próprias necessidades e interesses. Mas não é por isso que os programas existem.

desenvolvimentos inesperados

No início do Projeto GNU, imaginei que desenvolveríamos todo o sistema GNU e depois o lançaríamos como um todo. Não foi assim que aconteceu.

Como cada componente do sistema GNU foi implementado em um sistema Unix, cada componente poderia ser executado em sistemas Unix muito antes de existir um sistema GNU completo. Alguns desses programas tornaram-se populares e os usuários começaram a estendê-los e portá-los — para as várias versões incompatíveis do Unix e, às vezes, também para outros sistemas.

O processo tornou esses programas muito mais poderosos e atraiu fundos e contribuidores para o Projeto GNU. Mas provavelmente também atrasou a conclusão de um sistema de trabalho mínimo em vários anos, já que o tempo dos desenvolvedores GNU foi dedicado à manutenção dessas portas e à adição de recursos aos componentes existentes, em vez de continuar escrevendo um componente ausente após o outro.

O GNU Hurd

Em 1990, o sistema GNU estava quase completo; o único componente principal ausente era o kernel. Decidimos implementar nosso kernel como uma coleção de processos de servidor rodando em cima do Mach. Mach é um microkernel desenvolvido na Carnegie Mellon University e depois na University of Utah; o GNU Hurd é uma coleção de servidores (ou seja, um rebanho de GNUs) que rodam em cima do Mach e fazem os vários trabalhos do kernel Unix. O início do desenvolvimento foi adiado enquanto esperávamos que Mach fosse lançado como software livre, como havia sido prometido.

Uma razão para escolher esse design foi evitar o que parecia ser a parte mais difícil do trabalho: depurar um programa do kernel sem um depurador de nível de fonte para fazer isso. Esta parte do trabalho já havia sido feita, em Mach, e esperávamos depurar os servidores Hurd como programas de usuário, com GDB. Mas demorou muito para Faça aquilo possível, e os servidores multithread que enviam mensagens uns para os outros tornaram-se muito difíceis de depurar. Fazer o Hurd funcionar solidamente se estendeu por muitos anos.

Alex

O kernel GNU não deveria originalmente ser chamado de Hurd. Seu nome original era Alix — em homenagem à mulher que era minha namorada na época. Ela, uma administradora de sistemas Unix, havia apontado como seu nome se encaixaria em um padrão de nomenclatura comum para versões de sistemas Unix; como brincadeira, ela disse a seus amigos: “Alguém deveria nomear um kernel depois de mim”. Eu não disse nada, mas decidi surpreendê-la com um kernel chamado Alix.

Não ficou assim. Michael (agora Thomas) Bushnell, o principal desenvolvedor do kernel, preferiu o nome Hurd e redefiniu Alix para se referir a uma certa parte do kernel - a parte que interceptaria chamadas de sistema e as trataria enviando mensagens para servidores Hurd.

Mais tarde, Alix e eu terminamos, e ela mudou de nome; independentemente, o design do Hurd foi alterado para que a biblioteca C enviasse mensagens diretamente aos servidores, e isso fez com que o componente Alix desaparecesse do design.

Mas antes que essas coisas acontecessem, uma amiga dela encontrou o nome Alix no código-fonte do Hurd e mencionou para ela. Então ela teve a chance de encontrar um kernel com o nome dela.

Linux e GNU/Linux

O GNU Hurd não é adequado para uso em produção, e não sabemos se algum dia será.O design baseado em capacidade tem problemas que resultam diretamente da flexibilidade do design, e não está claro se existem soluções.

Felizmente, outro kernel está disponível. Em 1991, Linus Torvalds desenvolveu um kernel compatível com Unix e o chamou de Linux. Era proprietário no início, mas em 1992, ele o tornou software livre; combinar o Linux com o sistema GNU não muito completo resultou em um sistema operacional livre completo. (Combiná-los foi um trabalho substancial por si só, é claro.) É devido ao Linux que podemos realmente executar uma versão do sistema GNU hoje.

Desafios do nosso futuro

Temos nossa capacidade comprovada de desenvolver um amplo espectro de software livre. Isso não significa que somos invencíveis e imparáveis. Vários desafios tornam o futuro do software livre incerto; Enfrentá-los exigirá esforço e resistência constantes, às vezes durando anos. Exigirá o tipo de determinação que as pessoas demonstram quando valorizam sua liberdade e não permitem que ninguém a tire.

As quatro seções a seguir discutem esses desafios.

hardware secreto

Os fabricantes de hardware tendem cada vez mais a manter as especificações de hardware em segredo. Isso torna difícil escrever drivers livres para que o Linux e o XFree86 possam suportar novos hardwares. Temos sistemas gratuitos completos hoje, mas não os teremos amanhã se não pudermos suportar os computadores de amanhã.

Existem duas maneiras de lidar com esse problema. Os programadores podem fazer engenharia reversa para descobrir como dar suporte ao hardware. O resto de nós pode escolher o hardware que é suportado pelo software livre; à medida que nossos números aumentam, o sigilo das especificações se tornará uma política autodestrutiva.

A engenharia reversa é um grande trabalho; teremos programadores com determinação suficiente para empreendê-lo? Sim – se construímos um forte sentimento de que o software livre é uma questão de princípio e os drivers não livres são intoleráveis. E será que muitos de nós gastarão dinheiro extra, ou até mesmo um pouco de tempo extra, para que possamos usar drivers gratuitos? Sim, se a determinação de ter liberdade for generalizada.

(Nota de 2008: este problema também se estende ao BIOS. Existe um BIOS gratuito, LibreBoot (uma distribuição do coreboot); o problema é obter especificações para máquinas para que o LibreBoot possa suportá-las sem “blobs” não livres.)

bibliotecas não livres

Uma biblioteca não livre que roda em sistemas operacionais livres atua como uma armadilha para desenvolvedores de software livre. As características atraentes da biblioteca são a isca; se você usar a biblioteca, você cai na armadilha, porque seu programa não pode ser parte de um sistema operacional livre. correr com a biblioteca faltando.) Pior ainda, se um programa que usa a biblioteca proprietária se tornar popular, ele pode atrair outros programadores desavisados ​​para a armadilha.

A primeira instância desse problema foi o kit de ferramentas Motif, nos anos 80. Embora ainda não houvesse sistemas operacionais livres, estava claro qual problema o Motif causaria para eles mais tarde. O Projeto GNU respondeu de duas maneiras: pedindo que projetos individuais de software livre suportassem os widgets gratuitos do X Toolkit, bem como o Motif, e pedindo que alguém escrevesse um substituto gratuito para o Motif. O trabalho levou muitos anos; LessTif, desenvolvido pelos programadores famintos, tornou-se poderoso o suficiente para suportar a maioria dos aplicativos Motif apenas em 1997.

Entre 1996 e 1998, outra biblioteca não livre do kit de ferramentas GUI, chamada Qt, foi usada em uma coleção substancial de software livre, o desktop KDE .

Sistemas GNU/Linux livres não podiam usar o KDE, porque não podíamos usar a biblioteca. No entanto, alguns distribuidores comerciais de sistemas GNU/Linux que não eram rigorosos em manter o software livre adicionaram o KDE aos seus sistemas – produzindo um sistema com mais recursos, mas menos liberdade. O grupo KDE estava incentivando ativamente mais programadores a usar o Qt, e milhões de novos “usuários Linux” nunca foram expostos à ideia de que havia um problema nisso. A situação parecia sombria.

A comunidade de software livre respondeu ao problema de duas maneiras: GNOME e Harmony.

GNOME, o GNU Network Object Model Environment, é o projeto de desktop do GNU. Iniciado em 1997 por Miguel de Icaza, e desenvolvido com o suporte da Red Hat Software, o GNOME se propôs a fornecer recursos de desktop semelhantes, mas usando exclusivamente software livre. vantagens também, como o suporte a uma variedade de linguagens, não apenas C++.

O Harmony é uma biblioteca de substituição compatível, projetada para possibilitar a execução do software KDE sem usar o Qt.

Em novembro de 1998, os desenvolvedores do Qt anunciaram uma mudança de licença que, quando realizada, deveria tornar o Qt software livre. Não há como ter certeza, mas acho que isso se deve em parte à resposta firme da comunidade ao problema que o Qt apresentou quando não era livre. (A nova licença é inconveniente e injusta, portanto, é desejável evitar o uso Qt.)

Como responderemos à próxima tentadora biblioteca não-livre? Será que toda a comunidade vai entender a necessidade de ficar fora da armadilha? Ou muitos de nós abrirão mão da liberdade por conveniência e produzirão um grande problema? Nosso futuro depende de nossa filosofia.

Patentes de software

A pior ameaça que enfrentamos vem das patentes de software, que podem colocar algoritmos e recursos fora dos limites do software livre por até vinte anos. As patentes do algoritmo de compactação LZW foram solicitadas em 1983, e ainda não podemos liberar software livre para produzir GIFs compactados adequadamente. Em 1998, um programa gratuito para produzir áudio compactado em MP3 foi removido da distribuição sob ameaça de um processo de patente.

Existem maneiras de lidar com patentes: podemos procurar evidências de que uma patente é inválida e podemos procurar maneiras alternativas de fazer um trabalho. Mas cada um desses métodos funciona apenas algumas vezes; quando ambos falham, uma patente pode forçar todo software livre a não ter algum recurso que os usuários desejam. Após uma longa espera, as patentes expiram (espera-se que as patentes do MP3 tenham expirado em 2018), mas o que faremos até lá?

Aqueles de nós que valorizam o software livre por causa da liberdade continuarão com o software livre de qualquer maneira. Conseguiremos realizar o trabalho sem os recursos patenteados. Mas aqueles que valorizam o software livre porque esperam que ele seja tecnicamente superior provavelmente o chamarão uma falha quando uma patente a detém.Assim, embora seja útil falar sobre a eficácia prática do modelo de desenvolvimento “bazar”, e a confiabilidade e poder de alguns softwares livres, não devemos parar por aí: liberdade e princípios.

Documentação gratuita

A maior deficiência em nossos sistemas operacionais gratuitos não está no software – é a falta de bons manuais gratuitos que possamos incluir em nossos sistemas. A documentação é uma parte essencial de qualquer pacote de software; quando um importante pacote de software livre não vem com um bom manual gratuito, essa é uma grande lacuna. Temos muitas dessas lacunas hoje.

Documentação livre, como software livre, é uma questão de liberdade, não de preço. O critério para um manual livre é praticamente o mesmo do software livre: trata-se de dar a todos os usuários certas liberdades. A redistribuição (incluindo venda comercial) deve ser permitida, online e em papel, para que o manual possa acompanhar cada cópia do programa.

A permissão para modificação também é crucial. Como regra geral, não acredito que seja essencial que as pessoas tenham permissão para modificar todos os tipos de artigos e livros. Por exemplo, não creio que você ou eu sejamos obrigados a dar permissão para modificar artigos como este, que descrevem nossas ações e nossos pontos de vista.

Mas há uma razão particular pela qual a liberdade de modificar é crucial para a documentação do software livre. Quando as pessoas exercem seu direito de modificar o software e adicionar ou alterar seus recursos, se estiverem conscientes, também alterarão o manual - para que possam fornecer documentação precisa e utilizável com o programa modificado. Um manual não livre, que não permite que os programadores sejam conscientes e concluam o trabalho, não atende às necessidades de nossa comunidade.

Alguns tipos de limites sobre como as modificações são feitas não representam nenhum problema. Por exemplo, os requisitos para preservar o aviso de direitos autorais do autor original, os termos de distribuição ou a lista de autores estão corretos. Também não há problema em exigir que as versões modificadas incluam um aviso de que foram modificadas, mesmo para ter seções inteiras que podem não ser excluído ou alterado, desde que essas seções tratem de tópicos não técnicos. Em outras palavras, eles não impedem que a comunidade de software livre faça pleno uso do manual.

No entanto, deve ser possível modificar todas as técnico conteúdo do manual, e depois distribuir o resultado em todas as mídias usuais, por todos os canais usuais; caso contrário, as restrições obstruem a comunidade, o manual não é gratuito e precisamos de outro manual.

Os desenvolvedores de software livre terão consciência e determinação para produzir uma gama completa de manuais gratuitos? Mais uma vez, nosso futuro depende da filosofia.

Devemos falar sobre liberdade

As estimativas atuais são de que existem dez milhões de usuários de sistemas GNU/Linux como Debian GNU/Linux e Red Hat “Linux”. O software livre desenvolveu vantagens tão práticas que os usuários estão migrando para ele por razões puramente práticas.

As boas consequências disso são evidentes: mais interesse em desenvolver software livre, mais clientes para negócios de software livre e mais capacidade de incentivar as empresas a desenvolver software livre comercial em vez de produtos de software proprietário.

Mas o interesse no software está crescendo mais rápido do que a consciência da filosofia em que se baseia, e isso leva a problemas. Nossa capacidade de enfrentar os desafios e ameaças acima depende da vontade de permanecer firme pela liberdade. Para garantir que nossa comunidade tenha essa vontade, precisamos espalhar a ideia para os novos usuários à medida que eles entram na comunidade.

Mas estamos falhando em fazê-lo: os esforços para atrair novos usuários para nossa comunidade estão superando em muito os esforços para ensiná-los o civismo de nossa comunidade. Precisamos fazer as duas coisas, e precisamos manter os dois esforços em equilíbrio.

"Código aberto"

Ensinar novos usuários sobre liberdade tornou-se mais difícil em 1998, quando uma parte da comunidade decidiu parar de usar o termo “software livre” e dizer “software de código aberto”.

Alguns que favoreceram este termo pretendiam evitar a confusão de “grátis” com “gratis” – um objetivo válido. Outros, no entanto, pretendiam deixar de lado o espírito de princípio que havia motivado o movimento do software livre e o Projeto GNU, e apelar para executivos e usuários de negócios, muitos dos quais sustentam uma ideologia que coloca o lucro acima da liberdade, acima da comunidade, acima do princípios. Assim, a retórica do “código aberto” se concentra no potencial de fazer software poderoso e de alta qualidade, mas evita as ideias de liberdade, comunidade e princípio.

As revistas “Linux” são um exemplo claro disso – elas estão cheias de anúncios de software proprietário que funciona com GNU/Linux. Quando o próximo Motif ou Qt aparecer, essas revistas alertarão os programadores para ficarem longe dele, ou eles farão anúncios para ele?

o apoio das empresas pode contribuir para a comunidade de várias maneiras; tudo o mais sendo igual, é útil. mas ganhar seu apoio falando ainda menos sobre liberdade e princípios pode ser desastroso; torna ainda pior o desequilíbrio anterior entre extensão e educação cívica.

“Software livre” e “código aberto” descrevem a mesma categoria de software, mais ou menos, mas dizem coisas diferentes sobre o software e sobre valores. O Projeto GNU continua a usar o termo “software livre”, para expressar a ideia de que a liberdade, não apenas a tecnologia, é importante.

Experimentar!

O aforismo de Yoda ("Não há 'tentar'") parece legal, mas não funciona para mim. Eu fiz a maior parte do meu trabalho enquanto estava ansioso sobre se eu poderia fazer o trabalho e sem certeza de que seria suficiente para atingir a meta se eu fizesse. Mas eu tentei mesmo assim, porque não havia ninguém além de mim entre o inimigo e minha cidade. Surpreendendo-me, às vezes tenho conseguido.

Às vezes eu falhei; algumas das minhas cidades caíram. Então encontrei outra cidade ameaçada e me preparei para mais uma batalha. Com o tempo, aprendi a procurar ameaças e me colocar entre elas e minha cidade, chamando outros hackers para se juntarem a mim.

Hoje em dia, muitas vezes não sou o único. É um alívio e uma alegria quando vejo um regimento de hackers cavando para manter a linha, e percebo que esta cidade pode sobreviver - por enquanto. Mas os perigos são cada vez maiores. ano, e agora a Microsoft atacou explicitamente nossa comunidade. Não podemos dar o futuro da liberdade como garantido. Não tome isso como garantido! Se você quer manter sua liberdade, você deve estar preparado para defendê-la.

TH.arial ( família de fontes: Arial, Serif;) P.topic ( família de fontes: sans-serif;) A.plain ( decoração de texto: nenhuma;) A.topic01 ( cor: #006890; família de fontes: sans-serif; text-decoration: none;) A.topic02 ( color: #099771; font-family: sans-serif; text-decoration: none;) serif; text-decoration: none;) A.topic04 ( color: #98650A; família de fontes: sans-serif; decoração de texto: nenhuma;) decoração de texto: nenhuma;) A.topic06 (cor: #099607; família de fontes: sans-serif; decoração de texto: nenhuma;) A .topic07 ( cor: #9E1215; família da fonte: sans-serif; decoração: nenhuma;) A.topic08 ( cor: #970941; família da fonte: sans-serif; decoração do texto: nenhuma;) A.topic09 ( cor : #950995; font-family: sans-serif; text-decoration: none;) A.topic010 ( color: # 390A98; font-family: sans-serif; text-decoration: none;) H1 ( font-family: sans -serif;) H2 ( família de fontes: sans-serif;) H3 ( família de fontes: sans-serif;) H4 ( família de fontes: sans-seri f;) H5 ( família de fontes: sans-serif;) H6 ( família de fontes: sans-serif;)

Ideologia do Software Livre e o Projeto GNU: Situação Atual e Desafios Imediatos

S.D. Kuznetsov

A Free Software Foundation (FSF) é um fenômeno muito interessante e, em muitos aspectos, excepcional no mundo da programação de hoje. Muitos programadores nacionais tiveram que lidar com programas da FSF (o sistema de programação GCC é especialmente conhecido), mas a falta de publicações em russo dificulta a compreensão da ideologia e dos objetivos da FSF, e também impossibilita avaliar a atraso. O objetivo deste pequeno artigo é preencher, pelo menos parcialmente, essa lacuna. O artigo é inteiramente baseado nos materiais da FSF e, portanto, de acordo com os princípios gerais desta organização, pode ser livremente reimpresso, copiado ou distribuído de qualquer outra forma (com a preservação desta nota).

1. Ideologia FSF e os Objetivos Gerais do Projeto GNU

A FSF é uma organização de programação fundada e liderada por Richard Stallman. No cenário mais geral, a tarefa da FSF é eliminar as restrições à cópia, distribuição, estudo e modificação de programas de computador. Para atingir este objetivo comum, a FSF incentiva o desenvolvimento e uso de software livre direcionado a uma ampla gama de aplicações.

Em seu "Manifesto GNU", escrito em 1985, R. Stallman, como a principal idéia que levou ao surgimento da FSF e do projeto GNU, apresenta sua rejeição à propriedade do software. As peculiaridades das relações na comunidade programadora muitas vezes fazem com que as pessoas optem por seguir o sentimento natural de amizade e ajuda mútua, ou submissão que interfere nessa lei de propriedade. Com o software livre, essa escolha onerosa não é mais necessária.

A criação de um sistema integrado de software livre evita a duplicação de trabalho dos programadores (o que muitas vezes só é necessário porque alguém possui o software). A distribuição gratuita de códigos-fonte de programas facilita a sua manutenção e adaptação às necessidades de um determinado utilizador (não é necessário recorrer aos serviços de apenas empresas detentoras de licenças de códigos-fonte). Há uma oportunidade adicional e muito importante de usar um bom software para fins educacionais.

De acordo com R. Stallman, ao mudar para o software livre, os programadores não morrerão de fome (embora, aparentemente, ganhem um pouco menos). A restrição à cópia de software não é a única maneira de ganhar dinheiro. A ideia principal de Stallman é que você não deve vender programas, mas sim o trabalho de um programador. Em particular, a fonte de renda pode ser a manutenção de sistemas de software ou sua configuração para uso em novos computadores e/ou em novas condições, ensino, etc.

O "Manifesto" de Stallman é escrito com muita emoção e em alguns lugares é muito utópico. No entanto, parece que as ideias de software livre estão historicamente próximas das atitudes tradicionais (com exceção dos anos mais recentes) entre os programadores soviéticos. Talvez seja a linha FSF que é o caminho mais natural para a integração profunda das comunidades nacionais e mundiais de programadores.

Mais especificamente, a FSF está desenvolvendo programas dentro da estrutura do projeto GNU (a abreviação GNU é expandida recursivamente - GNU "s Not Unix). O objetivo do projeto GNU é criar um sistema de software integrado completo que seja compatível com as capacidades de o ambiente Unix OS (como regra, as capacidades dos programas GNU são capacidades mais amplas de análogos do ambiente Unix).

O software FSF é "gratuito" em dois sentidos. Em primeiro lugar, qualquer programa pode ser copiado e transferido livremente para qualquer pessoa. Em segundo lugar, a disponibilidade de códigos-fonte de programas oferece uma oportunidade para o estudo gratuito dos programas, seu aprimoramento e distribuição de versões modificadas.

Assim como os direitos das empresas de software comuns são protegidos por sua marca de direitos autorais (copyright), a "liberdade" dos sistemas de software da FSF é protegida por "copyleft" - uma combinação de direitos autorais e um documento com o título "GNU General Public License" presente em todos os textos da FSF. Este documento declara os direitos que qualquer proprietário atual deste texto possui e a impossibilidade de privá-los de qualquer outro assunto.

A principal atividade da FSF é o desenvolvimento de novos componentes de software livre dentro da estrutura do projeto GNU. Na maioria das vezes, o projeto GNU se desenvolve de maneira planejada (veja, em particular, a seção 3 deste artigo), mas a FSF também aceita programas de distribuição gratuita desenvolvidos por empresas e indivíduos por iniciativa própria. Além disso, a FSF produz e vende fitas de software livre, prepara, publica e distribui manuais para vários componentes do software GNU e mantém e distribui um diretório de serviços, uma lista de empresas e indivíduos que fornecem serviços pagos a usuários de programas GNU e sistemas.

A base financeira da FSF é a venda de fitas e documentação, bem como o patrocínio de empresas comerciais e pessoas físicas.

2. Software GNU disponível

Atualmente, nem todos os componentes do software do Projeto GNU estão prontos. No entanto, a FSF distribui muitos programas, alguns dos quais são escritos diretamente pelos programadores da FSF e alguns dos quais são doados à FSF para distribuição gratuita por outras organizações e indivíduos. Vamos listar brevemente os produtos de software distribuídos pela FSF agora.

O Emacs é um editor extensível e personalizável para diferentes tipos de terminais e necessidades do usuário. A extensibilidade do editor é baseada no uso do interpretador de linguagem Lisp embutido no editor (um dialeto de Common Lisp). Simultaneamente com os textos fonte do editor, são distribuídos manuais de utilização do Emacs e um manual de referência para programação em Lisp no ambiente Emacs.

Bison é um substituto para o gerador de analisador padrão Yacc com algumas extensões. O guia também está sendo distribuído.

Duas implementações de um dialeto simplificado da linguagem Lisp - Scheme: uma do MIT (escrita em C), a segunda da Universidade de Yale (escrita em Scheme).

O utilitário texi2roff foi projetado para converter arquivos de texto no formato TeX em arquivos de texto do formato padrão roff para Unix OS (a documentação distribuída pela FSF na mídia da máquina é formatada no formato TeX).

Utilitários para compactar/descompactar arquivos de texto.

O Programa de Xadrez GNU.

GNU CC é um compilador C de otimização portátil. Suporta totalmente o padrão ANSI C. Contém ferramentas para construir geradores de código de forma semi-automática para novos computadores. Distribuído com o manual.

Um montador GAS portátil de passagem única que é quase duas vezes mais rápido que o montador Unix padrão.

Opções de utilitário gratuito para trabalhar com arquivos de objeto: ar, ld, nm, size, gprof, strip e ranlib. Um novo utilitário de carregamento dinâmico, dld, também está sendo distribuído.

GNU make inclui quase todos os utilitários BSD, System V e POSIX make, bem como várias extensões. Distribuído com o manual.

O depurador GDB pode ser usado para depurar programas escritos em C, C++ e Fortran. Distribuído com o manual.

BASH (Bourne Again SHell) - O GNU Shell é compatível com o comando sh padrão do Unix e inclui várias extensões tiradas de outras variantes do Shell.

GAWK é a versão GNU do utilitário Unix AWK padrão.

flex é um substituto GNU para o gerador de analisador léxico padrão lex. O flex permite que você obtenha scanners mais eficientes do que o lex.

GNU tar é uma extensão do utilitário de arquivo tar padrão.

Parte dos arquivos do BSD 4.3-tahoe que não contém código fonte da AT&T e são liberados para distribuição gratuita pela Universidade de Berkeley. Esses arquivos contêm, em particular, os textos-fonte completos de alguns utilitários, jogos, rotinas de biblioteca, etc.

Sistemas que suportam trabalhar com versões de software em grandes projetos de software, RCS (Revision Control System) e CVS (Concurrent Version System).

Mais rápido que as versões gratuitas padrão dos utilitários grep e diff.

Uma linguagem gráfica quase totalmente compatível com Postscript, Ghostscript.

Um programa interativo para desenhar expressões matemáticas e dados gnuplot.

Um conjunto de ferramentas para transformar o compilador GCC em um compilador C++, incluindo bibliotecas de classes avançadas.

Enorme quantidade de programas X11, implementação MIT X-Windows (versão 11, release 4). O volume do artigo não permite debruçar-se sobre isso com mais detalhes.

Basicamente, todos os programas distribuídos pela FSF são projetados para trabalhar no ambiente Unix e já são utilizados com várias versões deste sistema, mas existem versões de alguns programas para trabalhar com VMS e até MS-DOS.

3. Tarefas Imediatas do Projeto GNU

A lista de trabalho planejado para ser feito como parte do projeto GNU é bastante extensa. Vamos dar apenas uma breve visão geral das principais direções.

3.1. Documentação

É necessário preparar uma série de manuais para programas que já estão prontos ou prestes a serem concluídos: um manual de referência para a linguagem C, uma descrição do GCC incluindo um manual para determinar as máquinas de destino, um manual para programação de sistemas aplicativos no X- Ambiente Windows, etc

3.2. Projetos relacionados ao desenvolvimento do kernel Unix livre

A FSF está trabalhando na construção de um kernel Unix baseado no microkernel Mach gratuito. As tarefas imediatas incluem a implementação dos protocolos de rede TCP/IP e um novo sistema de arquivos (espera-se tirar proveito de alguns softwares de prateleira que devem ser declarados livres). Existem outras tarefas, incluindo o desenvolvimento de um depurador de kernel do sistema operacional remoto.

3.3. Desenvolvimento do ambiente Unix livre

Alguns utilitários precisam ser implementados (sdiff, mailx, join, etc.). O desenvolvimento de várias bibliotecas é necessário. Entre as tarefas está o desenvolvimento de uma interface de terminal amigável.

3.4. Extensões para software GNU existente

Basicamente, Emacs, GCC e GDB precisam de trabalho.

Com relação ao Emacs, duas áreas de melhoria são necessárias: estender o Emacs para permitir que ele seja usado como um sistema de publicação e internacionalizar totalmente o Emacs para que qualquer script nacional possa ser usado.

O GCC precisa ser finalizado para corrigir os comentários acumulados e implementar as sugestões existentes (a lista de comentários e sugestões é distribuída com o GCC).

O GDB precisa ser melhorado em termos de introdução de um interpretador C no depurador; alguns ajustes também são necessários para poder usar o GDB ao depurar programas escritos em linguagens diferentes do C.

3.5. Novos compiladores

É necessária a implementação de compiladores para várias linguagens de programação (Algol, Algol-68, PL/1, Ada, etc.) com acesso ao gerador de código GCC. (Esse trabalho já está em andamento para Fortran, Pascal e Modula-2.)

3.5. Toneladas de outros projetos

A lista atual de tarefas imediatas do Projeto GNU inclui uma ampla variedade de outros trabalhos. Vamos mencionar o desejo de ter análogos gratuitos de Page Maker, Ventura Publisher, sistemas dbase2 ou dbase3, etc. Requer vários programas X-Windows. etc. etc.

4. Como obter mais informações e/ou programas GNU

Para se comunicar com a FSF no ambiente doméstico de hoje, é melhor usar o e-mail. A pessoa de contato da FSF para pessoas que querem se juntar ao Projeto GNU é Walter Poxon. Seu endereço de e-mail: Você também pode obter informações sobre as regras para receber fitas com software GNU da FSF. Infelizmente, esse caminho natural não é muito adequado para a realidade soviética atual (o pagamento das fitas, embora simbólico, ainda é em moeda forte).

Em nosso país, de fato, existem todas essas fitas. Qualquer detentor deles, de acordo com as regras do jogo FSF, é obrigado a facilitar sua distribuição posterior. Infelizmente, isso é muito trabalho técnico. A Associação Soviética de Usuários UNIX (SUUG) planeja assumir, assim que as condições técnicas permitirem, a distribuição gratuita de software livre para seus membros e a cópia paga de fitas para todos (isso é uma questão dos próximos meses). Todos os membros do SUUG receberão informações relevantes, informações atuais podem ser obtidas no endereço via e-mail ou no endereço habitual do SUUG: 125502, Moscow, st. Lavochkina, 19.

Literatura.

  1. Richard M. Stallman. O Manifesto GNU.
  2. GNU General Public License // Free Software Foundation, 1989.
  3. Boletim GNU // Free Software Foundation, 1991.
  4. Lista de Tarefas GNU (arquivo atualizado periodicamente disponível por e-mail; baseamos na versão de 24 de julho de 1991)