Freak, as in freakdom

Um blag sobre cultura, política, memes e… software livre!

Brincando com ImageMagick

Ontem recebi um e-mail com um link para um arquivo ZIP gigantesco contendo dezenas de arquivos JPEG. Cada arquivo era um scan de alta resolução de uma página dos originais do Estatuto e da Ata de Fundação do Garoa Hacker Clube. Meu objetivo era gerar um PDF a partir desses arquivos contendo uma imagem em cada página.

Consultando a documentação do convert, um frontend para o ImageMagick,  descobre-se facilmente como gerar um PDF:

$ ls -lh
total 12M
-rw-r–r– 1 rodrigo rodrigo 2.5M 2011-09-05 20:49 garoa 0.jpeg
-rw-r–r– 1 rodrigo rodrigo 2.6M 2011-09-05 20:50 garoa 1.jpeg
-rw-r–r– 1 rodrigo rodrigo 2.3M 2011-09-05 20:52 garoa 2.jpeg
-rw-r–r– 1 rodrigo rodrigo 1.8M 2011-09-05 20:53 garoa 3.jpeg
-rw-r–r– 1 rodrigo rodrigo 1.3M 2011-09-05 20:57 garoa 4.jpeg
-rw-r–r– 1 rodrigo rodrigo 1.5M 2011-09-05 20:56 garoa 5.jpeg
$ convert *.jpeg ghc_ata_fundacao_highres.pdf
$ ls -lh *.pdf
-rw-r–r– 1 rodrigo rodrigo 11M 2011-09-09 17:19 ghc_ata_fundacao_highres.pdf

No entanto, já que as imagens originais são grandes, o PDF também ficou enorme. Sendo assim, usei o mesmo convert para reduzir as imagens. Como havia várias imagens, pensei imediatamente em usar um for para não ficar repetindo comandos:

$ for i in *.jpeg; do mogrify -resize 30% $i; done

Como o leitor verá, esse comando não funcionou! Os arquivos tem um espaço no nome e o argumento é interpretado incorretamente na linha de comando pois o espaço não é “escaped“. Achei um workaround para isso usando a opção -exec do comando find. Além disso, usei o mogrify, que faz a mesma coisa que o convert mas sobrescreve o arquivo original:

$ find *.jpeg -exec mogrify -resize 42% {} \;
$ ls -lh
total 13M
-rw-r–r– 1 rodrigo rodrigo 252K 2011-09-09 17:20 garoa 0.jpeg
-rw-r–r– 1 rodrigo rodrigo 272K 2011-09-09 17:20 garoa 1.jpeg
-rw-r–r– 1 rodrigo rodrigo 213K 2011-09-09 17:20 garoa 2.jpeg
-rw-r–r– 1 rodrigo rodrigo 132K 2011-09-09 17:20 garoa 3.jpeg
-rw-r–r– 1 rodrigo rodrigo 107K 2011-09-09 17:20 garoa 4.jpeg
-rw-r–r– 1 rodrigo rodrigo 128K 2011-09-09 17:20 garoa 5.jpeg

E agora é só gerar o pdf com as imagens reduzidas:

$ convert *.jpeg ghc_ata_fundacao_lowres.pdf
$ ls -lh ghc_ata_fundacao_lowres.pdf
-rw-r–r– 1 rodrigo rodrigo 1.2M 2011-09-09 17:36 ghc_ata_fundacao_lowres.pdf

nenhum comentário

Escrito por Rodrigo R. Silva

setembro 9th, 2011 at 1:44 pm

Publicado em Sem categoria

Mozilla lança Firefox 5.0

Mozilla Firefox 5

A Mozilla Foundation, organização global sem fins lucrativos dedicada a tornar a web melhor, lançou hoje a nova versão do Mozilla Firefox para Windows, Mac, GNU/Linux e Android.

A nova versão do Firefox vem na trilha da grandiosa versão 4 do navegador, a qual teve mais de 200 milhões de downloads para Windows, Mac e GNU/Linux e milhões de downloads no Android Market.

A Mozilla recentemente alterou sua forma de trabalho para um ciclo rápido de desenvolvimento, que entrega melhoras precisas de recursos do Firefox, melhoras de performance, atualizações de segurança e melhoras de estabilidade mais rapidamente para os usuários.

A última versão do Firefox inclui mais de 1000 melhoras e aumentos de desempenho que facilitam a descoberta e o uso dos novos recursos do Mozilla Firefox. Essa versão inclui suporte para as mais modernas tecnologias web, o que torna a criação de complementos para o Firefox, aplicações web e
websites mais fácil e mais divertida para desenvolvedores web.

O Firefox 5 para Android inclui o recurso de privacidade Não me rastreie, tornando assim o Firefox o primeiro browser a suportar o recurso em várias plataformas. A Mozilla criou o “Não me rastreie” para dar aos usuários mais controle sobre como a sua maneira de navegar na internet é utilizada na web. Esse recurso, que permite aos usuários informar aos sites que eles desejam ser excluídos do rastreamento de comportamento online é agora encontrado mais
facilmente nas Preferências do Firefox.

O Mozilla Firefox oferece aos usuários controle completo sobre a aparência e funciomaneto do seu navegador através de uma galeria de centenas de milhares de complementos. Cerca de 85% dos usuários do Firefox 4 possuem um complemento instalado para customizar a aparência, os recursos e o
funcionamento do seu browser.

A Mozilla possui um enorme conjunto de recursos que facilitam o desenvolvimento de complementos atrativos para o Firefox usando HTML, JavaScript e CSS.

O novo SDK de desenvolvimento de complementos para o Firefox no Windows, Mac e GNU/Linux permite a criação local de complementos, enquanto o Firefox Add-on Builder Beta provê um ambiente web para criação. Os desenvolvedores podem criar complementos do Firefox para todas as plataformas. Eles serão instalados e atualizados sem necessidade de reinicialização do browser ou interrupção da navegação.

O Firefox para Windows, Mac e GNU/Linux agora suporta novos padrões de animações CSS, que permitem à desenvolvedores criar mais aplicações web maravilhosas! O Mozilla Hacks possui um tutorial sobre animações CSS e um post completo mostrando o que os desenvolvedores podem fazer no Firefox.

Para baixar a última versão do Firefox para Windows, Mac ou GNU/Linux clique em “verificar atualizações” no menu “Sobre o Firefox” ou baixe o Firefox Aurora e Beta.

Visite esta página para baixar a última versão do Firefox para seu dispositivo Android. Usuários que já possuem o Firefox para Android instalado receberão um aviso sobre a nova versão.

Para maiores informações:

FAQ
Firefox para Windows, Mac e GNU/Linux
Firefox para Android

Release Notes
Firefox para Windows, Mac e GNU/Linux
Firefox para Android


Fonte:
Mozilla Foundation
Tradução: Marcelo Araldi, modificada por Rodrigo R. Silva

nenhum comentário

Escrito por Rodrigo R. Silva

junho 21st, 2011 at 5:11 pm

Publicado em Software Livre

Tagged with ,

Qual é o melhor CAD livre?

Hoje recebi um e-mail do Hilton Fernandes, hacker e colega da Poli, perguntando sobre a melhor opção em software livre para CAD. A verdade é que não há um, mas alguns CADs livres que se adequam a diferentes tipos de projetos. É claro que nenhum CAD livre cobre todas as funcionalidades de programas proprietários como o AutoCAD, já que são todos relativamente recentes, mas com certeza já são robustos e completos o bastante para as necessidades de grande parte dos usuários.

Freecad 0.10

Modelagem 3D no Freecad 0.10

O QCAD, licenciado sob a GNU GPLv2, é o mais conhecido – talvez por já estar há bastante tempo no repositório das principais distribuições, talvez pelo uso nativo de DXF, bem compatível com AutoCAD -, mas é adequado apenas para projetos simples de arquitetura e engenharia civil, já que é limitado a desenhos 2D, e também tem funções básicas de design de circuitos elétricos. Mas o maior problema é que a sua versão mais atual é sempre proprietária (QCAD Pro) e a versão livre (Community) é uma versão ultrapassada. O QCAD Community mais recente é de 2005 e, pelo que ando ouvindo, a Ribbonsoft, empresa responsável por todo o desenvolvimento, não vai mais lançar a versão Community. Além disso, no Community eles simplesmente removem ferramentas como polyline.

A falta de uma comunidade – pois a Ribbonsoft sempre fez o desenvolvimeto internamente – é outro grande problema do QCAD. Até pouco tempo ninguém se aventurara a fazer um fork porque (esperava-se que) logo a versão Pro seria liberada como Community assim que houvesse um novo lançamento. Com a cada vez menor frequência de lançamento e os rumores de que não haveria mais uma versão livre, surgiu o Caduntu, que atualizou para o Qt4 e incorporou patches de outros derivados já mortos. O Caduntu é multiplataforma: funciona em GNU/Linux, Windows e Mac.

O FreeCAD também é interessante, e está recebendo novos recursos muito rapidamente. Ótimo para trabalhar com 3D – o que não dá pra fazer com o QCad e derivados. No entanto, o Yorik van Havre (que é belga mas mora no Brasil e já apareceu em reuniões do PoliGNU) tem feito várias melhorias ao módulo 2D. Talvez não seja o mais utilizável ainda, mas é o mais promissor. Assim como o Caduntu, o FreeCAD também é multiplataforma. Entre outras qualidades, ressalto a facilidade de criar extensões em Python e de automatizar tarefas com macros.

Sonda espacial Cassini renderizada no BRL-CAD

O BRL-CAD é muito avançado para projeto mecânico 3D (tem até cálculos de balística), e é desenvolvido pelo exército americano há 25 anos, mas a interface gráfica praticamente inexiste na versão estável, mas está em desenvolvimento.

O suporte a importação de arquivos no formato DWG, muito popular por ser o padão do AutoCAD, ainda é uma deficiência em todos eles. Identificamos isso há mais de um ano nas pesquisas que o PoliGNU realizou no Projeto CAD Livre, em parceria com o Escritório Piloto, e colocamos a mão na massa. Esperamos que em breve a LibreDWG esteja estável* e pronta para ser incorporada nesses softwares.

*Já é possível importar arquivos DWG no GRASS, um software livre de georreferenciamento. Farei um post sobre isso em breve.

As imagens são de propriedade de seus respectivos autores.

1 comentário

Escrito por Rodrigo R. Silva

novembro 17th, 2010 at 1:10 am

Publicado em CAD,Engenharia

Tagged with , , , , , ,

Software Livre, Open Source e Open Core

O anúncio de lançamento da última versão do Linux-libre, uma versão limpa – isto é, livre de software proprietário na forma de blobs, pequenos trechos de código binário, geralmente proprietário – do kernel Linux, alerta mais uma vez para o perigo que esses pequenos trechos de código não-livre apresentam à liberdade do usuário.

No entanto, o que me chamou a atenção nesse anúncio é a referência a um post (leia!) do Simon Phipps dizendo, resumidamente, que Open Core não é bom para a liberdade do usuário, algo que eu não esperaria de alguém da OSI (Open Source Initiative).

Seria uma mudança de posição dentro do Open Source? Afinal, muitos defensores do Open Source assumem (ou ao menos assumiram) que o software proprietário poderia conviver com o software livre. Não seria o Open Core a materialização dessa suposta convivência?

Esse é um dos principais motivos que me levam a apoiar o Software Livre em detrimento do Open Source. É inegável que diversos pontos do discurso Open Source fizeram a diferença na adoção do software livre nas empresas, mas deixar a liberdade de lado (ou admitir que ela possa ser deixada de lado) foi um erro histórico.

Mudança institucional ou não, vejo com bons olhos uma reaproximação do Open Source aos princípios que fundaram o movimento Software Livre. Nada mais lógico, afinal as vantagens práticas defendidas pelo Open Source derivam diretamente das 4 liberdades fundamentais pregadas pelo Software Livre.

Este texto pode ser redistribuído em sua forma integral, sem modificação, conforme os termos da Creative Commons Atribuição-Vedada a Criação de Obras Derivadas 2.5 Brasil License.

nenhum comentário

Escrito por Rodrigo R. Silva

novembro 9th, 2010 at 4:41 am

Free Software in Albania: a kickoff

Last week, Free Software in Balkans 2010, the first major conference on Free Software and Open Source in Albania took place at the University of Vlora. Vlora is a relatively small city in the south of Albania, close to the Greek border, that hopefully will become the center of FOSS spread and adoption in the country.

Rob Savoye on GNU Autotools

Rob Savoye on GNU Autotools

At a first glance on the program, most of the talks seemed to focus on technical aspects only, but the informal chats and conversations between talks and during social occasions regarded strategic issues, government support and economical advantages on the adoption of free software – and lots of early hacker era stories by Peter Salus and Rob Savoye.

Albania is a very poor country, if compared to Western Europe, but is growing fast. Although, government agencies and international organizations, not to mention the majority of the population, rely on proprietary software, often imposed by nasty contracts or lack of information and technical expertise. It is obvious that the broad adoption of free software would bring employment for the population and local development.

A cultural change is still necessary, but the interest of the small audience keeps our hopes alive. And the general outcome of the conference is that Vlora should hold another conference next year, and Albanian government should support FOSS adoption.

BTW, my talk on LibreDWG, which went even further on free CAD’s and open CAD formats, raised many questions – I want to believe it wasn’t boring. The slides are available here.

For those in the Balkans who missed FREESB, this weekend basically the same crew plus others will speak at SFK10.

4 comentários

Escrito por Rodrigo R. Silva

setembro 23rd, 2010 at 3:48 pm

Publicado em Software Livre

Tagged with , , ,

GNU LibreDWG: libertando arquivos CAD

Este post é uma adaptação de uma matéria escrita para a Revistra Espírito Livre, a ser publicada em breve.

por
Rodrigo “pitanga” Rodrigues da Silva (pitanga@members.fsf.org) *
Felipe “juca” Corrêa da Silva Sanches (juca@members.fsf.org) *

Suporte ao formato de arquivos DWG ainda é uma das principais funcionalidades ausentes nos emergentes softwares livres para CAD, arquitetura, engenharia e georreferenciamento. Nessa palestra, vamos apresentar os problemas relacionados ao formato DWG, as razões que dificultavam sua resolução pela comunidade do software livre e o processo que nos permitiu identificá-lo como recurso prioritário. Finalmente, vamos descrever o processo de desenvolvimento e a evolução da LibreDWG, uma implementação livre desse formato, passando de um projeto praticamente inativo a um pacote do Projeto GNU ativamente mantido e desenvolvido por programadores de várias partes do mundo. Também explicaremos como a existência de um grupo de estudos de software livre na universidade proporcionou condições favoráveis ao sucesso do projeto.

Introdução

Todo engenheiro ou arquiteto usuário de software livre provavelmente já se deparou com a falta de opções de softwares livres para CAD ou, ainda, do estágio prematuro da maioria das opções existentes. De acordo com a Wikipédia, “Computer-Aided Design (CAD) (em inglês), ou desenho assistido por computador, é o nome genérico de sistemas computacionais utilizados pela engenharia, geologia, arquitetura, e design para facilitar o projeto e desenho técnicos. No caso do design, este pode estar ligado especificamente a todas as suas vertentes (produtos como vestuário, eletroeletrônicos, automobilísticos, etc.), de modo que os jargões de cada especialidade são incorporados na interface de cada programa.”

Sabendo dessa deficiência e no intuito de evitar que um escritório de engenharia e extensão universitária recém convertido ao software livre voltasse a instalar softwares proprietários procurando suprir suas necessidades de CAD, foi iniciado um projeto de pesquisa para mapear as principais soluções livres existentes nessa área, identificar as deficiências que impedem que usuários CAD migrem para elas e, finalmente, atuar ativamente para que essas deficiências deixem de existir, seja apenas relatando bugs e feature requests junto às comunidades ou por meio da implementação de novos recursos.

A busca

Nossa pesquisa apresentou um resultado muito claro: de todas as ferramentas analisadas, cerca de duas dezenas, em variados níveis de maturidade, nenhuma suportava o formato DWG. DWG é um formato de arquivos criado na década de 70 usado por padrão para o armazenamento de dados do AutoCAD, a principal suíte CAD (proprietária) do mercado. Devido à popularidade do AutoCAD, a grande maioria dos arquivos CAD são distribuídos e compartilhados nesse formato e, consequentemente, inacessíveis para usuários de software livre.

Considerando o lock-in[0] proporcionado pelo DWG como uma barreira à sua entrada no mercado CAD, alguns concorrentes da Autodesk, com o intuito de viabilizar a migração de usuários para suas próprias ferramentas – também elas proprietárias -, formaram um consórcio chamado Open Design Alliance[1], que teve entre seus objetivos realizar um processo de engenharia reversa do formato de arquivos DWG. Este processo culminou com a publicação de uma especificação não-oficial do formato DWG[2]. Trata-se de um documento de cerca de 180 páginas que contém os detalhes técnicos sobre como a informação de um projeto, composto por desenhos, partes, vistas, definições, etc, é armazenada dentro de um arquivo DWG. Além da especificação, publicada em seu website, a ODA desenvolveu uma biblioteca chamada DWGDirect que implementa o formato. No entanto, a biblioteca não é livre. Apesar de inicialmente distribuída gratuitamente – o que, por sua vez, impeliu vários desenvolvedores de programas CAD livres a utilizarem-na em seus projetos – hoje ela está disponível apenas para membros do consórcio, cujo grau de associação mínimo (usuário final) demanda uma taxa anual de US$1500,00. Não é apropriado aqui condenar o fato de a biblioteca ser paga, afinal, software livre não quer dizer necessariamente software gratuito; mas sim alertar sobre as possíveis armadilhas do software proprietário e gratuito, em geral conhecido como freeware.

Resultados

Depois de algum tempo procurando por bibliotecas livres para manipulação de arquivos no formato DWG, chegamos à LibDWG[3], uma biblioteca coincidentemente escrita por um brasileiro e que já suportava cerca de 20% da especificação OpenDWG. Mas essa biblioteca possuía uma característica muito peculiar, que, para a maioria dos possíveis colaboradores, seria um entrave: toda a documentação, nomes de variáveis e comentários do código foram escritos em Esperanto – apenas as palavras reservadas do C em inglês. Sem julgar os méritos do Esperanto, consideramos que a dificuldade em aprender uma nova língua antes de começar a programar seria uma barreira à evolução de um software livre, e, usufruindo dos direitos proporcionados pela licença GNU GPLv3[4], foi criado um fork do projeto que seria progressivamente traduzido para o inglês, a lingua franca no meio hacker.

Após algumas semanas de pesquisas sobre a língua original e de tradução, praticamente todo o código já estava traduzido para o inglês e devidamente publicado. A partir daí, passou-se à impelementação dos pontos faltantes da especificação, como os objetos gráficos do DWG, e suporte a outras versões além da R2000, até então a única suportada – a cada duas ou três versões do AutoCAD a Autodesk cria uma nova versão do formato, potencialmente incompatível com e substancialmente diferente, nos aspectos internos, das versões anteriores. Nascia, assim, a LibreDWG[5].

LibreDWG e o Projeto GNU

A Free Software Foundation mantém uma lista de projetos considerados prioritários para o movimento do software livre[6]. Tendo já trabalhado por alguns dias na LibreDWG, descobrimos que um destes projetos prioritários era a implementação de bibliotecas livres que substituíssem a biblioteca proprietária da Open Design Alliance. A LibDWG, assim como outras iniciativas que também pretendiam implementar o formato mas ainda não o haviam feito, como a VectorSection[7], era citada entre possíveis projetos. Como já tínhamos alguma proximidade com a Free Software Foundation e o Projeto GNU, resolvemos atender à solicitação feita pelo próprio Richard Stallman, com quem havíamos conversado em uma recente passagem pelo Brasil, e inscrever a LibreDWG como candidata a se tornar um GNU package. Um package é um subprojeto relativamente independente que implementa alguma funcionalidade específica do sistema GNU. Devido à relevância do projeto e ao fato de ele estar na lista de projetos prioritários da FSF, e após atendermos a algumas sugestões feitas pelo avaliador designado para nossa proposta, o projeto foi aprovado. Um detalhe curioso é que uma das condições para ser aprovado como pacote GNU é que o código seja escrito em inglês.

Como contribuir

Para contribuir com a LibreDWG não é necessário ser um especialista em programação. O código é todo escrito na linguagem C, além de uma pseudolinguagem específica ao formato DWG criada com o auxílio de macros – nada de outro mundo, como o código do dropdown da GTK! Mesmo quem não é programador pode contribuir escrevendo documentação, testando a LibreDWG em seus próprios arquivos (temos um conversor experimental de DWG para SVG, o formato de desenhos vetoriais do W3C) ou ainda fornecendo arquivos DWG para nossa suíte de testes. Em nosso wiki[8] há um guia passo a passo sobre como instalar e utilizar a LibreDWG, além dos principais canais de contato. Estamos sempre abertos a sugestões e a auxiliar contribuidores e possíveis usuários interessados.

Estado atual e perspectivas

No momento, a LibreDWG conta com 6 contribuidores mais ou menos constantes, todos voluntários espalhados pelas mais diversas partes do mundo. Já cobrimos cerca de 99% da especificação OpenDWG para as versões R13, R14, R2000 e R2004. O suporte à escrita deve ser desenvolvido nos próximos meses – com financiamento pelo programa Google Summer of Code -, assim como bindings para que a biblioteca possa ser utilizada por programas escritos em outras linguagens de programação, como Python e Perl. O projeto está próximo do lançamento de uma versão alpha, e já está em vista a sua inclusão no repositório do Debian e seu uso em alguns softwares livres, como o GRASS[10].

Conclusão

Apesar de o desenvolvimento em si ter sido feito de maneira independente, todo o processo que levou à criação da LibreDWG ocorreu dentro do PoliGNU – Grupo de Estudos de Software Livre da Poli/USP[9]. Acreditamos que a atividade em grupo tenha sido essencial para o levantamento das deficiências dos CADs livres e à identificação de um item prioritário – no caso, o suporte ao formato DWG. Seria interessante replicar o processo de fomento a grupos de estudos de software livre por meio do desenvolvimento de outros itens estratégicos como os listados pela FSF.

[0] http://pt.wikipedia.org/wiki/Aprisionamento_tecnológico
[1] http://opendesign.com
[2] http://opendesign.com/files/guestdownloads/DwgFormatSpec13-2007.rtf
[3] http://libdwg.sourceforge.net
[4] http://www.gnu.org/licenses/gpl.html
[5] http://gnu.org/software/libredwg
[6] http://www.fsf.org/campaigns/priority-projects/
[7] http://vectorsection.org/
[8] http://groups.fsf.org/wiki/LibreDWG
[9] http://polignu.org
[10] http://grass.osgeo.org

* membros fundadores do Grupo de Estudos de Software Livre da Poli/USP (PoliGNU) e mantenedores da biblioteca livre GNU LibreDWG.

© 2010 Rodrigo Rodrigues da Silva e Felipe Corrêa da Silva Sanches
Este texto é disponibilizado nos termos da licença Creative Commons Atribuição Compartilhamento pela mesma licença, disponível em http://creativecommons.org/licenses/by-sa/3.0/br

nenhum comentário

Escrito por Rodrigo R. Silva

maio 8th, 2010 at 11:58 pm

Publicado em Software Livre

Maldito ć

Não é a primeira vez que me deparo com um GNOME com língua padrão inglês em que, após configurar o teclado como US International, a combinação de teclas ‘ (acento agudo) e c gera um ć. Isso ocorre porque o GNOME (em inglês) não sabe em qual língua seu suposto usuário irá escrever. Por decisão de alguém que com certeza não fala português, a opção padrão ficou ć.

Para habilitar o ç, basta dizer para o GNOME que o inglês deve estar no grupo das línguas que o utilizam como padrão. No gNewSense (a distribuição 100% software livre que utilizo em meu lemote), basta editar o arquivo /usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules (ou algo que o valha, a versão da GTK pode mudar em seu sistema) com qualquer editor de texto, como o gedit. Nesse arquivo, no segundo bloco de configurações (ou outro, basta atentar para o im-cedilla.so), adicione :en ao final da linha, dentro das aspas:

“/usr/lib/gtk-2.0/2.10.0/immodules/im-cedilla.so”
“cedilla” “Cedilla” “gtk20″ “/usr/share/locale” “az:ca:co:fr:gv:oc:pt:sq:tr:wa:en

Encerre sua sessão e logue novamente. Divirta-se com seu ç. Ah, e se alguém souber como fazer o ć depois disso por favor me avise, pois deu o maior trabalho fazer esse post… er… acho que não vou mais precisar do ć!

Obs: não testei, mas isso deve funcionar em qualquer outra distro, como Ubuntu e Debian. Também não descobri como fazer isso na interface gráfica (mudar a língua padrão do sistema com certeza resolve, mas queria ficar com a interface em inglês).

nenhum comentário

Escrito por Rodrigo R. Silva

abril 30th, 2010 at 7:36 pm

Palestra SoC 2010

Ontem o PoliGNU realizou uma palestra sobre o Google Summer of Code 2010 na Poli. O evento foi um sucesso, com cerca de 60 presentes, com direito a continuar com uma oficina de desenvolvimento de software livre no EP. Segue um link para a apresentação de slides, com algumas informações úteis:

GSoC2010-Presentation

Para registro, fica o cartaz que fiz para o evento:

cartaz_soc2010

nenhum comentário

Escrito por Rodrigo R. Silva

março 12th, 2010 at 12:55 pm

Publicado em Sem categoria

Compilando o OpenOffice

Hoje à noite, em um momento iluminado (depois de ler um e-mail do Juca entitulado “algumas coisas demandam coragem”, sugerindo o que se segue), pensei: bom, se eu já uso as versões de desenvolvimento do Firefox e do Thunderbird cotidianamente, por que não o OpenOffice? Afinal, qual a graça de usar um OpenOffice 3.1 estável?!

Há cerca de dois anos eu tentei completar esse rito de passagem: na época ainda usavam CVS. Um grande problema de CVS em tutoriais é que sempre colocam umas linhas de comando do tipo:

cvs -d :pserver:anoncvs@anoncvs.services.openoffice.org:/cvs checkout [modulename]

e nunca nos dizem o que colocar em [modulename], o que acaba por custar ao benevolente hacker mais duas horas varrendo o repositório em busca do módulo correto. Além disso, era necessário baixar e compilar separadamente todo o build system do open office.

A boa notícia é que a cada major version o OpenOffice.org tem refeito o seu build system, para melhor. Além disso, descobri que nesses dois anos eles passaram o repositório de código pelo svn e finalmente adotaram o mercurial em outubro de 2009.

Fazer um checkout de todo o repositório mercurial seria muito demorado, e por isso eles disponibilizam um bundle diário do repositório, isto é, um arquivo com todo o repositório empacotado.

Hora de se sujar: baixe o bundle , “unbundle” e “update”:

sudo apt-get install mercurial (caso não tenha o mercurial instalado)
mkdir devel && cd devel (ou como vc quiser chamar o seu parque de diversões hacker, caso ainda não o tenha)
wget http://hg.services.openoffice.org/bundle/DEV300.hg
mkdir openoffice
cd openoffice
hg init
hg unbundle ../DEV300.hg
hg pull http://hg.services.openoffice.org/DEV300
hg update

Além do tempo de baixar o bundle, que tem quase 1GB, o resto do processo demora cerca de 30 minutos.

De agora em diante, você é livre para compilar como quiser, com os itens opcionais que quiser (ou não). Vou apenas reproduzir o que eu fiz para executar um full build padrão, já que os tutoriais oficiais nunca são suficientes. Tudo isso foi executado em um Ubuntu GNU/Linux 9.04 (jaunty) 64bits, e pode mudar ligeiramente de distribuição para distribuição. Caso você use uma distribuição que não seja derivada do Debian (isto é, sem apt), use o gerenciador de pacotes padrão da sua distribuição. Os pacotes devem ter nomes iguais ou parecidos.

Dependências

No tutorial disponível no wiki eles sugerem algumas dependências:

  • glibc:
    for OOo<=3.1: 2.2.x or higher for OOo>3.1: 2.3.2 or higher
  • C/C++ Compiler:
    gcc >= 3.3
    gcc 4.2.3 is the current reference compiler
  • The X11 development libraries and header files
  • PAM including the development headers
  • bash
  • gtk2 and libtiff including the development headers

Se você não estiver usando um Debian Sarge da vida, ignore e prossiga. Ah, caso você não tenha o gcc instalado, 1. você não devia estar aqui (bazzinga!) 2. já que está aqui, rode um sudo apt-get install build-essential e seus problemas acabaram.

Isso é uma mão na roda para instalar a maioria das (infinitas) dependências:

sudo apt-get build-dep openoffice.org

Como de praxe, há coisas novas em relação à versão estável que obviamente o build-dep não pegou:

sudo apt-get install mingw32 libgraphite3 libgraphite-dev

De volta ao seu diretório openoffice:

./configure --with-use-shell=bash --with-system-libs --without-system-jars --without-system-icu --without-system-agg --without-system-lpsolve --without-system-mspack --disable-mozilla --with-mingwin=/usr/bin/i586-mingw32msvc-g++

Isso diz aos scripts de compilação para utilizarem o maior número possível de libs do sistema e evitar incompatibilidades. O palavrão /usr/bin/i586-mingw32msvc-g++ é para o cross-compilador mingw32, necessário para cross-compilar algo que não sei o que é. Ao final, veja se não ocorreram muitos warnings e se aparece a seguinte mensagem:

Configure completed
You may now run ./bootstrap in [pasta onde estão os sources]

Agora, com as variáveis de sistema configuradas, precisamos gerar os scripts de compilação (Makefiles):

./bootstrap
source LinuxX86-64Env.Set.sh

(ou source LinuxX86Env.Set.sh se seu processador for 32 bits)

Agora, aos finalmentes

Tendo configurado as variáveis de ambiente e gerado os build scripts, vamos à compilação:
time make

# vá tomar um chá que vai demorar (eu fui!). O time antes do make vai marcar o tempo gasto na compilação.

Depois do chá

Se tudo correr bem, depois do seu chá e mais algumas horas você chegará em algo assim:

***********************************************************
Successful packaging process!
***********************************************************
... creating log file log_DEV300_en-US.log
Fri Feb 5 12:30:15 2010 (00:07 min.)
real 357m1.283s
user 274m55.902s
sys 42m31.595s
rodrigo@snowball2:~/devel/openoffice$

Sim, foram 6 horas mesmo. Isso num Intel Core2 Duo T7250 2.00GHz com 4M de cache, mas utilizando apenas um núcleo. Coloque aí nos comentários os seus resultados para compararmos.

Caso você tenha um processador com dois ou mais núcleos, é possível fazer um build paralelo, que teoricamente iria mais rápido. Eu estava fazendo outras coisas no computador, então me contentei com um único core compilando o bichinho. No link ao final da página há instruções sobre como fazer isso, entre outros hacks.

Como executamos um full build, o processo gerou pacotes prontos para instalação. Os pacotes para GNU/Linux 64bit ficam em ~/devel/openoffice/instsetoo_native/unxlngx6.pro/OpenOffice/deb/install/ (para 32bits é unxlngi6.pro ou algo que o valha). Na pasta en-US_download há um tar.gz que pode ser distribuído. A pasta en-US possui o mesmo conteúdo, porém não compactado.

Instalação

Como executamos um build padrão, o configure gerou os pacotes nativos da distribuição: .deb. Caso você queira instalar o OO que compilou (óbvio que quer!) será necessário remover o OpenOffice que vem com a distribuição (se souber como gerar o build desempacotado e evitar isso, por favor faça um comentário).

sudo apt-get remove openoffice.org-common
(Caso você não remova o open office atual, pode haver conflito de pacotes. Remova!)

cd ~/devel/openoffice/instsetoo_native/unxlngx6.pro/OpenOffice/deb/install/en-US/DEBS
sudo dpkg -i *.deb (pacotes do OO.org)
cd destop-integration
sudo dpkg -i *.deb (ícones no menu do KDE/GNOME)

Lembre-se de autalizar o código (hg pull && hg update) e recompilar (make) de tempos em tempos. A linha de desenvolvimento está em constante… desenvolvimento (!), e se sua intenção vai além de fazer uma graça é importante estar com o código em dia. Vale lembrar que, a princípio, os rebuilds devem demorar muito menos, pois apenas os arquivos modificados (e os dependentes deles) são recompilados. Veja o link abaixo para maiores informações.

Agora, se suas intenções são realmente corajosas e vão além de testar e reportar bugs, entre na lista de e-mails dev@openoffice.org, dê uma olhada no bugtracker e na página de TODO’s. O wiki também é um ótimo ponto de partida.

happy hacking!

Referência:
http://wiki.services.openoffice.org/wiki/Documentation/Building_Guide/Building_on_Linux

© 2010 Rodrigo Rodrigues da Silva. Este texto pode ser compartilhado sob os termos da licença Creative Commons By-Sa

nenhum comentário

Escrito por Rodrigo R. Silva

fevereiro 5th, 2010 at 7:24 am

Da prateleira ao público

Este é um artigo que escrevi em agosto de 2007, e foi publicado em meu defunto blog no Stoa e posteriormente no jornal O Politécnico. Reproduzo-o integralmente abaixo. Pode ser que ele não represente exatamente minhas opiniões atuais, mas a essência é a mesma.

A difusão da cultura e do conhecimento em nossa sociedade baseia-se, desde a eclosão da Revolução Industrial, em uma estrutura top-down, isto é, hierarquizada e fechada, proprietária. Somos seres passivos em frente a um tubo midiático de mão única. Consumimos os produtos culturais assim como consumimos uma lata de cerveja: vamos ao supermercado, escolhemos uma cerveja dentre diversas na prateleira, apertamos alguns botões e pagamos. Vamos ao canal pay-per-view, escolhemos o programa, apertamos alguns botões e pagamos – e sem sair de casa!

No entanto, o recente advento das mídias digitais e dos meios de comunicação de banda larga trouxe novas perspectivas à produção cultural e sua distribuição. O poder democratizante da Internet coloca nas mãos de (ainda poucos) cidadãos comuns ferramentas de produção, colaboração, distribuição, ensino e aprendizagem. O acesso a essas ferramentas abre caminho para novas formas de interação entre o artista e o espectador que extrapolam a relação produtor/consumidor desenvolvida ao longo do capitalismo, que chega ao seu ápice no início deste milênio.

Esta mesma visão pode ser aplicada à produção de conhecimento científico. O mercado de royalties e patentes limita o acesso ao conhecimento com base em leis que, originalmente, foram criadas para incentivar seu desenvolvimento e proliferação. Hoje, o acesso ao conhecimento está diretamente relacionado ao poder de compra, assim como a cerveja e a cultura. No entanto, a cerveja é um objeto que necessita de um processo industrial para se “reproduzir”. A cultura e o conhecimento, por sua vez, não são bens materiais e, excetuando-se eventuais custos de mídia, podem ser disseminados sem qualquer ônus.

As universidades públicas, instituições que deveriam promover a livre difusão do conhecimento nelas produzido para a sociedade, escondem-no através de aparatos que fazem uso questionável dessas leis, criando barreiras econômicas e enviesando a pesquisa em nome do lucro pretendido por quem as financia. Desse modo, assim como na cultura, existe uma promíscua relação de produtor/consumidor entre a universidade e a indústria.

A sociedade cobra da universidade respostas a seus problemas, enquanto esta rende-se a quem pode pagar mais. As indústrias fonográfica e cinematográfica insistem em um modelo de distribuição falido. Enquanto as práticas culturais da indústria caminham na contramão do desenvolvimento e da democratização do conhecimento, as perspectivas trazidas pela Internet e pelos meios digitais apontam para a possibilidade de novas formas de propriedade intelectual. Cabe à universidade cumprir seu papel público de discutir e promover esses novos modelos.

Este texto pode ser redistribuído sob os termos da licença cc-by-nd.

2 comentários

Escrito por Rodrigo R. Silva

janeiro 13th, 2010 at 6:06 pm

Publicado em Cultura,Política

Tagged with