[imagem de um Admirável Mundo GNU]
Admirável Mundo GNU - Número 25
Copyright © 2001 Georg C. F. Greve <greve@gnu.org>
Traduzido para o português por H. Fernandes <fernandesh@yahoo.com>
Revisado por Fernando Lozano <fsl@centroin.com.br>
A declaração de permissão está abaixo.

[DE | FR | FR | JA | ES | KO | PT]

Bem-vindo a mais um número da Admirável Mundo GNU de Georg Greve. Neste mês começaremos com um projeto que busca levar o GNU ao mundo Apple.

GNU-Darwin

O projeto GNU-Darwin trabalha no porte do sistema GNU para Darwin[6], a base do sistema proprietário MacOS X. O próprio Darwin se baseia no FreeBSD e no Mach 3.0, e atualmente roda em arquiteturas baseadas no PowerPC. Contudo, a Apple está trabalhando num porte para arquiteturas Intel. Assim, depois do GNU/Linux e do GNU/Hurd, haverá um terceiro sistema baseado no GNU.

Uma característica muito interessante do sistema GNU-Darwin é a possibilidade de executar aplicativos Macintosh em paralelo com programas Unix bem conhecidos. Isto permite a comparação direta entre programas baseados em Macintosh e em GNU, algo que antes era impossível. Assim, este recurso faz com que o GNU-Darwin seja bem adaptado às estruturas híbridas Mac/Unix e, com o porte do SAMBA para GNU-Darwin, será fácil implementar redes heterogêneas Mac/Unix/Windows.

Mas é claro que o uso principal do GNU-Darwin não será possibilitar a execução de software proprietário. Ele vai em vez disso criar outra ponte entre a plataforma Macintosh e o Software Livre, pois o usuário vai logo perceber que há mais Software Livre para seu computador do que software proprietário. Softwares desenvolvidos para GNU-Darwin são também melhor adaptados à interoperabilidade com o MacOS; assim mais Software Livre pode ser trazido à luz.

A grande quantidade de Software Livre baseado em Unix, e as exclusivas capacidades de estruturas heterogêneas e desenvolvimento em paralelo são argumentos fortes para que se escolha o GNU-Darwin em vez do MacOS X.

Por outro lado, GNU-Darwin possui várias vantagens sobre o Projeto LinuxPPC, e isso explica porque se pode observar uma migração para o GNU-Darwin. Antes de mais nada, GNU-Darwin é (como o GNU/Hurd) baseado em microkernel, o que lhe dá possibilidades que o kernel Linux não pode igualar. Além disso, o suporte para o Darwin é feito pela própria Apple, pois ele também é a base para o MacOS X. Por isto, deve-se esperar para ele um melhor suporte a hardware.

Mas nem tudo é melhor. Apesar das contribuições ao projeto GNU-Darwin serem, obviamente, distribuídas sob a Licença Geral Pública GNU (GPL), o próprio Darwin foi distribuído pela Apple sob a licença "Apple Public Source License" (APSL). Na versão 1.1, esta licença não se qualifica como Software Livre por três importantes razões [7].

Antes de mais nada, era proibido fazer alterações para uso pessoal sem que elas fossem tornadas públicas. Na percepção do Projeto GNU, o direito de fazer mudanças apenas para uso pessoal é intimamente relacionado com o direito à privacidade; por isso é que a GPL foi projetada para permitir isto.

Além disso, o desenvolvedor e usuário não científico de uma versão modificada era forçado a informar uma instituição especificada; a Aplle, neste caso. Este controle central está em contradição direta com o pensamento do Software Livre.

E, por último, ainda havia um termo de isenção de responsabilidade que permitia à Apple cancelar a licença e interromper o uso do software a qualquer ponto se reinvidicações de copyright ou de patente fossem feitas contra a Apple. Isto tornou cada usuário do planeta dependente do muito problemático sistema americano de patentes.

A versão 1.2 da APSL foi lançada em Janeiro de 2001, e resolve uma grande parte dos problemas. Contudo, permanecem as restrições sobre modificações particulares, e o desrespeito à privacidade.

Assim, de certo modo a APSL vai passo a passo na direção da NPL, que é definitivamente uma licença de Software Livre, apesar de que ela de fato permita que o código fonte se torne proprietário. Caso a APSL finalmente chegue ao estágio da NPL, ela seria ainda assim menos do que satisfatória, pois seria incompatível com a mais usada licença de Software Livre, a GPL.

Assim, em certo sentido, a situação é comparável àquela do KDE há alguns anos atrás, pois se trata de um projeto limpo de Software Livre construído sobre um fundamento fraco, e portanto correndo o risco de ser derrubado juridicamente. Devido a isto, o projeto GNU-Darwin tenta distribuir o Darwin sob a Licença Geral Pública GNU (GPL). Em especial para este trabalho de defesa, Michael L. Love, um dos participantes do projeto GNU-Darwin, pede o suporte da comunidade. Aos olhos do projeto GNU-Darwin, o software GNU-Darwin só será verdadeiramente livre se o Darwin usar a GPL.

Os problemas técnicos atuais são o porte de mais pacotes para o GNU-Darwin e a criação de uma distribuição em CD. A longo prazo, planeja-se fazer bom uso dos recursos especiais do GNU-Darwin.

Como a equipe atualmente consiste de apenas seis desenvoledores ativos, há um amplo campo de possíveis atividades que as pessoas interessadas podem escolher. Serão particularmente bem recebidos desenvolvedores com experiências em Mozilla, SDL GNOME & Audio-Support (ALSA).

Falando nisto, a origem do GNU-Darwin foi o desejo de Michael L. Love usar seu Apple em cristalografia de proteínas, pois esta é sua ocupação normal.

O que me traz a um pacote de que projetos pequenos mas muito úteis.

get_file

Daniel E. Singer criou get_file [8], um pequeno seletor de arquivos escrito em scripts de Bourne Shell. O uso deste projeto é óbvio para quem que tenha tentado selecionar arquivos em um script de shell. Esta é obviamente a principal finalidade de get_file, mas ele também pode ser usado como uma ferramenta de linha de comando.

Uma vez que ele é inteiramente escrito como um script de Bash Shell, ele não tem de ser compilado e é fácil de ser adaptado. Além disso, ele tem a capacidade de associar seqüências de escape com certos objetos, pode mudar os modos de arquivos, executar programas e lidar com máscaras de arquivos. Ele também tem ajuda online.

Apesar de não ser muito eficiente, por ser um script de shell, este projeto se provou útil para soluções "on the fly".

GNU GLOBAL

GNU GLOBAL [9] é um sistema de marcação, ou "tag", de código-fonte, que torna fácil a administração e a referência de código-fonte. Ele foi criado por Shigio Yamaguchi, que o publicou sob a Licença Pública Geral GNU, o que permitiu que ele fosse recentemente declarado um Projeto GNU oficial.

Grandes quantidades de código fonte distribuídas em diferentes diretórios facilmente saem de controle. Com GNU GLOBAL, um usuário pode referenciar códigos-fonte em C, C++, Yacc e Java, para usá-lo como material de referência na linha de comandos da shell, no Less, Nvi, Elvis, EMACS ou na Web. Para grandes projetos, em especial, isto faz com que o acompanhamento e a entrada em um projeto se tornem muito mais fáceis.

GNU GLOBAL já possui uma quantidade impressionante de recursos - ele pode não apenas localizar definições de objetos, mas também referências, e faz buscas em caminhos de bibliotecas, entende expressões regulares à la Posix, tem um formato comprimido para poupar espaço em disco, e muito mais. Porém, é claro que nem tudo já foi resolvido.

O maior problema atual é o fato que a detecção de tipos de dados e a definição de macros não são completamente automáticas. A habilitação destes recursos é um alvo primário para o desenvolvimento adicional. O suporte a mais linguagens e editores também está nos planos.

Uma vez que a versão atual em CVS do GNU automake já tem uma marcação GTAGS (o formato de arquivo de marcação, ou "tag-file", usado pelo GNU GLOBAL), espera-se que o uso de GNU GLOBAL rapidamente se torne muito fácil.

O próximo projeto tem uma meta comparável, porém sob um foco diferente.

HeaderBrowser

O HeaderBrowser [10], criado por by Amaury Bouchard, também é um projeto para melhorar a documentação do código-fonte. Ele foi desenvolvido inspirado pelo projeto HeaderViewer do NeXT, pois Amaury gostava muito dele, e quis implementar uma versão melhorada, baseada em Unix.

De modo similar a GNU GLOBAL, HeaderBrowser transforma a estrutura "plana" dos arquivos de código-fonte, e cria uma documentação navegável da API de um programa através do processamento de seus arquivos de header. Atualmente HeaderBrowser suporta as linguagens de programação C e C++, e pode gerar HTML, Texinfo, e páginas de man.

Os planos futuros incluem a navegação alfabética pelas funções, e um usuário sugeriu a criação de uma ferramenta que analisasse os arquivos de header e inserisse comentários para HeaderBrowser em branco, que pudessem ser preenchidos pelo desenvolvedor. Uma vez que a maioria dos desenvolvedores tem uma relação tensa com a documentação, isto poderia aumentar a qualidade de muitos programas.

HeaderBrowser usa a Licença Pública Geral GNU (GPL), e toda documentação é lançada sob a Licença Livre para Documentação do GNU (FDL). Por isto, o programa é realmente Livre, no melhor sentido da palavra.

GNUTLS

GNUTLS [11] é um projeto muito jovem, com a finalidade de implementar, sob a Licença Pública Geral GNU (GPL), uma biblioteca para segurança no nível de transporte (TLS). Esta biblioteca vai permitir acesso aos níveis SSL 3.0 e TLS 1.0, e deve permitir aos programadores que acrescentem um nível de segurança a seus programas.

Atualmente, GNUTLS é inferior à biblioteca OpenSSL, pois ela não tem sido tão intensamente testada, e não é usada na vida real. Porém a estrutura de GNUTLS é "thread-safe", ou adaptada a threads, e tem uma interface muito mais fácil. Além disso, é bom ter no projeto GNU uma implementação de TLS que seja claramente compatível com a Licença Geral Pública GNU (GPL).

No momento, GNUTLS não está preparada para uso diário. Antes de mais nada, ainda falta um analisador léxico, ou "parser", ASN.1 para certificados x509, mas isto pode mudar em menos tempo do que se espera, pois o autor atual, Nikos Mavroyanopoulos, está trabalhando nisto. Uma vez que o outro desenvolvedor, Tarun Upadhyay, está deixando o projeto por falta de tempo, toda ajuda é muito bem vinda.

Outras metas para desenvolvimento são a implementação das extensões especificadas em "Wireless Extensions to TLS", ou "Extensões sem fio ao TLS", um padrão em nível "draft" no IETF. Além disso, está nos planos o suporte ao OpenPGP, algo que nenhuma implementação livre de TLS possui. Por razões aparentes, GNUTLS é baseado em libgcrypt, a biblioteca do Projeto GNU de Proteção à Privacidade, criado por Werner Koch, que se tornou famoso pelo suporte que o governo alemão oferece a ele.

Vou agora para um projeto que é de suprema importância para todos nós.

GNU.FREE

O Projeto "Free Referenda & Elections Electronically" (FREE), ou "Referendos e Eleições Livres Eletronicamente" [12], originalmente criado pela Universidade de Warwick (EUA), e atualmente mantido por Jason Kitcat, também foi recentemente considerado um projeto GNU oficial. A meta do projeto é criar um sistema seguro para votação eletrônica que seja seguro e que proteja a privacidade.

O conceito do projeto já tem dois anos, portanto sua criação não foi disparada pelo fiasco da eleição na Florida, como se pode pensar. Mas esta óbvia manipulação de uma eleição pública trouxe de volta à consciência publica os princípios da democracia e questões sobre voto e a contagem de votos.

Existem muitas opinões sobre a democracia eletrônica, ou e-democracia, e eu mesmo não tenho certeza de que seja uma boa idéia estabelecer um sistema ainda mais direto, pois ele muito provavelmente vai dar aos demagodos mais poder do que eles já tem. Para mim, a questão "o voto eletrônico é desejável" não foi respondida a contento.

Porém, a experiência mostra que é de se esperar uma tendência muito forte na direção da e-democracia, e eu penso que não devemos ignorar este desenvolvimento, apenas porque temos dúvidas sobre seu significado.

Em um sistema convencional, ninguém sugeriria seriamente permitir que uma companhia privada fizesse as eleições para o governo. Imagine: o votante iria para um escritório dessa companhia, e digitaria seu voto, e à noite o vencedor seria anunciado, sem qualquer possibilidade de se verificar os resultados. No domínio digital, com suas possibilidades muito maiores de manipulação, a maioria de repente deixa de considerar isto problemático.

Fiz esta experiência no começo de fevereiro, quando estive no congresso Transmediale, em Berlim, Alemanha, onde participei de um painel sobre "Software Social". Um exemplo basicamente igual ao dado acima foi aceito com alegria.

O software social tem de ser Software Livre - apenas deste modo os direitos eletrônicos podem ser mantidos em uma cultura crescentemente digital. Por isto, independentemente das opiniões pessoais sobre o significado da e-democracia, é importante que o GNU.FREE de fato exista.

Por isto, vamos retornar aos problemas técnicos.

O sistema foi projetado de forma que possa ser escalonado. Jason pensou em democracias do tamanho da Índia (a maior democracia do mundo). Com GNU.FREE, podem ser realizadas eleições de pequenos comitês até aquelas do Parlamento Europeu.

É claro que as questões de preservação da privacidade e de segurança tiveram prioridade máxima durante o desenvolvimento e, de acordo com Jason, eles estão bem atendidos. Se for corretamente configurado, nada além da destruição física dos servidores por fogo ou outras catástrofes, pode colocar uma eleição em risco. E este também seria um problema para sistemas mais convencionais de eleição.

O projeto é relativamente pequeno para suas metas muito amplas. Além de Jason, contribuiram para GNU.FREE: Rajagopal C.V., Thomas Müller, Ceki Gulcu, Neil Ferguson e Paul Voller. É necessária e desejada ajuda particularmente para o teste e a detecção de possíveis problemas de segurança.

A melhoria da segurança através de níveis adicionais de encriptação e de reparos de bugs é uma meta constante do GNU.FREE. Além disto, planeja-se implementar diferentes sistemas de eleição, pois atualmente é possivel apenas a comparação direta entre a quantidade de votos para certos candidatos.

Até mais...

Ok, por este mês é só. Como de hábito, gostaria de pedir muitos comentários, idéias, perguntas e descrições de projeto para o endereço padrão [1].

Informações
[1] Envie idéias, comentários e perguntas para Admirável Mundo GNU <column@brave-gnu-world.org>
[2] Página inicial do Projeto GNU http://www.gnu.org/
[3] Página inicial da Admirável Mundo GNU de Georg Greve http://brave-gnu-world.org
[4] Campanha "Nós rodamos GNU" http://www.gnu.org/brave-gnu-world/rungnu/rungnu.pt.html
[5] Página inicial do GNU-Darwin http://gnu-darwin.org
[6] Página inicial do Apple Darwin http://www.publicsource.apple.com/projects/darwin/
[7] Why the APSL is not a Free Software license, ou "Por que a APSL não é uma licença de Software Livre" http://www.gnu.org/philosophy/apsl.html
[8] endereço FTP do get_file ftp://ftp.cs.duke.edu/pub/des/scripts/get_file
[9] Página inicial do GNU GLOBAL http://www.tamacom.com/global/
[10] Página inicial do HeaderBrowser http://www.headerbrowser.org
[11] Página inicial do GNUTLS http://gnutls.hellug.gr/
[12] Página inicial do GNU.FREE http://www.thecouch.org/free/

[ número anterior | Página inicial da Admirável Mundo GNU ]

Retornar à Página inicial do GNU.

Envie dúvidas ou consultas sobre FSF e/ou GNU para gnu@gnu.org.
Há também outros meios de se contactar a FSF.

Envie comentários para a Admirável Mundo GNU em inglês ou alemão, para column@gnu.org,
envie comentários sobre estas páginas da Web para webmasters@www.gnu.org,
envie outras perguntas para gnu@gnu.org.

Copyright (C) 2001 Georg C. F. Greve
Tradução para o português por H. Fernandes e Fernando Lozano

É dada permissão para fazer e distribuir cópias literais deste artigo, desde que o copyright e esta permissão sejam mostrados.

Atualizado: 12 Mar 2001 fsl