Arquivar

Archive for the ‘gnu/linux’ Category

[como criptografar um disco removível com LUKS]

Seg, 12 Out 2009, 284 Andre Deixe um comentário

O objetivo deste tutorial é ensinar em passos rápidos como criar uma partição de disco criptografada com o dm-crypt e o LUKS. O foco aqui são os discos externos. É possível usar estas mesmas instruções para criptografar uma partição do seu disco principal. Todavia, se você quiser criptografar o seu disco inteiro, inclusive a partição root, o modo mais simples é reinstalando o sistema, embora seja também possível fazê-lo com alguns acréscimos às instruções abaixo.

Passo 0: instalar o cryptsetup:

# apt-get install cryptsetup

Passo 0a: certificar-se de que os módulos necessários ao uso do LUKS foram carregados:

# modprobe dm_crypt

Passo 0b (opcional): preencher o disco com dados aleatórios (sobrescreve as informações anteriores, para o caso de um disco que já estava em uso, e ainda torna mais difícil um ataque criptoanalítico):

# time dd if=/dev/urandom of=/dev/sdb bs=1M
(isto provavelmente levará algumas horas)

Obs: antes de executar o comando acima é necessário descobrir qual arquivo no sistema (/dev/xxx) representa o disco desejado. Uma forma simples de fazê-lo é executar o comando “df -h” e identificar o disco pelo seu tamanho.

Passo 1: Particionar o disco usando o seu editor de partições de preferência. Na linha de comando o mais comum é o fdisk. No ambiente gráfico, o gparted realiza essa tarefa sem dificuldades, basta selecionar o disco desejado e clicar no ícone de nova partição, escolher o tamanho desejado e voilà.

Agora é o momento de decidir se a partição criptografada irá ocupar o disco inteiro ou se haverá outras partições não criptografadas ou criptografadas com diferentes chaves. Não crie um sistema de arquivos ainda, ele será destruído quando criptografarmos a partição.

Passo 2: Criar a partição criptografada:

# cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb1

Obs: o sistema pedirá por uma senha. Quanto mais longa e aleatória, melhor. Porém, lembre-se de anotá-la em algum lugar, porque se você esquecê-la perderá tudo o que tinha no disco, já que as chances de quebrar a criptografia são quase nulas.

Passo 2a (opcional): verificar se a partição foi criptografada:

# cryptsetup luksDump /dev/sdb1

Passo 3: Abrir a partição criptografada, nomeando-a:

# cryptsetup luksOpen /dev/sdb1 nomequeeugosto

Passo 3a: Verificar se tudo deu certo até aqui e se foi criado um arquivo representando a partição aberta:

# ls -l /dev/mapper/
...
brw-r----- 1 root root 253, 0 Jul 16 01:52 nomequeeugosto

Passo 4: Criar um sistema de arquivos na partição aberta:

# /sbin/mkfs.ext4 -c -m 1 -O dir_index,filetype,extent,sparse_super /dev/mapper/nomequeeugosto

Obs: Agora é o momento de escolher o sistema de arquivos desejado. Se você for utilizar o disco apenas em uma máquina Linux, o ext4 é uma ótima escolha. Por outro lado, se você pretende acessá-lo de máquinas Windows ou OSX, é aconselhável usar o FAT32, o NTFS ou o HFS. Para instruções sobre formatação com esses sistemas de arquivos, leia as páginas man ou google it.

E pronto.

Para acessar seu disco no Linux (supondo que você está usando o Gnome, o KDE ou o XFCE), basta conectar o disco e o gerente de desktop abrirá uma janela perguntando pela senha da partição criptografada. Para acessar a partição no Windows, existe um programa muito útil que inclusive pode ser instalado em uma partição não criptografada do seu próprio disco externo. Clique aqui para saber mais.

Referências: roysindre e saout.

[MS ColdPlot]

Sex, 11 Set 2009, 253 Andre Deixe um comentário

Está na blogosfera. A Microsoft lançou ontem a fundação CodePlex com o intuito de

enable the exchange of code and understanding among software companies and open source communities.

Somando isto ao fato de que recentemente a M$ contribuiu pela primeira vez com linhas de código para o kernel do Linux, está abrindo mão de algumas patentes em favor do software livre e vem apoiando a adoção de um formato livre para documentos de escritório, torna-se nítido que estamos entrando em uma nova fase. Porém qual nova fase?

Conheça a História e a História vos dirá. A nova fase, não é a da sagração do software livre, mas a da tentativa, espero que sem sucesso, de corrosão do movimento.

Quando o movimento do software livre se iniciou, ou melhor, quando o GNU/Linux começou a sair do nicho dos über hackers e alcançar os meros geeks do dia-a-dia, a Microsoft saiu em claro ataque ao movimento, taxando-o até mesmo de câncer. Durante os anos que se seguiram, embora o software livre não apresentasse ameaça real ao monopólio global da empresa no mercado de softwares, a companhia de Bill Gates manteve sempre uma postura de repúdio à ideologia livre do movimento, espalhando FUD pela internet e mídia especializada, usando suas patentes para atacar os desenvolvedores de código livre, tentando abertamente sufocar o movimento.

O que, então, teria acontecido para que de inimiga do código livre a empresa, de repente, passasse a “apoiar” com o movimento?

O que aconteceu foi que a estratégia inicial se mostrou ineficaz e a companhia foi forçada a uma mudança de estratégia. Não obstante os constantes ataques ao movimento, o software livre tem se mostrado resistente e vem crescendo, lenta, porém constantemente, e começa a sair dos núcleos geeks e alcançar os meros usuários, começa a chamar a atenção de um público maior. Basta ver as estatísticas de um Firefox, de um OpenOffice, das distros GNU/Linux, principalmente após o nascimento do Ubuntu e a aparição dos Netbooks, bem como o crescente apoio governamental às iniciativas open source para perceber o crescimento do software livre e a ineficácia do enfrentamento ostensivo até então adotado pela Microsoft. Não apenas, mas também é relevante o fato de que outras empresas de peso têm contribuído ativamente para o desenvolvimento do software livre, de forma que nem mesmo a M$ tem poder o bastante para estrangular o movimento.

Como diz o ditado popular, “se não pode vencê-los, junte-se a eles”. Porém, não exatamente.

Sendo incapaz de extinguir o software livre ou manter o jogo nos moldes em que se desenvolveu nos anos 90, a empresa agora dá sinais de começa a adotar uma tática comum quando há uma ameaça de mudança de paradigma: aliar-se para controlar ou, ao menos, conter os limites da mudança. A estratégia não é nova. Em diversos momentos da história, quando uma elite se sentiu ameaçada por um movimento popular, que foi incapaz de reprimir, assumiu uma postura de liderança do movimento, para, do interior, minar seus efeitos. Aconteceu na revolução francesa, com a burguesia liderando as massas para controlá-las e garantir que caísse o regime político, sem prejuízo da estrutura de dominação econômica. Aconteceu também no Brasil, onde as transições colônia-império, império-república e ditadura-república contaram sempre com a direção de uma elite, antes contrária ao regime que agora apóia.

Não é que a Microsoft tenha mudado. Não é que agora tenha percebido que seu modelo de apropriação do conhecimento era prejudicial à sociedade. Não é que tenha se convencido da necessidade de liberdade em software. É apenas que ela têm percebido que a mudança pode ocorrer mesmo com seus esforços em sentido contrário. Então, se for para acontecer, que aconteça com ela no comando, que aconteça segundo as suas diretrizes.

Não, não é paranóia, não, não é teoria da conspiração. Se a M$ tivesse realmente interesse em contribuir com a comunidade, o passo mais óbvio seria fazer o que todos os que querem contribuir fazem: dão suporte, financeiro, técnico ou ideológico a uma comunidade já organizada. Quisesse a M$ colaborar com a comunidade, o passo mais óbvio seria que tivesse alocado o capital na Free Software Foundation, na Open Source Alliance, no Gnome, no Debian, na Linux Foundation, etc. Tivesse em mente uma vontade de mudança, adotaria para seus softwares as licenças GNU, BSD ou outra aprovada pela OSI ou pela FSF, não criaria seu próprio rol de “licenças livres M$”, lançando apenas alguns códigos com estas licenças e mantendo fechados seus softwares e exigindo a anuência dos usuários com seus EULAs. Quisesse favorecer o software livre, teria contribuído com o Wine para que os softwares Windows rodassem facilmente nos kernels Linux, ao invés de lançar linhas de código no kernel para garantir que o Windows funcione bem quando virtualizado nele. Fosse favorável à liberdade, contribuiria para a adoção do ODF e sua interoperabilidade com o seu pacote Office, ao invés de lançar seu próprio formato livre e boicotar as funções dos arquivos criados pelo OpenOffice quando transpostos para o MSOffice.

O próprio FAQ do site deixa essa visão clara:

We wanted a foundation that addresses a full spectrum of software projects, and does so with the licensing and intellectual property needs of commercial software companies in mind.

The Foundation Charter will spell out the types of projects that the Foundation works with, and the types of relationships projects may have to the foundation.

We know that commercial software developers are under-represented on open source projects. We know that commercial software companies face very specific challenges in determining how to engage with open source communities. We know that there are misunderstandings on both sides. Our aim is to advance the IT industry for both commercial software companies and open source communities by helping to meet these challenges.

Meeting these challenges is a collaborative process. We want your participation.

Ou seja, eles querem formar uma organização que seja responsável pela mais completa gama de projetos livres, de acordo com os interesses das empresas de softwares, na qual eles escolherão quais projetos merecem atenção e, a cereja do bolo, eles querem a nossa participação. A fundação mal começou e já pretende ser o centro. Não são eles que estão aderindo ao movimento que já existe, somos nós que devemos aderir à liderança que eles estão propondo.

A própria linguagem do site deixa clara a intenção de perverter o movimento. Não há uma menção sequer à palavra “free“, tratando-se sempre de “open source”, o que se afasta mais da ideologia e de sua incompatibilidade do tipo de mudança que eles estão propondo. Falam ainda de “intellectual property“, uma expressão duramente atacada por R. Stallman e pela FSF, que foram os primeiros fautores de uma mudança. Há também uma contraposição muito nítida entre a “comunidade” e as empresas, muito diferente da aproximação de companhias como a RedHat e a Canonical, que de fato vêm mostrando como é possível fazer negócio com software livre. Software Livre, não aberto.

Aliás, ao contrário de outras organizações como o Debian que têm propostas muito claras em um estatuto social bem definido, no CodePlex:

The most important document, the Codeplex Foundation Charter, doesn’t even exist in draft form yet.

Como dito, a idéia de aderir para controlar não é nova. Apropriações indevidas como esta já foram feitas outras vezes na história. Pense no nazismo. O partido de Hitler era o do Nationalsozialismus, ou seja, do Socialismo Nacional. Da mesma forma, o partido da ditadura no Brasil era o PSD, Partido Democrático Social e o Partido Liberal do império era escravista e conservador. A Microsoft quer colaborar com o software livre tanto quanto os nazistas queriam colaborar com o socialismo, os militares com a democracia e os escravocratas com o liberalismo.

Inicia-se agora uma etapa muito mais delicada que a anterior. Nesta nova fase a comunidade tem que se preocupar não apenas em sobreviver, mas em não deixar com que seus opositores, sob a falácia das boas intenções, tomem as rédeas do seu movimento de mudança estrutural para torná-lo mera perfumaria.

ADENDO: RMS pronunciou-se oficialmente sobre o lançamento do Codeplex, o que gerou uma curiosa réplica de Miguel de Icaza. Interessante perceber que Icaza limita-se a atacar Stallman taxando-o de maniqueísta, sem, em momento algum, confrontar suas premissas éticas e suas assertivas a respeito do compromentimento estratégico (leia-se, enfraquecimento) que a iniciativa pode gerar. O Groklaw também publicou uma matéria sobre o assunto.

[maemo oder mais do mesmo]

Sex, 28 Ago 2009, 239 Andre Deixe um comentário

Meu sonho de consumo ainda é o Open Moko, mas é impossível que um freetard como eu não se maravilhe com a chegada do Nokia N900 com o sistema Maemo.

O Maemo é um sistema operacional para “computadores de bolso“, esses aparelhos que alguns chamam de celular, outros de smartphones e que dentre suas mil utilidades, também servem para fazer ligações. Diferente de outros sistemas operacionais que competem neste mercado, o Maemo é baseado no kernel do Linux e propõe uma “nova” abordagem neste mercado onde reina o iPhone com seu sistema caixa preta, “abrindo” o sistema aos usuários e desenvolvedores.

Cada uma das muitas aspas no parágrafo anterior tem um motivo muito específico de ser.

A denominação “computadores de bolso” pode parecer extravagante, mas na realidade vem esclarecer algo que pode não evidente para alguns usuários. Esses aparelhos que hoje vemos no mercado vendidos como celulares, são muito mais do que isto e guardam maior parentesco com essa máquina que você tem na sua escrivaninha do que com aquela que carregava no bolso na virada do milênio.

Não porque estes aparelhos concentram diversas funções além da básica a que se propõem que é realizar chamadas telefônicas, mas porque eles possuem um processador, espaço em disco e memória superiores aquilo que você tinha sobre a sua mesa nos anos 90, com um sistema operacional mais sofisticado do que aquele que você costumava usar, com um teclado e um mouse que servem para que você possa, em tese, usá-lo para realizar mais tarefas do que era possível com aqueles computadores e do que os vendedores dizem ser possível com o seu equipamento. O empecilho é que a maior parte dos vendedores destas máquinas não transfere plenamente a propriedade dos equipamentos aos usuários, restringindo o que eles podem fazer com seus computadores.

Por conta disto, o uso do kernel do Linux e a proposta de um sistema operacional onde o consumidor possui completa liberdade de uso de seu equipamento é uma mudança de paradigma, uma “nova” abordagem. Estas aspas, por sua vez, justificam-se pelo fato de que esta abordagem não é exatamente nova, está por aí há pelo menos 25 anos ou, em termos mercadológicos mais restritos, vem desde o Open Moko.

O sentido de “abrir” pode não parecer tão imediato para o usuário acostumado com softwares fechados ou travados. Apesar de parecer que o seu iPhone é um sistema aberto, no qual você escolhe quais aplicativos quer instalar, que podem até mesmo ser fornecidos por terceiros à Apple, a realidade é que quem faz o controle prévio destes software é a maçã (que recentemente impediu que a Google oferecesse um software para o iPhone) e não são todas as ações de administrador que lhe são permitidas, a não ser que você realize o chamado jailbreak. Em sistemas verdadeiramente abertos o controle do sistema é do usuário, que só está limitado por seu interesse e habilidade. Isto não quer dizer que você precise ser um programador para aproveitar os benefícios de um sistema aberto, já que é possível o benefício indireto dos feitos trabalhados por usuários mais experientes com uma simples “googlada”.

O que mais empolga na notícia é que, diferente do que acontece com o Open Moko, o N900 tem o suporte de uma companhia de grande porte já bem estabelecida no mercado de portáteis. Fosse apenas grande, nada haveria de novo, já que a própria Google baseou seu sistema no Linux, mas no mercado de portáteis a Nokia tem uma penetração que nem se compara com a da iniciante Google. We are growing bigger and bigger…

[liberdade de programar]

Qua, 22 Jul 2009, 202 Andre Deixe um comentário

Recentemente um amigo próximo me perguntou o que era exatamente o trabalho de um programador. Curioso que em uma sociedade tão atravessada por softwares se saiba tão pouco sobre o que eles são. Os usuários conhecem dos softwares somente a interface, o que permite uma noção apenas parcial da realidade da coisa. Pensar sobre isso me fez perceber que a dificuldade em explicar o que é um software livre advém do fato de que as pessoas não sabem o que é um software. Como o software é pensado como um utilitário, um produto, falar em software livre soa o mesmo que grátis e perde-se totalmente o foco da questão.

Assim, o presente post se propõe a explicar o que é um software, bem como o que significa torná-lo livre.

O que é programar?

Programar é a arte de resolver problemas (o que a aproxima da engenharia), resolução feita por meio da concatenação de instruções. Quando, por exemplo, a chefe diz para o secretário:

“Sr. Albuquerque, estarei ocupada agora à tarde, portanto, se alguém me ligar, diga que eu estou em uma reunião e pergunte se quer deixar recado. Ah, a não ser que seja a Cleide, aí você pede pra ela me ligar no celular que eu quero falar com ela.”

Ela o está programando para reagir frente a uma ligação. Quando tratamos de computadores, contudo, a programação não se dá por meio de um idioma natural (como o português), mas por meio daquilo que chamamos de linguagem de programação, que nada mais é do que um idioma formal, com sintaxe rígida e semântica unívoca.

Se a Sra. Santos estivesse programando um computador em vez de um ser humano, suas instruções se assemelhariam com o que segue:

Se alguém ligar:

Perguntar quem é:

Se for Cleide:
Pedir para que ela ligue no celular da Sra. Santos.

Do contrário:
Dizer que Sra. Santos está em reunião.

Perguntar se querem deixar recado.

Se houver recado:
Anotar recado.

Agradecer a ligação e desligar."

Observe que a linguagem natural na verdade esconde um conjunto complexo de instruções. Com poucas orações direcionadas à reação frente a uma situação trivial da vida quotidiana, a Sra. Santos na verdade passou várias instruções condicionais aplicáveis a uma pluralidade de eventos. O código acima, todavia, é meramente exemplificativo da estrutura de um programa, tratássemos de um computador, seria necessário um maior rigor formal que somente é possível com uma linguagem artificial.

A questão mais imediata é: por que um computador não pode ser instruído em português? Por que a linguagem de programação não pode ser a língua portuguesa? Apesar de soar trivial, a resposta a esta pergunta é a chave para entender não somente a programação, mas também os computadores e, por via reflexa, os humanos.

Um computador não pode ser programado em linguagem natural porque ele não é capaz de entender, mas apenas de reagir. Um computador não passa de um pedaço de silício que reage aos estímulos elétricos que passam por ele de uma maneira determinística. Diz-se que os computadores entendem apenas a álgebra booleana dos números binários, mas mesmo isto é uma abstração. A álgebra booleana na verdade é a forma como nós humanos abstraímos e formalizamos os processos físicos que ocorrem quando aquele objeto é estimulado de diferentes formas.

Assim, no nível da máquina, programar significa fornecer à maquina instruções em dois diferentes estados – binárias (zeros e uns). Ao receber estas instruções, o computador as computa (do Houaiss: calcular, efetuar confronto, comparar, igualar, contar) e isso é tudo o que ele pode fazer, cálculos. Porém, como ficar decorando instruções no formato “00101011 10011101 …” é simplesmente um pesadelo para um ser humano, foram criadas as linguagens de programação, que nada mais são do que programas que agrupam estas instruções ininteligíveis em funções matemáticas (algoritmos) que são apelidadas com nomes próximos à linguagem natural humana, mais fáceis de memorizar. Essa tradução, contudo, não foi feita de imediato, mas é o resultado de uma lenta evolução ao longo dos muitos anos da história da computação.

O primeiro passo não exigiu um programa, mas foi apenas uma diferente forma de representar a mesma coisa. Em vez de pensar as instruções em números binários, que são muito fáceis de confundir, elas eram pensadas números  hexadecimais (em vez de dois algarismos – 0 e 1 -; dezesseis deles – 0-9 e A-F). Isso, contudo, ainda é muito longe do que um humano pode entender, de forma que diversas destas instruções foram agrupadas em mnemônicos para o que elas faziam. Assembly é a forma como esta linguagem mais básica foi denominada. Mas a assembly ainda permanecia atrelada a instruções muito básicas e é preciso conhecer intimamente a cpu para saber como programar nesta linguagem. Criaram-se então as linguagens chamadas de “alto nível”. O exemplo clássico é a linguagem C. As linguagens de alto nível distanciam-se da matemática e do conhecimento do computador e possibilitam instruções muito mais próximas à linguagem humana, parecidas com o pseudo-código acima.

Creio que já estamos próximos aos hieróglifos egípcios, então um exemplo para ilustrar o que é programar. Um programa extremamente básico em linguagem de alto nível seria um que apenas dissesse uma frase, por exemplo, “já estou entediado”.

Na linguagem python, de altíssimo nível, esse programa seria:

print "já estou entediado."

Em C, um pouco mais baixo nível:

#include <stdio.h>
int main()
{
printf("já estou entediado\n");
return 0;
}

Em assembly, baixo nível:

lea    0x4(%esp),%ecx
and    $0xfffffff0,%esp
pushl  -0x4(%ecx)
push   %ebp
mov    %esp,%ebp
push   %ecx
sub    $0x4,%esp
movl   $0x8048490,(%esp)
call   80482d4 <puts@plt>
mov    $0x0,%eax
add    $0x4,%esp
pop    %ecx
pop    %ebp
lea    -0x4(%ecx),%esp
ret

Em hexadecimal isto seria traduzido por:

8d 4c 24 04
83 e4 f0
ff 71 fc
55
89 e5
51
83 ec 04
c7 04 24 90 84 04 08
e8 13 ff ff ff
b8 00 00 00 00
83 c4 04
59
5d
8d 61 fc
c3
90

E em binários, que são as instruções que o computador de fato processaria:

10001101 01001100 00100100 00000100
10000011 11100100 11110000
11111111 01110001 11111100
01010101
10001001 11100101
01010001
10000011 11101100 00000100
11000111 00000100 00100100 10010000 10000100 00000100 00001000
11101000 00010011 1111111111 1111111111 1111111111
10111000 00000000 00000000 00000000 00000000
10000011 11000100 00000100
01011001
01011101
10001101 01100001 11111100
11000011
10010000

Na realidade, ninguém programa em binários ou em hexadecimal. A linguagem mais baixa que se usa ainda hoje é o código assembly, mas nem todo programador entende esta linguagem. Cada linguagem tem uma vantagem. A vantagem daquelas de alto nível é delegar ao computador a preocupação com a lógica e os processos básicos, permitindo que o programador se preocupe apenas com os resultados e diminuindo muito o tempo de estudo e a possibilidade de erros. As de baixo nível permitem códigos mais enxutos, capazes de rodar em máquinas com menor potencial (relógios, semáforos, celulares, tocadores de mp3, etc), permitindo, ainda, um maior controle sobre o que será executado.

O programador de linguagens de alto nível, em vez de se preocupar com álgebra e registradores, pensa em instruções do tipo “se x, então y“. Mas para que ele possa abstrair a lógica do computador é necessário que alguém antes dele tenha se preocupado com ela. Para que alguém possa escrever apenas print “já estou cansado.” e fazer o computador exibir na tela a frase desejada, é preciso que alguém antes dele tenha criado um programa que entende caracteres, que alguém tenha criado um programa que exibe caracteres, que alguém tenha criado um programa que interpreta “print” e traduz em um longo conjunto de instruções binárias (que é a única coisa que o computador entende).

O que é ser livre?

Como dito, programar é a arte de resolver problemas. A resolução de alguns problemas, contudo, é que permite que sejam propostos outros novos.

Um dia, exibir caracteres em uma dela foi um problema que teve de ser enfrentado e resolvido, questão que hoje nem mais se coloca. Um dia, fazer com que uma impressora se comunicasse com um computador e imprimisse documentos também foi um problema. Não tão distante assim, exibir gráficos em um monitor era um problema, o modo de interação com as máquinas era exclusivamente no modo texto. Fazer com que computadores se comunicassem já foi um problema. Tornar a programação mais acessível e menos propensa aos erros já foi um problema.

A resolução destes e de muitos outros problemas é que abre nossos horizontes para pensar outros tantos. Neste sentido, tornar um software livre significa tornar disponível e acessível a sua forma de resolver tais e quais problemas, significa expor a solução à crítica, significa permitir a cooperação, significa também a transparência do que um software faz quando você o executa. Na prática, o primeiro passo para essa liberdade é divulgar os códigos, em vez de transmitir apenas os arquivos binários auto-executáveis. Mas não basta apenas divulgá-los, é necessário garantir que aquele saber poderá ser utilizado para quaisquer fins. Muitas são as implicações de uma escolha entre um modelo proprietário e um modelo livre e seria inviável ou pobre tentar discorrer sobre todas em um único post.

Cabe, entretanto, uma ilustração. Programação é ciência e também é arte. Há um mote que diz: “code is poetry“. Por mais assombro que a idéia possa trazer ao humanista, há um ponto de convergência entre a poesia e a programação que se perfaz na dedicação à linguagem. Assim como uma idéia pode ser transmitida de diversas maneiras, mas o que distingue o poeta do falante é a forma como usa as palavras para colocá-la, um problema pode ser enfrentado de diversas formas e o que distingue o programador é a sutileza de sua solução.

Para aprender e entender poesia, os poetas lêem as obras de outros poetas, estudam seus poemas e rascunham os próprios. Não é uma arte que nasce pronta, mas que desenvolvem a partir das idéias que captam em outros autores e que moldam aos seus próprios anseios.

Os programadores, em um mundo de softwares proprietários, estão completamente abandonados em seu aprendizado. Para estudar programação dispõem apenas de manuais que explicam linguagens de programação, sintaxe e arquitetura de computadores. Nas faculdades de ciência da computação não se pode estudar as obras de grandes poetas, pois são secretas, pode-se somente estudar a cartilha.

Programação é arte e também é ciência. Hoje em dia ninguém mais precisa desenvolver o binômio de Newton, ninguém precisa fazer experimentos para inferir a relação entre a matéria e a energia (E=m.C²), ninguém precisa buscar encontrar uma relação entre os lados e ângulos de um triângulo. Este conjunto de conhecimentos já faz parte do estado da arte e os novos estudiosos podem a partir deles se debruçar sobre novos problemas ao mesmo tempo em que podem sobre eles se debruçar a fim de apontar-lhes as impropriedades.

Não é o que ocorre com a programação em um mundo de softwares proprietários. O conhecimento científico em matéria de software segue hoje um modelo empresarial fechado, onde grande parte do conhecimento encontra-se recluso nas mãos de poucos cujo interesse não é a crítica e o desenvolvimento, mas o controle e o poder.

O software livre, neste sentido, é uma mudança de paradigma ao mesmo tempo em que um retorno ao paradigma anterior. Falar em software livre significa negar o viés do produto acabado e encaixotado e abraçar o viés do conhecimento sempre mutante, sem fronteiras definidas, negar a centralização e a dependência e clamar empoderamento do indivíduo. Falar em software livre significa recursar a perpetuação de relações desiguais, negar a existência de uma distinção fundamental entre os que manipulam o saber e aqueles que dele apenas sentem os reflexos. Significa rejeitar uma visão polarizada de uma sociedade divida entre autores e leitores, desenvolvedores e usuários, produtores e consumidores, governantes e governados.

Todos os desenvolvedores de software são também usuários e todo usuário é em potencial um desenvolvedor. Pensar em termos de liberdade é reconhecer e enfatizar as potencialidades individuais, é convidar ao diálogo, é convidar à ação refletida, à transparência e à participação de cada um no diálogo cultural. Liberdade em software, conhecimento livre, é muito mais do que simplesmente não pagar pelo utilitário de processamento de textos para o seu trabalho escolar.

[marketing, o mal necessário]

Seg, 29 Jun 2009, 179 Andre Deixe um comentário

Quem usa o Linux sabe que o sistema está mais do que pronto para disputar o mercado de desktops com os sistemas proprietários. Seja com o Gnome ou com o KDE, com o Ubuntu, Fedora, OpenSUSE ou Debian, há muito já se foi aquele tempo em que o Linux era um sistema para quem tinha tempo, disposição e conhecimento técnico para usá-lo. Qual seria, então, o motivo para o lento progresso na adoção do software livre?

Diversos obstáculos podem ser apontados, como, por exemplo, o custo da migração, o preconceito, a impossibilidade de rodar alguns determinados softwares proprietários, o hábito, etc. Neste post quero focar em apenas um deles, que, cada vez mais, parece-me de importância central: o marketing.

A proposta do software livre contém elementos de contra-cultura e seus proponentes são, na maior parte, participantes de uma subcultura que pouco tem em comum com a cultura mais geral que permeia a sociedade capitalista globalizada. Frise-se: a comunidade do software livre não possui os mesmos valores (ao menos não em mesma ordem de prioridade) que o restante da sociedade. Isto implica em um problema fundamental na comunicação: como convencer um leigo em tecnologia ou com pouca preocupação em manter um posicionamento ético e político de que as liberdades de rodar, estudar, compartilhar e modificar softwares são de grande relevância? Mais do que isso, como fazer com que o movimento tenha alguma visibilidade em um mundo tão acostumado à informação mastigada, picotada, de no máximo 140 caracteres?

Considerando que somos nós que queremos subvertê-los à nossa ética, não contrário, parece evidente ser nossa a incumbência de buscar construir um diálogo em sua língua. Com isso quero implicar mais do que apenas mastigar termos técnicos como particionamento e montagem de hd, boot loader, sistema de arquivos, desktop manager e etc. Com isso quero implicar que devemos gerar empatia, devemos nos apresentar como semelhantes, devemos vestir uma máscara que nos torne agradáveis, familiares.

Tudo isso começa pelos nomes. GNU/Linux, por exemplo. Os mais conscientes da história do movimento sabem que Linux, a despeito de sua importância central no sistema, é apenas o nome do kernel, um os muitos softwares que fazem parte de um sistema operacional. Assim, chamá-lo de Linux é negar crédito a todo o restante, mais do que isto, é negar crédito àqueles que começaram a divulgar a necessidade de liberdade em matéria de software. GNU/Linux é sem dúvida uma nomenclatura muito mais adequada à realidade do sistema.

Isto, contudo, não implica que este deve ser o nome a ser adotado em quaisquer situações. Ao conversar com alguém que nunca ouviu falar de software livre, preocupar-se em dar ao sistema o seu nome correto, GNU/Linux, não agrega qualquer valor, sendo ainda uma péssima forma de apresentá-lo. Para o leigo GNU/Linux não quer dizer nada. Ele não sabe o que é Linux, não sabe o que é GNU, nunca ouviu falar de Richard Stallman, nem de Linus Torvalds, nem de GPL, e a palavra kernel não possui significado algum.

A dimensão disto talvez nos escape. Pense na sua tia ou no seu primo macho-alpha desmiolado. O que você acha que tem mais apelo, Mac ou GNU/Linux? O que é mais fácil de memorizar, XP ou GNewSense? Tente então lhes explicar que GNU quer dizer GNU’s not UNIX, que é um acrônimo recursivo. Explique o que é um acrônimo recursivo e que eles foram muito usados pelos hackers nos anos 70. Aí tente explicar o que é UNIX, ou você realmente acha que Bell Laboratories, MIT, C e UNIX são parte da cultura geral e estão de mãos dadas com a Madonna? Tente então explicar que, na verdade, não existe um sistema GNU/Linux, e logo que não é possível comprá-lo, de forma que eles devem procurar por distribuições GNU/Linux, mas que existem infinitas delas, aconselhando-os a começar com algo como o OpenSuSE e explicando porque algumas letras estão em maiúsculas no meio do nome. Explique então o que é uma distribuição.

Quando tive meu primeiro contato com o movimento eu me apaixonei e todos estes detalhes me encantavam, como sei que encantaram e ainda encantarão muitos outros. Mas devemos estar cientes de que somos e sempre seremos minoria.

Toda essa miríade de informações e nomes simplesmente não tem, nem nunca terá qualquer apelo para a grossa maior parte dos usuários. Pior do que isso, essa avalancha de informações só fará com que estes usuários encarem o sistema como algo extremamente complexo, “coisa de nerd”, desenvolvendo um receio, um preconceito contra ele.

Em minha opinião esta nossa postura denota somente falta de humildade, falta de disposição para entender o outro, falta de estratégia. Nós queremos convencer a sociedade da superioridade do modelo livre, mas de tão convictos que somos desta superioridade, queremos que a sociedade se curve aos nossos valores e queremos isto desde o primeiro contato. Somos, então, constantemente derrotados por aqueles que, ao invés de tentar mudar os valores da sociedade, manipulam as disposições e desejos humanos mais primitivos em seu favor. Depois de uma hora discorrendo sobre a importância ética da adoção do software livre, chore ao ver o seu primo comprar um iPhone pelo simples fato de que ele é “descolado”.

Branding, marketing.

Se queremos chamar a atenção temos que descer dos tamancos e jogar cartas com malícia, devemos nos tornar desejáveis, devemos parecer iguais; ao invés de confrontar devemos cooptar. Esta é a razão pela qual eu, apesar de ser um usuário Debian convicto, instalo Ubuntu quando me pedem. Instalo Ubuntu e não explico que o nome tem um significado em uma língua africana. Instalo Ubuntu e não explico que é software livre. Instalo Ubuntu e não explico que é uma distro Linux. Ubuntu é uma palavra simples, marketável. O Ubuntu tem um site bonito e trata os usuários como se fossem crianças. Instalo o Ubuntu, ajusto o Compiz e digo apenas: “não é legal?” É somente isso que vai interessar a maior parte dos usuários de desktop. Shinny.

Isto não quer dizer que nunca mencionarei a questão da liberdade. Quer dizer apenas que aquele não é o momento. A maior parte das pessoas é avessa a migrar para um novo sistema. Veja o caso do Vista. Muita gente ainda hoje ainda usa o XP e muita gente vai continuar usando. Para que o usuário decida reinstalar seu sistema operacional ele precisa sentir a necessidade de fazê-lo e ainda assim será um momento de insegurança e dúvida. O que ele precisa neste momento é sentir que o sistema que você está propondo é fácil de usar e que é mais legal do que o que ele vem usando. É triste, mas é uma realidade que não vai mudar tão cedo, nem será diferente porque assim desejamos.

Depois que este usuário já tiver migrado e já se sentir confortável com o novo sistema aí então é o momento da aula de história. Nesse ponto, a aula de história, ainda que entedie o aluno, não vai fazer ele reinstalar o Windows, porque ele já viu o suficiente para saber que o sistema que ele está usando é melhor, mais rápido, mais seguro, não trava, é mais bonito e faz tudo o que ele precisa. Nesse momento, a aula de ética, se não fizer com que ele se apaixone, ao menos não lhe trará um preconceito.