Freak, as in freakdom

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

GNU LibreDWG: libertando arquivos CAD

without comments

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

Written by Rodrigo R. Silva

maio 8th, 2010 at 11:58 pm

Posted in Software Livre