UNIVERSIDADE FEDERAL DE LAVRAS WEBINTEGRATOR: ESTUDO DE CASO DA ABERTURA DO CÓDIGO FONTE DE UM PRODUTO COMERCIAL LUIZ AUGUSTO EVANGELISTA RUIZ LAVRAS MINAS GERAIS – BRASIL 2008 LUIZ AUGUSTO EVANGELISTA RUIZ WEBINTEGRATOR: ESTUDO DE CASO DA ABERTURA DO CÓDIGO FONTE DE UM PRODUTO COMERCIAL Monografia apresentada a Universidade Federal de Lavras, como parte das exigências do curso de Pós-Graduação Lato Sensu “Produção de Software com Ênfase em Software Livre”, para a obtenção do título de Especialização. Orientador Prof. Cristiano Lehrer LAVRAS MINAS GERAIS – BRASIL 2008 LUIZ AUGUSTO EVANGELISTA RUIZ WEBINTEGRATOR: ESTUDO DE CASO DA ABERTURA DO CÓDIGO FONTE DE UM PRODUTO COMERCIAL Monografia apresentada a Universidade Federal de Lavras, como parte das exigências do curso de Pós-Graduação Lato Sensu “Produção de Software com Ênfase em Software Livre”, para a obtenção do título de Especialização. Aprovada em ____ de ________________ de _______. Prof. ________________________________________ Prof. ________________________________________ _____________________________________ Orientador: Prof. Cristiano Lehrer LAVRAS MINAS GERAIS - BRASIL AGRADECIMENTOS Ao Deus dos nossos corações, que nos inspira constantemente na busca do conhecimento. Aos meus pais, José Ruiz e Elza Evangelista, que com o exemplo me ensinaram a ser o que sou. À ITX Tecnologia da Informação Ltda., especificamente aos diretores Jorge Santana de Oliveira e Ricardo Masstalerz, pelo apoio sempre constante às minhas iniciativas. Sumário 1. INTRODUÇÃO......................................................................................................7 2. HISTÓRIA DO WEBINTEGRATOR......................................................................8 2.1. A necessidade.....................................................................................8 2.2. A solução adotada: WebIntegrator versão 1 ......................................9 2.3. A evolução do projeto: versão 2........................................................10 2.4. A evolução do projeto: versão 3........................................................13 2.5. O estado do projeto quando da abertura do código..........................14 3. SOFTWARE LIVRE............................................................................................19 3.1. Definições..........................................................................................19 3.2. Principais licenças.............................................................................20 4. SOFTWARE PÚBLICO.......................................................................................20 5. ABERTURA DO CÓDIGO...................................................................................22 5.1. Motivação...........................................................................................22 5.2. Desdobramentos...............................................................................23 6. CONSIDERAÇÕES FINAIS................................................................................23 7. REFERÊNCIAS...................................................................................................24 Lista de figuras Figura 1: Tela principal do WI: Definição do projeto...............................................14 Figura 2: Tela de definição de grids........................................................................15 Figura 3: Explorar Banco de Dados.......................................................................16 Figura 4: Tela de definição de uma página............................................................16 Figura 5: Componentes de pré-página...................................................................17 Figura 6: Componentes de pós-página...................................................................17 Figura 7: Wizard de página.....................................................................................18 Figura 8: WIReport - gerador de relatórios.............................................................18 WebIntegrator: Estudo de caso da abertura do código fonte de um produto comercial Luiz Augusto Evangelista Ruiz [email protected] Resumo: Este trabalho é um resgate da história do software WebIntegrator, produto comercial da empresa ITX Tecnologia da Informação Ltda., que teve o seu código fonte aberto, tornando-se software livre sob a licença GPL e hospedado no Portal do Software Público Brasileiro. O trabalho irá contribuir para o esclarecimento dos termos comumente associados ao software livre, apresentando também o conceito do Software Público Brasileiro. 1. Introdução A Internet tem se destacado como o meio de comunicação que mais rapidamente atingiu escala global de abrangência. Em poucos anos revolucionou a forma como as pessoas se comunicam, compram, trabalham e se divertem. O que no início era apenas um reduto de acadêmicos, a Internet hoje é aberta a todas as idades e classes sociais, passando de um instrumento apenas para troca de mensagens e arquivos, para uma plataforma onde se geram negócios, de um mero repositório de textos, para um complexo ambiente multimídia. Essa evolução gerou uma necessidade de se construir aplicações que utilizassem a Internet como plataforma, ganhando com isso, por um lado a centralização das informações nos servidores, e por outro lado a disponibilidade quase onipresente. Para atender a essa necessidade, empresas desenvolvem frameworks que tornem o desenvolvimento das aplicações mais rápido, mais padronizados e orientado a componentes, possibilitando assim prazos e custos aceitáveis para o mercado. O WebIntegrator (WI) é um exemplo dessa tendência, mas o que faz dele um caso diferenciado é que o seu código foi aberto pela empresa que o desenvolveu, a ITX Tecnologia da Informação Ltda., no mês de setembro de 2008. No decorrer desse texto, procuraremos tornar conhecida a história desse ambiente de desenvolvimento e a sua linha evolutiva. Antes de tratarmos da abertura do código do WebIntegrator, serão abordados alguns tópicos que ajudarão a entender melhor o cenário dos fatos. Uma definição de Software 7 Livre e os tipos de licença para Software Livre mais adotadas serão abordadas em um capítulo específico. Será apresentado o portal de Software Público do Governo Federal, onde o WebIntegrator está disponibilizado. A seguir será tratado o tema da abertura do código do framework, mostrando sua motivação e os desdobramentos dessa abertura, seguindo-se as considerações finais. 2. História do WebIntegrator O WebIntegrator teve sua concepção em 1999. Procuraremos nesse capítulo mostrar a história desse ambiente de desenvolvimento, desde a necessidade que deu origem ao seu desenvolvimento, até a abertura do código fonte em 2008. Durante esse período de nove anos, o WebIntegrator teve três versões, que serão detalhadas a seguir. 2.1. A necessidade A empresa que deu origem ao desenvolvimento do WebIntegrator foi a Infox Tecnologia da Informação Ltda.(INFOX), fundada em 1986 na cidade de Aracaju, Sergipe. O diretor da empresa é Jorge Santana de Oliveira, engenheiro civil, que trabalhou na Cobra Computadores como analista de suporte. No final da década de 1990 a Infox tinha como negócio programas desenvolvidos na linguagem MUMPS, utilizando o banco de dados Caché, do qual a Infox era representante na região. Foi quando surgiram as primeiras demandas por aplicações Web. Jorge Santana contratou um funcionário do Tribunal de Justiça do Estado de Sergipe, Geraldo Moraes, que iniciou a elaboração de sites dinâmicos utilizando a linguagem Java e Caché como banco de dados. Após alguns sites desenvolvidos, Geraldo percebeu a necessidade de criar facilitadores, para tornar a construção dos sites menos trabalhosa e mais eficiente. Passou então a escrever classes genéricas que pudessem ser utilizadas como framework das aplicações. A Infox procurou parceria com outras empresas para fazer desse embrião um produto que viesse a ser utilizado não apenas pelos parceiros, mas que fosse também comercializado. Para conseguir essa parceria, procurou apoio no Consórcio Brasileiro de Tecnologia da Informação (CBTI), do qual faziam parte a Infox e algumas outras empresas de diversas regiões do Brasil. Em uma reunião no Rio de Janeiro, em janeiro de 1999, Geraldo apresentou o embrião do framework para as demais empresas, que fizeram diversas sugestões e críticas, mas não se comprometeram diretamente com o projeto. Como havia interesse por parte da Infox em manter o projeto para uso próprio, Geraldo continuou o desenvolvimento, implementando as sugestões dadas pelas empresas do CBTI. 8 2.2. A solução adotada: WebIntegrator versão 1 O projeto evoluiu ao longo de meses, chegando a um conjunto de classes que executavam as funções mais comuns em uma aplicação Web, como por exemplo acessar o banco de dados, montar uma tabelas, uma caixa de seleção, fazer upload e download de arquivos. A esse conjunto de classes foi dado nome de WebIntegrator, com a intenção de torná-lo um produto. Foi criada a empresa NetAdvance que tinha a finalidade de manter e comercializar o WebIntegrator. A tecnologia utilizada pelo WebIntegrator (WI) era Java Servlet. O ambiente típico onde o WI era instalado consistia de: •Servidor Web (geralmente o Apache); •Java Development Kit (JDK); •Servlet Container (na época era comum o JServ do grupo Apache ou JRun da Micromedia) O WebIntegrator era composto de um servlet Java que recebia as requisições e fazia o processamento das páginas. Cada página era composta de um arquivo HTML que servia de modelo para a montagem feita pelo servlet. Esse modelo (template) possuía partes delimitadas entre barras verticais ( | ) que indicavam ao servlet onde o conteúdo dinâmico seria inserido. A seqüência do processamento era definida em arquivos texto com delimitadores, que continham as informações. A construção de uma aplicação era feita editandose esses arquivos de configuração. Para que o produto realmente se tornasse atraente foi criada uma interface Web, chamada WI-Builder, que seria responsável pela manutenção dos arquivos de configuração, facilitando ainda mais o desenvolvimento das aplicações. O WI-Builder possuía a mesma arquitetura das aplicações por ele geradas. Dessa forma o desenvolvimento das aplicações se tornou declarativo, onde o desenvolvedor informava os parâmetros a serem utilizados, sem se preocupar com a programação em si. A utilização do WI foi imediata pela Infox, passando a ser a ferramenta padrão para o desenvolvimento de aplicações Web, e continua sendo até a presente data. Houve também um grande interesse por parte do Tribunal de Justiça de Sergipe, que também adotou o WI como ferramenta preferencial de desenvolvimento Web, especialmente pelo fato de que o WI contém um módulo de integração com o banco de dados Caché, possibilitando o acesso a rotinas MUMPS a partir da aplicação Java, o que aproveitou um grande legado que aquela instituição tinha nessa linguagem. Uma outra empresa que demonstrou interesse pelo produto foi a Tecnisys, de Brasília, que também adotou o WI como ferramenta de desenvolvimento, devido às suas características de facilidade de uso e baixa curva de aprendizado. A adoção por parte da Tecnisys ocorreu de forma tão intensa, que um dos sócios, Ricardo Masstalerz, manifestou interesse de investir no produto. No 9 final do ano 2000 foi então criada uma nova empresa, a ITX Tecnologia da Informação Ltda, cujo único negócio seria o WI. A partir do começo do ano seguinte (2001), foi iniciado o desenvolvimento de uma nova versão do produto. Deste então o autor participa ativamente do desenvolvimento desse produto. 2.3. A evolução do projeto: versão 2 Evoluir um produto de tecnologia é quase uma obrigação, devido ao surgimento contínuo de melhores padrões e práticas. A primeira versão do WI armazenava as informações em arquivos com texto delimitado, um padrão que passou a ser substituído por arquivos XML, que oferecem uma estrutura mais robusta e melhor organizada. As principais características que nortearam o desenvolvimento da versão 2 foram as seguintes: •Manipulação de objetos totalmente em memória, utilizando DOM e XML. •Referência à página por nome e não mais por número. •Maior clareza projeto/página. na URL das aplicações seguindo o padrão •Utilizar a terminação WSP como padrão para as páginas da aplicação. •Conexão com banco de dados por componente, possibilitando acesso a diferentes bases dentro de uma mesma página. •Suporte a internacionalização. Uma característica marcante da nova versão foi a nova interface do WIBuilder, utilizando ícones em barra de ferramentas, melhorando consideravelmente a usabilidade do produto. Novos assistentes foram desenvolvidos para auxiliar tarefas rotineiras do desenvolvimento de uma aplicação. Foi criado um assistente para SQL, que orientava a criação da expressão de consulta, listando as tabelas existentes na base de dados. Uma vez selecionada a tabela eram mostrados os campos, que podiam também ser selecionados em uma ordem da preferência do desenvolvedor. Os campos poderiam ter função de agregação (soma, média, etc.), expressões para filtro de registros e opção de ordenação (ascendente ou descendente). Um outro assistente foi o gerador de página, partindo de uma expressão SQL. O gerador analisava a consulta, verificando na base de dados os metadados dos campos (tipo, tamanho) e gerava uma página com um campo de formulário para cada coluna da expressão SQL fornecida. Também havia a opção de se gerar os componentes necessários para fazer a persistência das alterações efetuadas através do formulário da página. 10 O principal assistente, que mais contribuiu para o sucesso do WI, foi o assistente de páginas (WIzard), que consistia em uma interface onde o desenvolvedor tinha uma pré-visualização da página que estava sendo editada, podendo selecionar cada um dos campos e alterar as suas propriedades. Mas apenas essa característica não trazia os benefícios esperados, por isso foram criados componentes de página, que passaram a ser o padrão de desenvolvimento do WI. Um componente de página é um trecho de código HTML préprogramado, contendo propriedades que podem ser parametrizadas. Cada projeto podia ter o seu conjunto de componentes específicos ou utilizar um conjunto comum a todos os projetos feitos com o WI. Esse conceito de reutilização de componentes foi o fator inovador e que trouxe um expressivo ganho de produtividade e redução da curva de aprendizado, uma vez que os componentes eram desenvolvidos por especialistas que garantiam o seu funcionamento. As páginas eram feitas como uma linha de montagem, escolhendo-se os componentes correspondentes a cada um dos campos de formulário ou qualquer outro trecho da página. O WI passou a ser um conjunto de componentes de lógica e componentes de interface. Os componentes de lógica poderiam ser utilizados para montar uma página, isso é, eram processados entre a requisição e a sua resposta. Esses componentes recebiam o nome de componentes de prépágina. Os componentes que eram definidos para serem chamados depois que o usuário submetia os dados eram chamados de componentes de pós-página. Ambos os tipos de componentes eram classes Java que executavam operações específicas e que tinham uma interface no WI-Builder, onde o desenvolvedor informava os parâmetros necessários para a execução da lógica pré-programada no componente. Um outro tipo de componente, o componente de projeto, definia artefatos comuns a todo o projeto, que eram referenciados em diferentes páginas. Os componentes de projeto eram: •Upload: definiam os dados para envio de arquivos do cliente para o servidor; •Download: definiam os dados para envio de arquivos do servidor para o cliente; •Combo: definição de conteúdo a ser utilizado em caixas de seleção nas páginas (select); •Grid: definição de conteúdo a ser utilizado em tabelas nas páginas (table); •Event: definição de expressões SQL que seriam executadas com submissão parcial de dados. Tratava-se de uma inovadora implementação do que hoje se tornou popular como AJAX. Os principais componentes de pré-página e de pós-pagina eram: 11 •ComboRef, GridRef, DownloadRef e UploadRef: referências aos componentes definidos no projeto. Somente de pré-pagina; •Componentes de email: enviar, receber, listar e excluir email de um dado servidor; •Object: componente que buscava as informações na base de dados e trazia para o contexto de variáveis do WI; •List: componente que criava uma lista de dados buscados na base de dados informada. Somente de pré-página; •Update: componente que cuidava da persistência dos dados na base de dados, utilizando uma expressão SQL para a atualização; •WIConnector: componente que fazia uma chamada a uma classe desenvolvida especificamente para um dado fim. Era um importante ponto de extensão do WI, suportando lógicas específicas escritas em Java pelo usuário do WI. O WI também tinha um módulo gerador de relatórios, baseado na API JasperReports(JASPERREPORTS). Esse gerador consistia de uma interface Web para a definição dos relatórios, um assistente para a geração e um módulo de integração com o WI-Engine, permitindo que os relatórios fossem chamados a partir das páginas do WI. Havia também um módulo de indexação e busca textual, o WISearch, baseado na API Apache Lucene (LUCENE), que permitia a indexação de documentos e a pesquisa por partes do texto, com diversas funcionalidades como proximidade de palavras, operadores lógicos, etc. A funcionalidade de geração de gráficos, chamada de WIGraph, era baseada na API JFreeChart (JFREECHART), possibilitando a criação de gráficos em fatias, em barras, de linhas e de áreas. O crescimento do produto foi muito expressivo com essa nova versão, especialmente em Brasília, Aracaju e Salvador. Os principais clientes eram: Tribunal de Justiça de Sergipe, Tribunal de Justiça da Bahia (IPRAJ), Tribunal de Justiça do Distrito Federal, Prefeitura Municipal de Aracaju, SESI (DF), FAPESB (Fundação de Amparo à Pesquisa da Bahia), PRODAM (Processamento de Dados do Amazonas), etc. Diversos projetos começaram a ser desenvolvidos tanto pela Infox como pela Tecnisys, que estruturaram-se como fábrica de software, utilizando o WI como ferramenta exclusiva de desenvolvimento. Com o crescimento dos projetos desenvolvidos, surgiu a necessidade de uma nova atualização no WI, tornando-o mais aderente a padrões e utilizandose mais as funcionalidades do container Web do que as implementações proprietárias. Foi feito um estudo das alterações e iniciado o desenvolvimento da versão 3 do produto. Isso foi no início do ano de 2004. 12 2.4. A evolução do projeto: versão 3 A aderência a padrões é um fator muito importante para aumentar a vida útil de um produto de software. Com o WI não foi diferente. Com o estabelecimento do Tomcat, do grupo Apache, como padrão da implementação da tecnologia J2EE para Web, houve a necessidade de se adaptar o WI para esse container. Além disso surgiu a necessidade de se deixar o projeto gerado pelo WI independente do próprio WI, possibilitando o uso de qualquer outra ferramenta para editar as páginas. Isso era exigência de alguns clientes. Para atender a essas necessidades foi concebida uma nova forma de gerar as páginas a partir dos modelos. Como dito anteriormente, na versão 2 haviam modelos HTML com partes variáveis delimitadas com barras verticais (pipes '|'), que eram processados pelo WI-Engine quando a página era requisitada. Na versão 3 as páginas passaram a ser geradas como JSP, isto é, em vez de serem processadas na requisição, eram pré-processadas no desenvolvimento e geradas como JSP, para serem chamadas normalmente pelo container Web (Tomcat). Isso possibilitou o uso de mais funcionalidades do Tomcat, como por exemplo clusterização, dentre outras. As mudanças no WI-Builder foram mais de layout, para marcar uma nova identidade visual da versão e melhorar a usabilidade, através da mudança de algumas barras de ferramentas. Essas mudanças não foram tão profundas como as feitas no WI-Engine, que passou por uma reestruturação para poder suportar as chamadas a partir das páginas JSP. Com essas mudanças e como resultado do sucesso alcançado pelos projetos anteriores, a ferramenta se consolidou ainda mais, possibilitando o desenvolvimento de projetos arrojados, como por exemplo o sistema do Tribunal Regional Federal da quinta região (Nordeste), com sede em Recife. Uma parte desse projeto é o Juizado Virtual, cujos processos tramitam somente por via digital, dispensando o uso de papel. O sistema está em uso em todos os estados da quinta região, com base de dados que chegam a meio terabyte. Com o passar do tempo, algumas melhorias foram acrescentadas ao produto, sempre visando melhorar a performance ou facilitar tarefas repetitivas. Foi feito um levantamento entre os clientes das principais demandas. Esse levantamento resultou em reuniões chamadas de WIMeeting, que aconteceram em Jaraguá do Sul, Santa Catarina, em Curitiba e em Aracaju. Nessas reuniões eram definidos os rumos a serem tomados pelo produto e quais as novas funcionalidades que seriam implementadas. Também era um momento de troca de experiências entre os usuários do WI, onde cada um mostrava um projeto que considerasse interessante, demonstrando detalhadamente sua implementação. 13 2.5. O estado do projeto quando da abertura do código A abertura do código será assunto de um capítulo posterior, mas apenas para fechar o ciclo do desenvolvimento do WI pela ITX, será descrito o estado do projeto que estava, na época da abertura do código (setembro de 2008), na versão 3.3. Com o aumento da base instalada de clientes e as especificações definidas nos encontros WIMeeting, as novas implementações foram agregadas. Dentre elas podemos destacar: •Funcionalidade de registro de acesso ao banco de dados (logs) de fácil definição, possibilitando uma auditoria de todas as expressões de consulta submetidas a qualquer uma das bases de dados definidas no projeto. •Single Sign On: identificação única do usuário que utiliza diferentes aplicações geradas pelo WI. •Melhorias na implementação de webservices, tanto cliente como servidor. •Mecanismo de renderização parcial de página (AJAX), não apenas para consultas como fazia o WIEvent, mas para qualquer região da página. •Controle de transações ao longo de uma requisição. O desenvolvedor indica onde começa e termina uma transação. As cópias de tela a seguir ilustram a interface do WIBuilder, nas suas principais definições. Figura 1: Tela principal do WI: Definição do projeto A figura 1 mostra a tela de definições do projeto. É a primeira tela que é aberta quando se cria um projeto no WI. Nela estão os links para definição do acesso às bases de dados e dos servidores de email e FTP. Também é 14 possível ver os links para definição dos componentes de projeto: combos, downloads, events, grids, uploads e webservices. A figura 2 mostra a tela de definição de um grid, onde temos o campo da expressão de consulta (SQL), o identificador do grid, a quantidade de registros a ser mostrada por página, e outros campos mais. Todos os componentes que acessam uma base de dados tem alguns campos em comum: a expressão de consulta SQL, o seletor da base de dados a ser utilizada e o campo filtrar, que permite a retirada de caracteres do conteúdo das variáveis, por questão de segurança, como é o caso do símbolo '%' que é um coringa em uma expressão SQL e pode gerar consultas mais demoradas que o esperado. Para facilitar o teste das expressões de consulta existe uma tela chamada Explorar BD, mostrada na figura 3, que permite que o desenvolvedor escreva a expressão SQL e veja os registros retornados por ela. Figura 2: Tela de definição de grids 15 Figura 3: Explorar Banco de Dados Para as páginas do projeto temos 3 telas: a figura 4 mostra a tela de definição da página, a figura 5 mostra a tela dos componentes de pré-página e a figura 6 mostra a tela dos componentes de pós-página. Figura 4: Tela de definição de uma página 16 Figura 5: Componentes de pré-página Figura 6: Componentes de pós-página 17 Para a definição dos componentes de interface, temos a tela do Wizard, mostrada na figura 7. Figura 7: Wizard de página Figura 8: WIReport - gerador de relatórios A figura 8 mostra a tela do WIReport, o gerador de relatórios baseado na API JasperReports, que possibilita a geração de relatórios em diversos formatos: HTML, PDF, XLS, etc. 18 3. Software Livre Antes de tratarmos o assunto da abertura do código do WI, é conveniente esclarecer o que é Software Livre e o que é Software Público. Esse capítulo tratará do Software Livre e o próximo do Software Público. O termo Software Livre é frequentemente alvo de mal-entendidos, devido ao uso indiscriminado da expressão. Procuraremos definir bem esse conceito, de forma a contribuir para o esclarecimento dos diferentes tipos de licenciamento de software. É comum se confundir Software Livre com software gratuito, ou freeware. Como exemplo da diferença podemos citar o Internet Explorer da Microsoft, que é um software gratuito, mas não é um software livre, pois o seu código fonte é propriedade da Microsoft. Para ficarmos no domínio dos navegadores, podemos citar o Firefox como um Software Livre, pois além de gratuito, o código fonte é aberto. 3.1. Definições A seguir serão listadas algumas expressões relacionadas ao licenciamento de software e suas principais características. •Software Livre: todo software que possui as quatro liberdades definidas por Richard Stallman, o criador da Free Software Foundation (FSF). São elas: usar, copiar, modificar e distribuir livremente o software. Geralmente um software livre é gratuito, mas nem sempre é assim, como é o caso do Red Hat Enterprise Linux, que é uma distribuição GNU/Linux, vendido pela Red Hat. •Software Gratuito (Freeware): software que é distribuído gratuitamente, mas não tem o código fonte aberto. Como citamos anteriormente, o Internet Explorer da Microsoft é um software gratuito que não é software livre. •Software Proprietário: aquele que é distribuído com uma licença para uso e cujo código fonte é propriedade da empresa que o desenvolveu. Normalmente há um contrato de uso, apresentado durante a instalação do software, com o qual o usuário deve estar de acordo para poder utilizá-lo. •Software em Domínio Público: aquele em que o autor abre mão dos direitos autorais, tornando o código público. Não deve ser confundido com Software Público, que será tema do próximo capítulo. •Software Open Source: é o software que tem o código aberto mas não tem o caráter ideológico do Software Livre, atendo-se mais ao aspecto técnico. A organização mais expressiva nesse tipo de software é a OSI (Open Source Initiative), fundada por Eric Raymond entre outros. 19 3.2. Principais licenças A licença de Software Livre mais comum é a GNU-GPL (General Public License) da Free Software Foundation (FSF). Essa é a licença utilizada no sistema operacional GNU/Linux e em diversos outros programas de Software Livre. É considerada a menos restritiva de todas as licenças, pois garante que um software com ela licenciado sempre será livre, obrigando todo trabalho derivado a ter o mesmo tipo de licença. Um usuário pode realizar alterações em um software sob essa licenças e não distribuí-lo, mas se vier a distribuir, necessariamente ele será GPL também. A licença GNU-LGPL (Lesser General Public License) é bastante semelhante à GPL, mas permite que o software por ela licenciado possa gerar outros derivados que não necessariamente tenham que ter a mesma licença. Por esse motivo, essa licença também é chamada de Library General Public License, ou seja, licença GPL para bibliotecas. Um grande número de bibliotecas de software usam essa licença. O WI utiliza diversas bibliotecas com essa licença, como por exemplo JasperReports, JFreeChart. Uma licença que também é muito popular é a licença da Apache Software Foundation (ASF), devido ao grande número de projetos mantidos pelo grupo. Entre os mais conhecidos temos o Apache Server, Ant, Lucene, MyFaces, Tomcat, Struts, Maven, entre outros. 4. Software Público O conceito de Software Público é muito novo e consolida diversas iniciativas de facilitar a disponibilização de software, tanto entre organismos do governo como entre este e a sociedade. Desde o ano de 1995, empresas estaduais de informática, reunidas na Associação das Entidades Estaduais de Tecnologia da Informação e Comunicação (ABEP), vem discutindo a questão do software público brasileiro. As discussões eram inicialmente no sentido de compartilhar soluções entre entidades públicas, evitando que o governo pagasse duas vezes por uma mesma coisa (MEFFE, Um primeiro modelo para o software público). Graças ao avanço tecnológico do software livre e à consolidação da licença GPL como sendo totalmente compatível com a legislação brasileira, os administradores públicos começaram a ganhar maior segurança para o compartilhamento de soluções. A primeira solução liberada com a licença GPL foi o sistema de inventário CACIC, da Dataprev, Empresa de Tecnologia e Informações da Previdência Social. Esse fato, entre outros, foi responsável pela retomada do debate sobre software público, resultando no amadurecimento do conceito. 20 Segundo Corinto Meffe, atual gerente de projetos do Departamento de Integração de Sistemas, Secretaria de Logística e Tecnologia da Informação, do Ministério do Planejamento Orçamento e Gestão: […] poderia definir que o software público é aquele que trata o software como um bem público e imputa responsabilidades para os entes governamentais no processo de tornar disponível uma solução […] (MEFFE, Entrevista concedida a Rafael Evangelista) A criação do Portal do Software Público Brasileiro foi o resultado concreto do amadurecimento do conceito, estabelecendo um modelo com as seguintes características: •O produto: tratar o software como um produto acabado, pronto para funcionar. •Os serviços associados: conjunto de serviços como página na Internet, fórum e lista de discussão para desenvolvimento, suporte e projetos, ferramenta de controle de versão e documentação do sistema. •A prestação de serviços: criar facilidade na relação do governo com o cidadão que acessa o serviço, mantendo uma equipe de atendimento para a comunidade. •A gestão da colaboração: abrange incentivar a colaboração entre desenvolvedores e usuários, estruturar instrumentos de gestão e controles e a definir parâmetros de controle de qualidade. O Portal teve o seu lançamento no 8º Fórum Internacional de Software Livre, em Porto Alegre, no dia 12 de abril de 2007. Conta atualmente com 17 comunidades que disponibilizam soluções nas áreas de educação, geoprocessamento, informática, administração e saúde. Ainda segundo Meffe (MEFFE, A consolidação do Software Público em 2008) a consolidação do conceito do software público está mais próxima depois de uma menção explícita do Portal na Instrução Normativa para Contratação de Serviços de Tecnologia da Informação do Governo Federal (IN04). Esta Instrução Normativa estabelece que antes de se contratar um serviço de software, deve-se considerar as soluções que compõe o acervo do Portal.Outro fator que pode consolidar o conceito é a adesão do meio acadêmico (SOFTWARE PÚBLICO, Academia vai colaborar com o Portal do Software Público) e municipal (SOFTWARE PÚBLICO, Prefeituras brasileiras vão disponibilizar soluções no Portal do Software Público). No meio acadêmico destaca-se a colaboração de cinco instituições: Centro Federal de Educação Tecnológica de Campos (RJ), Universidade Federal de Lavras (MG), Universidade Federal de Santa Catarina, Universidade de Brasília (DF) e Faculdade Jesus Maria José (DF). Essas instituições vão cooperar com as soluções do Portal, que terá uma área específica para o cadastro das instituições de ensino, dos projetos e dos alunos. 21 No meio municipal, as prefeituras de Itajaí (SC) e de Bagé (RS) vão disponibilizar no Portal soluções desenvolvidas para municípios, com a intenção de oferecer sistemas que atendam às necessidades das prefeituras. Isso será feito em conjunto com o Projeto Via Digital (VIA DIGITAL). O Portal também irá ter uma área destinada a aumentar a interação entre os municípios e estimular o uso das aplicações disponíveis. 5. Abertura do código A ITX Tecnologia da Informação, empresa que desenvolveu o WI sempre foi adepta do software livre, fazendo uso de bibliotecas com licença LGPL e recomendando o uso de servidores com sistema operacional GNU/Linux. O módulo WIEngine, que acompanha cada projeto gerado pelo WI, a partir da versão 3 passou a ser de código aberto e livre para ser distribuído junto com os projetos. Sempre houve uma tendência à abertura do código do produto como um todo. Em vários momentos foram feitos estudos sobre a viabilidade da abertura do código e como isso poderia beneficiar também a empresa, não apenas à comunidade, uma vez que o único negócio da empresa é o WI. 5.1. Motivação A principal motivação para a abertura de código do WI foi o amadurecimento do conceito de software público. Ricardo Masstalerz, sócio da ITX, sempre acompanhou de perto a evolução do portal e das políticas governamentais de incentivo ao software livre, por entender que o processo colaborativo gera vantagens não apenas para a empresa, como também para toda a comunidade (SOFTWARE PÚBLICO, A empresa privada ITX Tecnologia disponibiliza solução no Portal do Software Público). Apesar da tendência para a abertura do código, sempre houve por parte da ITX a preocupação com demandas por suporte e o apoio a ser dado à comunidade de usuários. Quando o Portal do Software Público se consolidou como um ecossistema completo para o apoio a essa iniciativa, a tendência passou a se tornar uma realidade. No dia 24 de setembro de 2008, no evento Linux Park na cidade de Brasília, foi assinada a carta de lançamento do WebIntegrator no Portal do Software Público. Assinaram a carta Rodrigo Assumpção, Secretário-Adjunto de Logística e Tecnologia da Informação e Ricardo Masstalerz Sócio Diretor da ITX Tecnologia da Informação (SOFTWARE PÚBLICO, WebIntegrator disponível no Portal do Software Público). 22 5.2. Desdobramentos A aceitação da abertura do código por parte da comunidade foi surpreendente, como ficou demonstrado pela rápida adesão dos usuários na comunidade do WI. Em poucos dias chegou ao número de 500 usuários. Em um mês chegou a 1083 usuários, um crescimento muito expressivo. A comunidade do WI recebeu diversas contribuições por parte de desenvolvedores mais avançados que prepararam vídeo-aulas, apresentações e tutoriais, disponibilizando esse material na área de arquivos da comunidade. A expectativa agora é que a comunidade possa contribuir com sugestões de melhorias, notificação de erros e correções, uma vez que o Portal disponibiliza uma ferramenta de gerenciamento de versões e tickets chamada Trac (TRAC) que permite aos usuário cadastrados na comunidade acessar o código fonte através do Subversion, possuindo um wiki integrado para facilitar a documentação. 6. Considerações finais A abertura do código fonte de um produto comercial estável é sempre uma decisão difícil de ser tomada, uma vez que a venda do produto pode ser reduzida praticamente a zero. Essa decisão deve ser baseada em um novo modelo de negócio, que leve em conta prestação de serviços como treinamento, consultoria, mentoring, customização, etc. A ITX Tecnologia da Informação não foi a única empresa que abriu o código fonte de um produto através do Portal do Software Público Brasileiro. A empresa Light Infocon Tecnologia S/A disponibilizou duas soluções, a solução LightBase, que é um banco de dados textual multimídia e a solução GoldenDoc, um conjunto de frameworks Web para a implantação de soluções voltadas para o gerenciamento de informações e arquivos eletrônicos. O que se espera dessas iniciativas é que haja um melhor aproveitamento por parte de todos os envolvidos: empresas, governo e cidadãos, onde todos possam ser beneficiados com produtos de melhor qualidade, abertos e gratuitos, características apenas possíveis graças ao Software Livre. 23 7. Referências ABEP. Associação Brasileira de Entidades Estaduais de Tecnologia da Informação e Comunicação. Disponível em: http://www.abep.sp.gov.br/. Acesso em: 21 out. 2008. FSF. Free Software Foundation. Disponível em: http://www.fsf.org. Acesso em: 18 out. 2008. INFOX. Infox Tecnologia da Informação http://www.infox.com.br. Acesso em: 22 out. 2008. Ltda. Disponível em: IN04. Instrução Normativa Número 4. Disponível em: http://www.governoeletronico.gov.br/anexos/instrucao-normativa-in-nb0-4. Acesso em: 23 out. 2008. JASPERREPORTS. JasperReports. Disponível em: http://www.jaspersoft.com/ JasperSoft_JasperReports.html. Acesso em: 24 out. 2008. JFREECHART. JFree Chart. Disponível em: http://www.jfree.org/jfreechart/. Acesso em: 22 out. 2008. LUCENE. Apache Lucene. Disponível em: http://lucene.apache.org/. Acesso em: 22 out. 2008. MEFFE, Corinto. Um primeiro modelo para o software público. Disponível em: http://computerworld.uol.com.br/governo/corinto_meffe/idgcoluna.2007-0323.2475687668. Acesso em: 19 out. 2008. _____. Corinto Meffe define software público. Entrevista concedida a Rafael Evangelista. Disponível em: http://cienciaecultura.bvs.br/scielo.php?pid=S000967252006000300004&script=sci_arttext. Acesso em 19 out. 2008. _____. A consolidação do Software Público em 2008. Disponível em: http://computerworld.uol.com.br/governo/corinto_meffe/idgcoluna.2008-0925.5912621469. Acesso em: 19 out. 2008. OSI. Open Source Initiative. Disponível em: http://www.opensource.org/. Acesso em 23 out. 2008. SOFTWARE PÚBLICO. Portal do Software Público Brasileiro. Academia vai colaborar com o Portal do Software Público. Disponível em: 24 http://www.softwarepublico.gov.br/web/one-entry?entry%5fid=5668487. Acesso em: 21 out. 2008. _____. Portal do Software Público Brasileiro. Prefeituras brasileiras vão disponibilizar soluções no Portal do Software Público. Disponível em: http://www.softwarepublico.gov.br/web/one-entry?entry%5fid=5229291. Acesso em: 21 out. 2008. _____. Portal do Software Público Brasileiro. A empresa privada ITX Tecnologia disponibiliza solução no Portal do Software Público. Disponível em: http://www.softwarepublico.gov.br/web/one-entry?entry_id=5999414. Acesso em: 21 out. 2008. _____. Portal do Software Público Brasileiro. WebIntegrator disponível no Portal do Software Público. Disponível em: http://www.softwarepublico.gov.br/web/one-entry?entry_id=6441983. Acesso em: 21 out. 2008. TRAC. Trac Project. Disponível em: http://trac.edgewall.org. Acesso em: 20 out. 2008. VIA DIGITAL. Portal Via Digital. Disponível em: http://www.viadigital.org.br. Acesso em: 17 out. 2008. 25