“Demandas legais no desenvolvimento de software sob uma visão tecnológica”, de Claudio F Filho, foi licenciada com uma Licença Creative Commons Atribuição - Uso não-comercial - Compartilhamento pela mesma licença 3.0 Não adaptada. http://creativecommons.org/licenses/by-nc-sa/3.0/br/ Você tem a liberdade de: • Compartilhar — copiar, distribuir e transmitir a obra. • Remixar — criar obras derivadas. Sob as seguintes condições: • Atribuição — Você deve creditar a obra da forma especificada pelo autor ou licenciante (mas não de maneira que sugira que estes concedem qualquer aval a você ou ao seu uso da obra). • Uso não-comercial — Você não pode usar esta obra para fins comerciais. • Compartilhamento pela mesma licença — Se você alterar, transformar ou criar em cima desta obra, você poderá distribuir a obra resultante apenas sob a mesma licença, ou sob uma licença similar à presente. Ficando claro que: • Renúncia — Qualquer das condições acima pode ser renunciada se você obtiver permissão do titular dos direitos autorais. • Domínio Público — Onde a obra ou qualquer de seus elementos estiver em domínio público sob o direito aplicável, esta condição não é, de maneira alguma, afetada pela licença. • Outros Direitos — Os seguintes direitos não são, de maneira alguma, afetados pela licença: ◦ Limitações e exceções aos direitos autorais ou quaisquer usos livres aplicáveis; ◦ Os direitos morais do autor; ◦ Direitos que outras pessoas podem ter sobre a obra ou sobre a utilização da obra, tais como direitos de imagem ou privacidade. Aviso — Para qualquer reutilização ou distribuição, você deve deixar claro a terceiros os termos da licença a que se encontra submetida esta obra. A melhor maneira de fazer isso é com um link para esta página. Agradecimentos Agradeço a estas pessoas pelo desenvolvimento deste trabalho, com colaborações desde sugestões, críticas e correções: Claudia Ferreira Érico Ferreira Leonardo Cezar Marcelo Moura Marco Scheiner Meg Mendonça Reinaldo Vale Contatos E-mail: [email protected] Identi.ca: http://identi.ca/filhocf Twitter: http://twitter.com/filhocf Histórico do documento Data Versão Autor 16/01/12 0.1 Claudio F Filho Versão inicial. 24/01/12 0.2 Claudio F Filho Adição das seções “Novos modelos de negócio”, “Relações trabalhistas” e “Outras considerações”. 02/02/12 0.3 Claudio F Filho Adição de várias considerações e melhorias no texto a partir de sugestões de Marcelo Moura e Meg Mendonça, adição de responsabilidades no desenvolvimento e desenvolvimento para órgãos públicos. 09/02/12 0.4 Claudio F Filho Adição das questões relacionadas a marca, evolução do desenho de inter-relação das licenças, adição da definição de cloud computing, adição da MPL 2.0, e virtualização. 26/02/12 0.5 Claudio F Filho Adição das figuras elaboradas para o infográfico e apresentação deste material, nota legal, resumo e material complementar. 3 de 69 Alteração Aspectos legais no desenvolvimento de soluções de TI Índice 0.Aviso legal................................................................................................................................ 6 1.Introdução................................................................................................................................ 7 2.Definições................................................................................................................................. 9 2.1.Computação em nuvem (Cloud Computing)......................................................................9 2.2.Engenharia reversa........................................................................................................... 9 2.3.Framework...................................................................................................................... 10 2.4.Infraestrutura.................................................................................................................. 10 2.4.1.Infraestrutura de desenvolvimento..........................................................................11 2.4.2.Infraestrutura de hospedagem.................................................................................11 2.5.Licença............................................................................................................................ 12 2.5.1.Licença de software.................................................................................................14 2.5.2.Licença Pública de Marca......................................................................................... 15 2.6.Marca.............................................................................................................................. 15 2.7.Programa de computador (ou software)..........................................................................16 2.8.Registro de programas de computadores........................................................................16 2.9.Tecnologia....................................................................................................................... 17 2.10.Virtualização.................................................................................................................. 17 3.Breve classificação de software..............................................................................................19 3.1.Licenças fechadas........................................................................................................... 20 3.1.1.Adware..................................................................................................................... 20 3.1.2.Freeware ou Gratuito............................................................................................... 20 3.1.3.Instalado em um computador ou OEM.....................................................................21 3.1.4.Por volume ou integrador........................................................................................21 3.1.5.Software como Serviço (SaaS).................................................................................22 3.1.6.Shareware (ou Trial)................................................................................................22 3.1.7.Licenciamento Único, de Caixa ou FPP (Full Packaged Product)...............................23 3.2.Estudos de casos para licenças fechadas........................................................................23 3.3.Software proprietário vs Software privativo....................................................................25 3.4.Licenças compartilhadas................................................................................................. 25 3.5.Licenças abertas............................................................................................................. 26 3.5.1.Software livre........................................................................................................... 26 3.5.1.1.Protecionistas Totais.........................................................................................27 3.5.1.2.Protetivas Parciais............................................................................................ 29 3.5.2.Software público...................................................................................................... 32 3.5.3.Código aberto.......................................................................................................... 32 3.5.4.Domínio público....................................................................................................... 34 3.6.Novos modelos de negócios com licenças abertas..........................................................35 3.6.1.Subscrição de suporte..............................................................................................35 3.6.2.Contrato de instalação, configuração e suporte.......................................................35 3.6.3.Estratégia de bilicenciamento..................................................................................36 3.6.4.Segmentação em comunitário e empresarial...........................................................36 3.6.5.Comercialização de produtos abertos - permissivos................................................37 4.Análise dos pontos legais no desenvolvimento.......................................................................38 4.1.Cenário tecnológico......................................................................................................... 40 4.2.Início dos trabalhos......................................................................................................... 42 4.3.Requisitos........................................................................................................................ 44 4.4.Desenvolvimento............................................................................................................ 45 4.4.1.Ambientes................................................................................................................ 46 4.4.2.Elementos externos................................................................................................. 47 4.4.2.1.Bibliotecas........................................................................................................ 47 4 de 69 Aspectos legais no desenvolvimento de soluções de TI 4.4.2.2.Framework....................................................................................................... 49 4.4.2.3.Documentação.................................................................................................49 4.4.2.4.Sons, vídeos e imagens....................................................................................51 4.4.3.Declaração da licença.............................................................................................. 51 4.5.Registro........................................................................................................................... 54 4.6.Relações trabalhistas...................................................................................................... 54 5.Outras considerações............................................................................................................. 57 5.1.Licenças estrangeiras e a legislação brasileira................................................................57 5.2.Compatibilidade de licenças............................................................................................ 58 5.3.Responsabilidades dentro do desenvolvimento de software...........................................61 5.4.Software para órgãos públicos – aquisição e desenvolvimento.......................................64 5.5.A marca........................................................................................................................... 66 5.6.Fluxograma operacional de análise legal para desenvolvimento....................................67 6.Material complementar........................................................................................................... 69 6.1.Filmes.............................................................................................................................. 69 6.1.1.Piratas do Vale do Silício (1999)...............................................................................69 6.1.2.Revolution OS (2001)............................................................................................... 69 5 de 69 Aspectos legais no desenvolvimento de soluções de TI 0. Aviso legal • Eu não sou um advogado! • Nada que eu digo neste aconselhamento jurídico; • Se você tem dúvidas com ramificações legais, entre em contato com um advogado; • Falamos de bases legais diferentes, anglo-americanas e romanogermânicas. É necessário observar questões internacionais e tratados sobre o assunto as quais o Brasil é signatário; • O material apresentado aqui foi compilado a partir de uma interpretação coloquial do material disponível na internet, podendo ser acessado e interpretado pelo leitor; • Todas as marcas aqui apresentadas são propriedade exclusiva de seus respectivos proprietários; • Muitas figuras aqui apresentadas foram obtidas a partir do projeto OpenClipart.org, licenciadas sob Domínio Público, outras foram criadas por Claudio F Filho, bem como suas composições; • “Demandas Legais no Desenvolvimento de Software - sob uma visão tecnológica” e suas figuras são licenciadas sob uma licença não portada Creative Commons Atribuição - Uso não-comercial – Compartilhada pela mesma licença 3.0 Não adaptada trabalho deve ser interpretada como . 6 de 69 Aspectos legais no desenvolvimento de soluções de TI 1. Introdução O conceito de “Soluções de Tecnologia da Informação e Comunicação” - TIC – é extremamente vago para os diversos participantes de um projeto de TIC, e mais complicado ainda quando se começa uma análise dos pontos legais incidentes sobre a parte técnica de um projeto em si. O objetivo deste trabalho é mostrar os diversos aspectos legais envolvidos nestes projetos, avaliando desde o processo de venda da solução, o impacto da definição do cenário tecnológico, desenvolvimento de código, implantação da solução, além da parte de licenciamento e registro do software, dos esquemas de dados, dos dados em si e/ou da combinação de todos estes. Esta análise se dá de forma genérica, buscando englobar características tanto da iniciativa pública quanto privada, se tornando uma referência de comparação para qualquer entidade. Porém, esta não é uma interpretação formal, uma vez que foi feita por mim, um profissional da área de TIC, buscando unir visões sobre várias partes do processo, licenciamento e questões legais. Para chegar neste ponto é necessário fazer a uniformização de uma série de termos e conceitos, de forma gradual, conforme aprofundamos nestas questões. Figura 1: Esquema geral de um processo de desenvolvimento Na figura acima, temos uma representação rápida sobre os caminhos no processo de desenvolvimento de uma solução de TI. Para tanto, temos as 7 de 69 Aspectos legais no desenvolvimento de soluções de TI alternativas normais da contratação para apenas o desenvolvimento de software, ou a opção de desenvolver o software mais a contratação de infraestrutura para prover o serviço para o cliente, ou também conhecido como hospedagem ou hosting. No desenvolvimento, pode ser gerado um programa para instalação na estação de trabalho, também conhecido como aplicação desktop, ou acessível pela web, também conhecido como sistema web ou SaaS (Software as a Service - Software como um Serviço). Dentro deste fluxo, opcionalmente, pode haver registro e/ou licenciamento deste sistema. 8 de 69 Aspectos legais no desenvolvimento de soluções de TI 2. Definições Antes de seguir, é fundamental determinar alguns termos comuns para todo o processo, assim dedicaremos algum tempo para entender estas definições e sua importância dentro do processo. 2.1. Computação em nuvem (Cloud Computing) Da Wikipédia1: “O conceito de computação em nuvem (em inglês, cloud computing) refere-se à utilização da memória e das capacidades de armazenamento e cálculo de computadores e servidores compartilhados e interligados por meio da Internet, seguindo o princípio da computação em grade. O armazenamento de dados é feito em serviços que poderão ser acessados de qualquer lugar do mundo, a qualquer hora, não havendo necessidade de instalação de programas x ou de armazenar dados. O acesso a programas, serviços e arquivos é remoto, através da Internet - daí a alusão à nuvem. O uso desse modelo (ambiente) é mais viável do que o uso de unidades físicas. Num sistema operacional disponível na Internet, a partir de qualquer computador e em qualquer lugar, pode-se ter acesso a informações, arquivos e programas num sistema único, independente de plataforma. O requisito mínimo é um computador compatível com os recursos disponíveis na Internet. O PC torna-se apenas um chip ligado à Internet — a "grande nuvem" de computadores — sendo necessários somente os dispositivos de entrada (teclado, mouse) e saída (monitor).” 2.2. Engenharia reversa Do sitio Hackers HI2: Como o próprio nome indica, a Engenharia Reversa é uma engenharia "ao contrário", portanto, é uma atividade que trabalha com um produto existente (um software, uma peça mecânica, uma placa de computador, etc.) e tenta entender como este produto funciona e o que ele faz exatamente (todas as suas propriedades em quaisquer circunstâncias). 1 2 http://pt.wikipedia.org/wiki/Cloud_computing (2012) http://hackershi.webnode.com.br/news/engenharia-reversa/ (2012) 9 de 69 Aspectos legais no desenvolvimento de soluções de TI Fazemos engenharia reversa quando queremos trocar ou modificar uma peça (ou um software) por outro, com as mesmas características, mas não temos todas as informações sobre essa peça. Para o desenvolvimento de software, este processo é especialmente útil quando temos um sistema em que não temos os fontes, ou não temos mais suporte do fornecedor, ou para fazer evoluções corretivas e/ou evolutivas sobre o mesmo. Pode ainda ser utilizado para se estudar o funcionamento de determinado tratamento ou regra de negócio que o sistema se prontifique a fazer. Dependendo da licença, este tipo de estudo é considerado ilegal. 2.3. Framework Da Wikipedia1: Um framework, em desenvolvimento de software, é uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica. Um framework pode atingir uma funcionalidade específica, por configuração, durante a programação de uma aplicação. Ao contrário das bibliotecas, é o framework quem dita o fluxo de controle da aplicação, chamado de Inversão de Controle. Em outras palavras, é através do framework que é ditado a forma da equipe utilizar determinados métodos no desenvolvimento do sistema, métodos como acessar os dados no banco de dados, ou de como apresentar os dados na tela, etc. 2.4. Infraestrutura Podemos abordar de duas formas desenvolvimento e a de hospedagem. a parte de infraestrutura: a de Porém, antes de seguir, é importante deixar claro que muitos dos pontos citados nos itens abaixo ocorrem de acordo com a metodologia e processo adotado por cada empresa, isto é, podem existir ações descritas abaixo que são realidade para certas empresas, mas não para outras. Outro ponto de atenção é que para estas ações, como o gerenciamento de um projeto, pode ser feito usando desde papel e caneta até um sistema totalmente integrado com todo o processo produtivo da empresa, dependendo de como foi implementado na empresa. Agora, no momento em que se emprega o uso de um sistema, ou ainda, um software é importante que este esteja respeitando 1 http://pt.wikipedia.org/wiki/Framework (2012) 10 de 69 Aspectos legais no desenvolvimento de soluções de TI integralmente sua licença, isto é, se é um software livre, o uso é garantido sem pagamento de royalties, porém se é um software de licença fechada, estamos falando necessariamente em aquisição de licenças, respeitando a referida licença. Com estes detalhes em mente, vamos analisar os tipos de infraestrutura em detalhes. 2.4.1. Infraestrutura de desenvolvimento Para um desenvolvimento nos padrões atuais, em equipe, considera-se o uso de ferramentas mínimas como: • Gestão de projeto - geralmente com foco em cronograma e custos, dentro dos conceitos do PMBOK; • Gestão de configuração - com foco no desenvolvimento, isto é, serviço de bilhetes (tickets), documentação, planejamento, entre outras funções. Estas funcionalidades podem estar dentro de um único software, distribuído entre vários, ou ainda, sob integração abaixo de uma ferramenta integradora; • Gerenciamento de versão - controla todas as alterações do código, permitindo rastreabilidade, isto é, mostrando quem, quando, fez o que. Em uma equipe de desenvolvedores, é fundamental para garantir o controle e evolução do software. Este é um componente dentro da gestão de configuração; • Servidores de desenvolvimento, testes e homologação - para soluções para web, de acordo que o software é desenvolvido, é necessário um ambiente para testes, isto é, um servidor para instalar e testar se o software está atendendo as especificações. Só que neste processo, precisamos servidores de aplicação e banco de dados, que podem ou não ficar na mesma máquina, além do sistema operacional do(s) servidor(es). Para homologação, ocorre o mesmo processo, tratando-se de um passo adicional de testes, geralmente com o cliente, para homologar o desenvolvimento; • Ativos de rede - necessários para computadores e servidores da empresa. interligação de todos os 2.4.2. Infraestrutura de hospedagem Pode acontecer de a empresa prover apenas hospedagem, isto é, o software é desenvolvido fora e depois instalado em servidores providos por esta. Para tanto, se requer: 11 de 69 Aspectos legais no desenvolvimento de soluções de TI • Ativos de rede - necessários para computadores e servidores da empresa; interligação de todos os • DMZ - sigla para “zona desmilitarizada” (do inglês, demilitarized zone), área da rede que tem contato com a rede externa, isto é, a internet. Geralmente os servidores web, correio eletrônico, entre outros, ficam nesta região intermediária; • Servidores de produção - idêntico ao ambiente de homologação, porém, com acesso do usuário final. Este é um ambiente de alta disponibilidade, com requisitos mais severos de segurança, estabilidade, redundância e recuperação, com monitoramento ativo de todo o ambiente, todos são softwares com suas respectivas licenças, precisando uma análise de suas cláusulas. É importante ainda ressaltar que ao final de um ciclo de desenvolvimento existe o processo de evolução de software, que pode ser considerado uma extensão ou um novo contrato, dependendo do volume de evoluções e/ou correções necessárias. Assim, estes ambientes podem ir além do desenvolvimento do software puramente, ou ainda pode ser a internalização de um produto desenvolvido por terceiros, que recai na mesma situação. 2.5. Licença Do dicionário Michaelis1: li.cen.ça sf (lat licentia) 1 Autorização dada a alguém para fazer ou deixar de fazer alguma coisa; permissão. O conceito de licença se desdobra em dois pontos: 1 2 • Direito autoral: que trata sobre os direitos do autor sobre sua obra intelectual que pode ser literária, artística ou científica. Este, pelas questões judiciais clássicas ainda se desdobra em direitos morais, que são os direitos de natureza pessoal, e os direitos patrimoniais, relacionado a propriedade; • Direito de cópia (ou copyright)2: Direitos autorais não são necessariamente o mesmo que copyright em inglês. O sistema anglosaxão do copyright difere do de direito de autor. Os nomes respectivos já nos dão conta da diferença: de um lado, tem-se um direito à cópia, copyright ou direito de reprodução, do outro, um direito de autor; neste, o foco está na pessoa do direito, o autor; naquele, no objeto do direito (a obra) e na prerrogativa patrimonial de se poder copiar. http://michaelis.uol.com.br/moderno/portugues/index.php?lingua=portuguesportugues&palavra=licen%E7a (2012) http://pt.wikipedia.org/wiki/Copyright (2012) 12 de 69 Aspectos legais no desenvolvimento de soluções de TI Deve perceber as diferenças entre o direito autoral de origem romanogermânica, com base no sistema continental europeu do chamado Sistema romano-germânico, e o sistema anglo-americano do copyright baseado no Common Law, havendo por característica diferencial o fato de que o Direito Autoral tem por escopo fundamental a proteção do criador e ao contrário o copyright protege a obra em si, ou seja o produto, dando ênfase à vertente econômica, à exploração patrimonial das obras através do direito de reprodução. Na efetuação do direito de reprodução, o titular dos direitos autorais poderá colocar à disposição do público a obra, na forma, local e pelo tempo que desejar, a título oneroso ou gratuito. No Brasil, temos este detalhamento na Lei dos Direitos Autorais, listando abaixo os principais pontos. Lei de Direitos Autorais (Lei nº 9.610/98) Art. 7º São obras intelectuais protegidas as criações do espírito, expressas por qualquer meio ou fixadas em qualquer suporte, tangível ou intangível, conhecido ou que se invente no futuro, tais como: (...) V - as composições musicais, tenham ou não letra; VI - as obras audiovisuais, cinematográficas; sonorizadas ou não, inclusive as (...) VIII - as obras de desenho, pintura, gravura, escultura, litografia e arte cinética; (...) XII - os programas de computador; § 1º Os programas de computador são objeto de legislação específica, observadas as disposições desta Lei que lhes sejam aplicáveis. Além dos programas de computador, foram destacados intencionalmente as questões relacionadas a produções musicais, desenho e audiovisuais. Isto acontece pois no desenvolvimento de software não se trata somente do código do programa. Para a construção de um programa precisamos ainda dos ícones, botões e outros elementos gráficos, alertas sonoros e até animações e textos na parte de documentação e/ou suporte ao software, que se enquadram na lei e viram pontos de cuidado no desenvolvimento de uma solução de TI. 13 de 69 Aspectos legais no desenvolvimento de soluções de TI 2.5.1. Licença de software Da Wikipedia1: “Uma licença de software é uma definição de ações autorizadas (ou proibidas) no âmbito do direito de autor de um programador de software de computador concedidas (ou impostas) ao usuário deste software. Entende-se por usuário qualquer entidade legal, empresas ou um "usuário final (doméstico)", origem da expressão end user license agreement (EULA). Quando uma licença acrescenta restrições para além das existentes no direito de autor, o usuário tem normalmente de aceitar que lhe sejam impostas estas restrições para poder sequer utilizar o software. Aqui reside a principal diferença entre uma licença de software livre e uma licença de software não-livre: as licenças de software livre acrescentam direitos face aos já concedidos pelo direito de autor, deixando apenas para o ato de redistribuição as únicas regras que impõem.” Então, a partir desta definição, podemos entender que a licença de software é, na verdade, um contrato formal e legal entre o autor (programador, para pessoa física, ou fábrica de software, para pessoa jurídica) e o usuário desta solução, definindo o que se pode ou não fazer com o software. Entenda-se por fazer, além do uso do programa, atos como o de redistribuir, vender ou doar, estudar, modificar ou outra ação relacionada. Figura 2: O que é licença 1 http://pt.wikipedia.org/wiki/Licen%C3%A7a_de_software (2012) 14 de 69 Aspectos legais no desenvolvimento de soluções de TI 2.5.2. Licença Pública de Marca Da Instrução Normativa 01/2011, do Governo Brasileiro 1: (…) “V - Licença Pública de Marca – LPM: tipo de licença de uso de marca que preserva a identidade original entre o nome, a marca, o código-fonte, a documentação e outros artefatos relacionados ao Software Público Brasileiro e na qual o titular do registro consente genericamente, sem necessidade de qualquer tipo de autorização prévia e/ou específica, que outros utilizem gratuitamente a marca para fins de cópia, distribuição, compartilhamento e transmissão em qualquer dispositivo físico ou virtual, inclusive com propósitos comerciais, desde que respeitada as regras e requisitos previstos no Capítulo IV desta Instrução Normativa;” 2.6. Marca Da Wikipedia2: “Marca não é um conceito fácil de definir. Na sua definição e na sua análise devem-se levar em consideração as disciplinas que a utilizam e regulam mais diretamente, que são o direito comercial e a gestão de marketing. Para o direito comercial a marca é um sinal. A OMPI – Organização Mundial de Propriedade Industrial – define a marca como um “sinal que serve para distinguir os produtos ou serviços de uma empresa dos outros de outras empresas”. A definição da American Marketing Association, ainda adotada em edições clássicas de marketing, acrescenta a definição jurídica: “ A marca é um nome, um termo, um sinal, ou um desenho, ou uma combinação destes elementos, com vista a identificar os produtos e serviços de um vendedor, ou de um grupo de vendedores, e a diferenciá-los dos concorrentes”. Segundo Kotler, “talvez a habilidade mais característica dos profissionais de marketing seja a capacidade de criar, manter, proteger e melhorar uma marca. Para os profissionais de marketing, o estabelecimento de uma marca é a arte e a essência do marketing.” 1 2 http://www.governoeletronico.gov.br/acoes-e-projetos/software-livre/licenca-publica-demarca (2012) http://pt.wikipedia.org/wiki/Marca (2012) 15 de 69 Aspectos legais no desenvolvimento de soluções de TI 2.7. Programa de computador (ou software) Da Wikipedia1: “Um programa de computador é a formalização de um algoritmo em qualquer linguagem capaz de ser transformada em instruções que serão executadas por um computador gerando os resultados esperados . O termo "software" pode ser utilizado quando se quer designar um conjunto de programas ou, mais frequentemente, quando é feita uma referência à parte não física do sistema computacional, em contraposição ao termo "hardware", que designa o conjunto de componentes eletrônicos que constituem um computador. Os programas de computador utilizados diretamente por pessoas comuns, como os editores de texto, são chamados de software aplicativo, ou de aplicação. Os programas voltados para dar suporte funcional aos computadores, como os sistemas operacionais, são chamados de software de sistema. Esses softwares, assim como aqueles embutidos em outros sistemas (firmware2), podem ser genericamente chamados de "programas".” Da Lei do Software (Lei 9.609/98)3: “Art. 1º Programa de computador é a expressão de um conjunto organizado de instruções em linguagem natural ou codificada, contida em suporte físico de qualquer natureza, de emprego necessário em máquinas automáticas de tratamento da informação, dispositivos, instrumentos ou equipamentos periféricos, baseados em técnica digital ou análoga, para fazê-los funcionar de modo e para fins determinados.” 2.8. Registro de programas de computadores O registro de programas de computadores constitui no depósito de uma cópia do programa em um órgão credenciado para garantir a autoria. No Brasil, a competência é do Instituto Nacional de Propriedade Industrial 4 – INPI, que foi atribuída através do Decreto 2.556/98 e, também, é regido pela Lei nº 9.609/98, conhecida como Lei do Software e a Lei nº 9.610/98, a Lei de Direitos Autorais. 1 2 3 4 http://pt.wikipedia.org/wiki/Programa_de_computador (2012) firmware é o conjunto de instruções operacionais programadas diretamente no hardware de um equipamento eletrônico. É armazenado permanentemente num circuito integrado (chip) de memória de hardware, como uma ROM, PROM, EPROM ou ainda EEPROM e memória flash, no momento da fabricação do componente. http://www.planalto.gov.br/ccivil_03/leis/l9609.htm (2012) http://www.inpi.gov.br/ (2012) 16 de 69 Aspectos legais no desenvolvimento de soluções de TI Para questões internacionais, os regimentos jurídicos para a proteção de software para o direito de autor são estabelecidas pela Convenção de Berna e pelas disposições do Acordo sobre Aspectos da Propriedade Intelectual Relativos ao Comércio - TRIPS. 2.9. Tecnologia Ou ainda chamado de cenário tecnológico, são as definições das questões arquiteturais, tais como linguagem a ser utilizada, qual banco de dados usar, arranjos de rede como balanceamento e IPs virtuais, os servidores e dispositivos de armazenamento e cópia de segurança. A partir dos pré-requisitos levantados, estima-se os softwares envolvidos na parte de desenvolvimento, como IDE (Integrated Development Envirounment) para a linguagem escolhida, gerenciamento de configuração, controle de versionamento e controle de qualidade; e na parte de infraestrutura, como sistema operacional do(s) servidor(es), se este(s) servidor(es) será(ão) virtualizado(s) deverá constar ainda o software de virtualização, e ainda os softwares de servidor de aplicação, onde rodará o sistema a se desenvolver em caso de web, e banco de dados, além dos preparativos de rede, seja para ambientes de teste e homologação, no caso de desenvolvimento apenas, e produção, para o caso de também hospedagem. Para todos estes componentes existem licenças, que podem precisar ser adquiridas para o desenvolvimento do projeto. Alguns destes softwares podem já ter sido adquiridas para outros projetos, porém podem ter limitações relacionados a quantidades de acessos e/ou produtos instalados. De qualquer forma, estes pontos são relevantes no aspecto financeiro, o que foge do escopo deste artigo, que foca apenas nos aspectos legais, buscando levantar os pontos de preocupação sob o ponto de vista jurídico do processo. 2.10. Virtualização Da Wikipédia1: A Virtualização de Servidor é a técnica de execução de um ou mais servidores virtuais sobre um servidor físico. Permite maior densidade de utilização de recursos (hardware, espaço e etc), enquanto permite que isolamento e segurança sejam mantidos. Com a Virtualização de Servidor, conquista-se os seguintes benefícios: • 1 Consolidação de Servidores: Muitos servidores implantados pelas organizações são subutilizados. Implantando múltiplos http://pt.wikipedia.org/wiki/Virtualiza%C3%A7%C3%A3o_de_servidor (2012) 17 de 69 Aspectos legais no desenvolvimento de soluções de TI servidores em um numero menor de servidores físicos, é possível aumentar a utilização média de recursos dos servidores, enquanto diminui o numero de máquinas. Na maioria das organizações, consolidar os servidores com Virtualização de Servidores diminui os gastos com eletricidade, consumo de espaço e etc. 18 de 69 • Isolamento de Aplicação ou Serviço: Com a criação de máquinas virtuais isoladas, a execução dos serviços e aplicações é feita em Sistemas Operacionais diferentes. Isso previne que uma aplicação afete outra quando você faz uma atualização ou mudança. Isso se torna melhor do que executar diversas aplicações em um único sistema operacional. • Implantação de Servidores Simplificada: Com a criação de imagens padrão de servidores virtuais, você pode implantar máquinas virtuais de forma muito mais simples. Como você está implementando um servidor virtual, você também não precisa fazer aquisição de um novo Hardware, e localizar espaço e energia elétrica em um Data Center. (Observando sempre a utilização de recursos compartilhados dentro de um Host, você pode ter que adquirir um novo hardware para executar suas máquinas virtuais) • Maior disponibilidade de Aplicações e Serviços: Como a aplicação ou serviço não está mais conectado diretamente a um hardware específico, é mais fácil assegurar disponibilidade e recuperação. Algumas tecnologias permitem, inclusive, migrar uma máquina virtual de um host a outro host sem interrupção da máquina virtual. • Múltiplos Sistemas Operacionais podem ser executados uma única plataforma: Com a virtualização, é possível utilizar diferentes Sistemas Operacionais em um único servidor físico, como Linux, Mac OSX, e até mesmo Windows Server 2003 e Windows Server 2008. Aspectos legais no desenvolvimento de soluções de TI 3. Breve classificação de software Classificar software não é uma tarefa trivial, pois ao tentar criar uma classificação empregamos características comuns, ou ainda, as coisas que podemos fazer ou não com o software, ações estas devidamente registradas em suas respectivas licenças. Desta forma, classificar software e classificar licença de software é praticamente a mesma coisa, uma vez que se começamos a citar características como direito a usar ou direito a ter acesso aos códigos-fonte, existirão cláusulas no contrato de uso ou licença. Para iniciar a entender as diferenças dos softwares sob o critério de licenciamento, isto é, fazendo uma análise com base na experiência do usuário final e comparando as principais diferenças a partir de uma análise simples considerando sua restritividade, ou ainda, uma classificação a partir do que se pode fazer ou não, coisas como usar em um ou mais computadores, distribuir, estudar (com ou sem engenharia reversa), modificar, vender, entre outras ações. Na figura abaixo apresenta os principais tipos de licenças, e em seguida, discutido com mais detalhes. Figura 3: Classificação básica de licenças de software 19 de 69 Aspectos legais no desenvolvimento de soluções de TI 3.1. Licenças fechadas Estas são do tipo mais conhecidas na atualidade, uma vez que a ideia de vender softwares surgiu na década de 1980, principalmente depois do acordo entre IBM, com seu Personal Computer - PC, e a Microsoft, com o DOS, seu sistema operacional, o qual ficou acordado a venda de licenças de uso do sistema operacional para cada computador vendido. Antes disso, o software era compartilhado entre os programadores, de uma maneira informal. Dentre estas modalidades de licenças, elas tem em comum o fato de o usuário poder utilizar o software como foi distribuído, deixando claro o copyright e direitos autorais, não sendo permitido outras ações. Vejamos mais detalhes das principais. 3.1.1. Adware Adware é qualquer programa que executa automaticamente, mostra ou baixa publicidade, vírus, trojan, worm, spyware, keylogger, hijaker, rootkit e splitoff para o computador depois de instalado ou enquanto a aplicação é executada. Alguns programas shareware são também adware, e neles os usuários têm a opção de pagar por uma versão registrada, que normalmente elimina os anúncios. Figura 4: Gerenciador de downloads FlashGot Figura 5: Navegador Web Opera 3.1.2. Freeware ou Gratuito Software gratuito ou freeware é qualquer programa de computador cuja utilização não implica o pagamento de licenças de uso ou royalties. É importante não confundir o free de freeware com o free de free software, pois no primeiro uso o significado é de gratuito, e no segundo de livre. Um programa licenciado como freeware não é necessariamente um software livre, pode não ter código aberto e pode acompanhar licenças restritivas, limitando o uso comercial, a redistribuição não autorizada, a modificação não autorizada ou outros tipos de restrições. 20 de 69 Aspectos legais no desenvolvimento de soluções de TI Figura 6: Leitor de PDF Acrobat Reader Figura 7: Plugin web Oracle Java 3.1.3. Instalado em um computador ou OEM1 OEM é a sigla para Original Equipment Manufacturer. Com este modo de aquisição, você tem software ou produtos da Microsoft pré-instalados quando você compra um computador ou um servidor. Assim, o hardware é fornecido com uma ou mais licenças individuais. Atenção: esta licença está ligada à máquina e não pode ser reinstalada em outra máquina. É necessário comprar outra licença quando o computador ou o servidor é substituído. Figura 8: Sistema Operacional Windows 7 3.1.4. Por volume2 ou integrador São destinadas a empresas que requerem o uso de cinco ou mais cópias, cabendo a fornecedora oferecer contratos de licenciamento chamados licenciamento por volume. Programas de licença por volume são feitos para corresponder às necessidades da organização. Através de programas de licenciamento por volume as empresas, da pequena empresa a multinacionais, podem obter licenças para o software de forma simples e econômica. Basicamente, é possível discutir valores mais acessíveis em função do volume. Existem ainda a opção de comprar ou alugar licenças. Figura 9: Anti-vírus McAfee Figura 10: Suíte Microsoft Office 1 2 http://msdn.microsoft.com/pt-br/ee872872 (2012) http://msdn.microsoft.com/pt-br/ee872872 (2012) 21 de 69 Aspectos legais no desenvolvimento de soluções de TI 3.1.5. Software como Serviço (SaaS) Software como serviço, do inglês Software as a Service, é uma forma de distribuição e comercialização de software. No modelo SaaS o fornecedor do software se responsabiliza por toda a estrutura necessária para a disponibilização do sistema (servidores, conectividade, cuidados com segurança da informação) e o cliente utiliza o software via internet, pagando um valor recorrente pelo uso. Não é necessariamente a tecnologia utilizada que determina o modelo. O software utilizado pode ser 100% web (utilizado via navegador) ou pode ter alguma instalação local (como antivírus ou sistemas de backup). A característica principal é a não aquisição das licenças (mas sim pagar pelo uso como um "serviço") e a responsabilidade do fornecedor pela disponibilização do sistema em produção. Figura 11: Microsoft Office 365 Figura 12: Webmail Gmail 3.1.6. Shareware (ou Trial) Shareware é um programa de computador disponibilizado gratuitamente, porém com algum tipo de limitação. Sharewares geralmente possuem funcionalidades limitadas e/ou tempo de uso gratuito do software limitado, após o fim do qual o usuário é requisitado a pagar para acessar a funcionalidade completa ou poder continuar utilizando o programa. Um shareware está protegido por direitos autorais. O freeware diferencia-se do shareware, no qual o usuário deve pagar para acessar a funcionalidade completa ou tem um tempo limitado de uso gratuito. Figura 13: Compactador WinRAR 22 de 69 Figura 14: Segurança Web Symantec Aspectos legais no desenvolvimento de soluções de TI 3.1.7. Licenciamento Único, de Caixa ou FPP (Full Packaged Product)1 Essas licenças trazem em uma única caixa a licença, os direitos de uso / instalação e documentação (daí seu nome). A instalação deste software é permitida em um único computador. Licenças na caixa são adequadas para microempresas, com um a três computadores e estão disponíveis em vários distribuidores especializados, lojas online ou varejo. Figura 15: Desenho vetorial CorelDRAW Figura 16: Edição de imagens PhotoShop 3.2. Estudos de casos para licenças fechadas Para a maioria dos usuários estes são programas corriqueiros, acessíveis em qualquer vendedor ambulante com preços módicos, no entanto, ao comprarem por estes meios caracterizam uma série de irregularidades, sendo a pirataria a mais comum. Vejamos com mais cuidado alguns outros casos para entender melhor estes problemas. • Distribuição de software Em situações em que uma empresa, seja pública ou privada, disponibiliza documentos em formato PDF, geralmente coloca um link para baixar o Acrobat Reader. Se o link enviar o usuário para o portal web da empresa, como a Adobe no caso do Acrobat Reader, para baixar o programa está tudo certo, no entanto, algumas empresas disponibilizam o programa a partir do seu próprio portal, o que, pela licença, não é permitido. Em situação similar, também ocorre um erro muito comum no desenvolvimento de software. Independente de sua função, geralmente é necessário um banco de dados para armazenar os dados, então o desenvolvedor distribui dentro do instalador do seu programa um instalador do banco de dados, que caracteriza o mesmo exemplo anterior, gerando um litígio pois a licença não permite tal ação; • 1 Uso em mais de um computador http://msdn.microsoft.com/pt-br/ee872872 (2012) 23 de 69 Aspectos legais no desenvolvimento de soluções de TI Em softwares de licença única, como o nome diz, é para um único computador. A instalação em um segundo equipamento com o mesmo número de série constitui em quebra do contrato. De forma análoga, existem programas que são gratuitos para o primeiro equipamento doméstico, mas ao instalar em um segundo, este precisa de uma licença adquirida (geralmente comprada). É um erro comum do usuário apenas ler o “gratuito” e distribuir instalações. O problema se agrava quando se trata de micro e pequenos negócios; • Estudos e divulgação de informações Este talvez seja o mais problemático de todos, pois refere-se ao trabalho do usuário, que pode encontrar problemas no uso (bugs) ou estudar o funcionamento do programa de computador, sendo que estas ações são proibidas pela licença. O melhor exemplo para este tipo de problema aconteceu em 2001 com o programador de computadores Dmitri Sklyarov, cidadão russo que na época tinha 26 anos, era aluno de doutorado em computação na prestigiosa Bauman Moscow State Technical University, pai de dois filhos, descobriu uma falha na segurança do software para livros eletrônicos da empresa Adobe Systems. Depois de várias tentativas de comunicar a falha para a referida empresa, resolveu publicar na internet suas descobertas e alertas, e foi convidado para o mais famoso evento de segurança, o DefCon, no EUA. Após apresentar sua palestra, foi preso pelo FBI por quebrar as cláusulas de Figura 17: Dmitry Sklyarov (2010) sigilo sobre informações dos e-books da Adobe. Este tipo de tratamento de problemas do software efetivamente não ajudam ao usuário final em ter produtos mais seguros. Não adianta ocultar os problemas, esperando que não sejam vistos, e sim o contrário, podendo contar com uma infraestrutura de segurança ampla e o apoio do coletivo. Para mais detalhes da história de Sklyarov, acesse estas referências1 2; 3.3. Software proprietário vs Software privativo 1 2 http://www.cic.unb.br/docentes/pedro/sd.php (2012) http://www.numaboa.com.br/informatica/aprendiz/mundo-hacker/799-Dmitry-Sklyarov (2012) 24 de 69 Aspectos legais no desenvolvimento de soluções de TI Um erro comum de interpretação foi que os softwares de licenças pagas fossem denominados de proprietário, dando a ilusão que as demais licenças não tenham propriedade, que é um conceito errado. Na verdade, todo e qualquer software tem um ou mais proprietários. No caso de empresas que desenvolvem software, o direito patrimonial pertence a esta, e o direito moral, aos desenvolvedores, empregados desta empresa. No caso de projetos de código aberto ou software livre, o direito patrimonial e moral de cada contribuição é respeitada e passível de rastreabilidade, ou seja, é possível determinar cada trecho do código e seu respectivo autor desde a sua criação (quando existe uma adoção disciplinada de gestão de configuração). Roberto Brenlla, da Espanha, apresentou uma definição nova e, na minha opinião mais acertada, que foi do termo software privativo, isto é, aqueles que a licença priva o usuário de uma série de ações, tais como distribuir, estudar, modificar ou mesmo usar sob determinadas condições. Desta forma, todas as referências a softwares com licenças fechadas serão referenciados como software privativo. 3.4. Licenças compartilhadas Código compartilhado é um termo genérico que cobre alguns dos mecanismos legais da Microsoft para o software com distribuição do código-fonte. A Iniciativa de “Código Compartilhado da Microsoft” 1, lançado em Maio de 2001, inclui um espectro de tecnologias e licenças. A maioria de suas ofertas de código-fonte estão disponíveis para descarga após os critérios de elegibilidade estarem cumpridos. As licenças associadas ao conjunto de ofertas de código fechado podem permitir apenas visualização do código para referência ou permitem que ele seja modificado e redistribuído, tanto para fins comerciais e não comerciais. Para os analistas da área, esta foi uma estratégia adotada pela Microsoft para combater os projetos de código aberto (open source), pois uma das principais argumentações para a adoção destas soluções em relação às pagas era a questão de auditoria de código, ou seja, que com soluções pagas geralmente usamos como está, uma “caixa preta”, que não sabemos o que faz ou como faz, ou ainda se faz apenas o que se propõe. 3.5. Licenças abertas Diferente das outras duas modalidades, fechada e compartilhada, as licenças abertas são assim chamadas por disponibilizar acesso aos arquivos fontes sem restrições, o que permitem uma série de outras ações além de usar o 1 http://www.microsoft.com/resources/sharedsource/default.mspx (2012) 25 de 69 Aspectos legais no desenvolvimento de soluções de TI programa. Apesar disto, pode-se fazer uma subclassificação em relação a questões filosóficas e de propriedade. Vejamos com mais cuidado cada grupo. 3.5.1. Software livre Da Wikipédia1: Software livre, segundo a definição criada pela Free Software Foundation, é qualquer programa de computador que pode ser usado, copiado, estudado e redistribuído sem restrições. O conceito de livre se opõe ao conceito de software restritivo (software proprietário), mas não ao software que é vendido almejando lucro (software comercial). A maneira usual de distribuição de software livre é anexar a este uma licença de software livre, e tornar o código-fonte do programa disponível. Um software é considerado como livre quando atende aos quatro tipos de liberdade para os usuários do software definidas pela Free Software Foundation: Liberdade 0: A liberdade para executar o programa, para qualquer propósito; Liberdade 1: A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades; Liberdade 2: A liberdade de redistribuir, cópias de modo que você possa ajudar ao seu próximo; Liberdade 3: A liberdade de modificar o programa e liberar estas modificações, de modo que toda a comunidade se beneficie. Acesso ao código-fonte é um pré-requisito para as liberdades de 1,2,3. A liberdade de executar o programa significa que qualquer tipo de pessoa física ou jurídica pode utilizar o software em quantas máquinas quiser, em qualquer tipo de sistema computacional, para qualquer tipo de trabalho ou atividade, sem nenhuma restrição imposta pelo fornecedor. A liberdade de redistribuir o programa executável (em formato binário) necessariamente inclui a obrigatoriedade de disponibilizar seus códigos-fonte. Caso o software venha a ser modificado e o autor da modificação queira distribuí-lo, gratuitamente ou não, será também obrigatória a distribuição do código-fonte das modificações, desde que elas venham a integrar o programa. Não é necessária a autorização do autor ou do distribuidor do software para 1 http://pt.wikipedia.org/wiki/Software_livre (2012) 26 de 69 Aspectos legais no desenvolvimento de soluções de TI que ele possa ser redistribuído, já que as licenças de software livre assim o permitem. Para que seja possível estudar ou modificar o software (para uso particular ou para distribuir) é necessário ter acesso ao código-fonte. Por isso a disponibilidade desses arquivos é pré-requisito para a liberdade do software. Cada licença determina como será feito o fornecimento do código-fonte para distribuições típicas, como é o caso de distribuições em mídia portátil somente com os códigos binários já finalizados (sem o fonte). Para que essas liberdades sejam reais, elas devem ser irrevogáveis. Caso o desenvolvedor do software tenha o poder de revogar a licença, o software não é livre. As licenças de software livre podem ser divididas em duas subcategorias: protecionistas totais e parciais. 3.5.1.1. Protecionistas Totais De acordo com Vanessa Sabino 1, explica que as licenças protecionistas totais determinam que qualquer trabalho derivado precisa ser distribuído sob os mesmos termos da licença original. Isso também é chamado de copyleƒt, um termo criado pela Free Software Foundation2. A ideia do copyleƒt é dar permissão a todos para executar, copiar, modificar e distribuir versões modificadas do programa, mas impedir que sejam adicionadas restrições a essas versões redistribuídas. Tal ideia visa fortalecer o software livre como um todo, não permitindo que melhorias do software sejam retiradas do alcance da comunidade. O resultado esperado é que a quantidade de software livre aumente cada vez mais, beneficiando todos os envolvidos na cadeia produtiva do software livre. Além disso, a reciprocidade contribui para manter a compatibilidade entre diversas versões de um determinado sistema, dado que quando novas funcionalidades são feitas de forma fechada, fica mais difícil replicá-las nas diferentes versões. Por outro lado, tal abordagem também sofre críticas de dentro da comunidade, pois o software licenciado nesse modelo acaba ficando de certa forma isolado dos demais devido a incompatibilidades nas licenças. Na pratica, software licenciado sob o modelo permissivo, em geral, pode ser incorporado em software licenciado como recíproco, já que licenças permissivas permitem a redistribuição sob outros termos, inclusive os de licenças protecionistas. Porém, o inverso não é verdadeiro e, assim, software sob licenças protecionistas não pode ser utilizado em vários projetos de software livre que usam alguma outra licença. Desta forma, as licenças do tipo protecionistas totais também são referenciadas como licenças “viróticas”, pois para poder ser distribuída como 1 2 http://ccsl.ime.usp.br/files/relatorio-licencas.pdf (2012) http://www.gnu.org/copyleft (2012) 27 de 69 Aspectos legais no desenvolvimento de soluções de TI componente principal ou parte de uma solução maior, as demais partes também precisam ou trocar a licença para GPL (caso os demais componentes estejam licenciados sob outra licença), ou não deixar a cargo do usuário buscar os demais componentes, já que a licença não permite a distribuição conjunta. São bons exemplos deste tipo de licença a GPL 1 – General Public License (Licença Pública Geral2), nas suas versões 2.0 e 3.0, e a licença AGPL 3 – Affero General Public License (Licença Pública Geral Affero4). A GNU GPL, ou simplesmente GPL, é a designação da licença para software livre idealizada por Richard Matthew Stallman em 1989, no âmbito do projeto GNU da Free Software Foundation (FSF). A licença GPL foi originalmente publicada em Janeiro de 1989. No entanto, passado pouco tempo, ficou claro que o texto da licença comportava vários problemas, pelo que em Junho de 1991 foi publicada a GPL versão 2, sendo ao mesmo tempo introduzida uma nova licença LGPL. Em 2005, Stallman anunciou que estava preparando uma nova versão da licença em conjunto com Eben Moglen. Essa nova versão, foi chamada de GPLv3 e o primeiro esboço foi publicado em 16 de Janeiro de 2006, sendo a versão final lançada em 29 de Junho de 2007. A GNU Affero General Public License (Licença Pública Geral Affero GNU), ou simplesmente GNU Affero GPL, é uma licença de software livre publicada em 2007 pela Free Software Foundation. A GNU AGPL tem o propósito de ser uma licença minimamente modificada da GNU GPL e atender as necessidades de fornecer liberdade em softwares como serviços (SaaS, Software as a Service), ou seja, aqueles os quais você não tem acesso direto ao binário/código-objeto. 1 2 3 4 http://pt.wikipedia.org/wiki/GNU_General_Public_License (2012) http://www.gnu.org/copyleft/gpl.txt (2012) http://pt.wikipedia.org/wiki/GNU_AGPL (2012) http://www.gnu.org/licenses/agpl-3.0.txt (2012) 28 de 69 Aspectos legais no desenvolvimento de soluções de TI Abaixo, alguns exemplos que utilizam esta licença. Exemplos de GPL Figura 18: Media Player VLC Exemplos de AGPL Figura 19: S. Operacional Linux Figura 20: Ambiente de Desenvolvimento Launchpad Figura 21: Conector de agenda e e-mail Funambol 3.5.1.2. Protetivas Parciais Também citado no trabalho de Vanessa Sabino, as licenças protecionistas parciais, também chamadas de copyleft fraco, determinam que modificações do trabalho coberto por elas devem ser disponibilizadas sob a mesma licença. Porém, quando o trabalho é utilizado apenas como um componente de outro projeto, esse projeto não precisa estar sob a mesma licença. Alguns autores, como Simon Phipps, utilizam a denominação licença baseada em arquivo para essa categoria, enquanto as protecionistas totais seriam licenças baseadas em projeto. Considera-se que essas licenças são as que melhor equilibram dois importantes fatores do modelo de software livre: atração de interesse para a comunidade e força e longevidade do código-fonte disponível. Ao mesmo tempo que essas licenças permitem que os desenvolvedores utilizem o trabalho para criar software que será licenciado como preferirem, modificações e melhorias feitas ao próprio trabalho são obrigatoriamente disponibilizadas à comunidade. Alguns advogados, como Lawrence Rosen 1, defendem que o uso de bibliotecas que são apenas ligadas a um novo software não caracterizaria um trabalho derivado, mas sim um trabalho coletivo. Ele faz uma analogia a páginas na web, em que cada uma é um trabalho com direito autoral individual, apesar de muitas vezes estariam presentes ligações de uma para a outra. Segundo ele, esse tipo de relação consiste em uni trabalho coletivo. Portanto, nesse cenário, mesmo uni software sob uma licença protecionista total poderia ser usado como biblioteca de outro que estaria sob outra licença. Porém, no caso brasileiro, a Lei de Direito Autoral é mais específica e impõe maiores limitações. Dessa forma, o uso de licenças protecionistas parciais fazse necessário em casos nos quais o autor quer garantir que o desenvolvimento da biblioteca seja feito no modelo de software livre mas ao mesmo tempo quer permitir seu uso em projetos que utilizam outras licenças. 1 http://www.rosenlaw.com/Rosen_frontmatter.pdf (2012) 29 de 69 Aspectos legais no desenvolvimento de soluções de TI São exemplos de licenças deste tipo a LGPL 1 – Lesser General Public License (Licença Pública Geral Menor2) e a MPL3 – Mozilla Public License (Licença Pública Mozilla4). A GNU Lesser General Public License, escrita por Richard Stallman e Eben Moglen em 1991 (e atualizada em 1999), é uma licença de software livre aprovada pela FSF e escrita como um meio-termo entre a GPL e licenças mais permissivas, tais como a licença BSD e a licença MIT. A principal diferença entre a GPL e a LGPL é que esta permite também a associação com programas que não estejam sob as licenças GPL ou LGPL, incluindo Software privativo. Outra diferença significativa é que os trabalhos derivados, que não estão sob a LGPL, devem estar disponíveis em bibliotecas. A LGPL acrescenta restrições ao código-fonte desenvolvido, mas não exige que seja aplicada a outros softwares que empreguem seu código, desde que este esteja disponível na forma de uma biblioteca. Logo, inclusão do código desenvolvido sob a LGPL como parte integrante de um software só é permitida se o código-fonte for liberado. A LGPL visa à regulamentação do uso de bibliotecas de código, mas pode ser empregada na regulamentação de aplicações, como OpenOffice.org e Mozilla. Outra característica importante é a possibilidade de conversão de apenas uma parte de um código sob a LGPL em outro, sob a GPL (ver seção 3 da licença). Já a licença pública Mozilla (Mozilla Public License, em inglês) é uma licença para software livre de código aberto. A advogada Mitchell Baker criou a versão 1.0 quando trabalhava na empresa Netscape Communications Corporation e a versão 1.1 quando trabalha na Mozilla Foundation. O seu principal uso é na suíte de software Mozilla e nos softwares relacionados a ela. Ela foi adaptada por outras organizações, como no caso da licença Common Development and Distribution License do sistema operativo OpenSolaris (uma versão de código aberto do sistema Solaris 10) da Sun Microsystems. A licença é similar ao copyleft, mas não é tão rígida quanto à distribuição de trabalhos derivados. Especificamente, o código-fonte copiado ou alterado sob a licença Mozilla deve continuar sob esta licença. Porém, este código pode ser combinado em um programa com arquivos proprietários. Além disso, é possível criar uma versão proprietária de um código sob a licença Mozilla. Por exemplo, o navegador Netscape 6 e 7 são versões proprietárias das versões correspondentes da suíte Mozilla. Adicionalmente, os pacotes de software da Mozilla Foundation incluem logos, ícones, a palavra "Mozilla", e referências a outras marcas. A fundação utiliza a seguinte política para restringir a redistribuição: a obrigação de inclusão de citação do autor, de forma similar à obnoxious advertising clause (cláusula de propaganda detestável, como era chamada pelo projeto GNU) das 1 2 3 4 http://pt.wikipedia.org/wiki/LGPL (2012) http://www.gnu.org/copyleft/lesser.txt (2012) http://pt.wikipedia.org/wiki/Licen%C3%A7a_p%C3%BAblica_Mozilla (2012) http://www.mozilla.org/MPL/1.1/index.txt (2012) 30 de 69 Aspectos legais no desenvolvimento de soluções de TI primeiras versões da licença BSD; e a impossibilidade de menção quando determinado projeto é derivado de qualquer versão da suíte Mozilla, do Firefox ou softwares relacionados. A suíte Mozilla e o Firefox será "relicenciada" sob a licença GNU General Public License (GPL), pela licença GNU Lesser General Public License (LGPL) como também pela licença Mozilla. No final o código terá uma licença tripla, ou seja, serão licenciados sob a licença Mozilla, GPL e LGPL. Recentemente, a MPL foi revisada, contando com a interação de vários notórios participantes do código aberto e software livre, como a Free Software Foundation, que apoiou o seu lançamento 1, atingindo sua versão 2.02, e como foi informado no portal Br-Linux3: “descrita como similar em espírito às versões anteriores (que além de tornarem livre o software a que se referirem, também disponibilizam formalmente a permissão de uso e redistribuição das tecnologias patenteadas relacionadas a ele e de propriedade do licenciador) mas mais curta, melhor e mais compatível com outras licenças livres e de código aberto”. Exemplo disso está explicado no FAQ do licenciamento 4, onde aborda tanto o uso da MPL 2.0 com licenças como a GPL, do universo do software livre, quanto licenças como Apache e BSD, do universo do código aberto. Além disto, a Mozilla Foundation disponibilizou o processo de revisão 5, apontando as modificações, apesar de recomendarem ler a versão final do que buscar entender estas modificações. Abaixo, alguns exemplos de software com licenças protecionistas parciais. Exemplos de LGPL Figura 22: Framework Demoiselle 1 2 3 4 5 Exemplos de MPL Figura 23: Corretor Gramatical CoGroo Figura 24: Navegador Web Mozilla Firefox Figura 25: Sistema de bilhetagem Bugzilla http://www.fsf.org/blogs/licensing/mpl-2.0-release (2012) http://www.mozilla.org/MPL/2.0/index.txt (2012) http://br-linux.org/2012/mpl-2-0-nova-versao-da-mozilla-public-license/ (2012) http://www.mozilla.org/MPL/2.0/FAQ.html (2012) http://www.mozilla.org/MPL/2.0/differences.html (2012) 31 de 69 Aspectos legais no desenvolvimento de soluções de TI 3.5.2. Software público Da Instrução Normativa 01/2011, do Governo Brasileiro: (...) Art. 2° O Software Público Brasileiro é um tipo específico de software que adota um modelo de licença livre para o código-fonte, a proteção da identidade original entre o seu nome, marca, código-fonte, documentação e outros artefatos relacionados por meio do modelo de Licença Pública de Marca – LPM e é disponibilizado na internet em ambiente virtual público, sendo tratado como um benefício para a sociedade, o mercado e o cidadão, conforme as regras e requisitos previstos no Capítulo II desta Instrução Normativa. A principal diferença entre o software publico e o software livre, do tipo recíproco total, é a adição de um cuidado adicional em relação a marca através da LPM, da mesma forma que a GPL busca garantir as mesmas liberdades para o o código. Figura 26: Gerenciador de inventário Cacic Figura 27: Sistema de gestão Prefeitura Livre 3.5.3. Código aberto Da Wikipedia1: O termo código aberto, ou open source em inglês, foi criado pela OSI (Open Source Initiative) e refere-se a software também conhecido por software livre. Genericamente trata-se de software que respeita as quatro liberdades definidas pela Free Software Foundation, compartilhadas também pelo projeto Debian, nomeadamente em "Debian Free Software Guidelines (DFSG)". Qualquer licença de software livre é também uma licença de código aberto, a diferença entre as duas nomenclaturas reside essencialmente na sua apresentação. Enquanto a FSF usa o termo "Software Livre" envolta de um discurso baseado em questões éticas, direitos e liberdade, a OSI usa o termo "Código Aberto" sob um ponto de vista puramente técnico, evitando (propositadamente) 1 http://pt.wikipedia.org/wiki/Open_Source (2012) 32 de 69 Aspectos legais no desenvolvimento de soluções de TI questões éticas. Esta nomenclatura e discurso foram cunhados por Eric Raymond e outros fundadores da OSI com o objetivo de apresentar o software livre a empresas de uma forma mais comercial evitando o discurso ético. Sabino1 também comenta que as licenças de código aberto também são conhecidas como “licenças permissivas”, ou também chamadas de licenças acadêmicas por alguns autores, como Rosen2 e Laurent3, em referência as origens das licenças BSD (University of California, Berkeley) e MIT (Massachusetts Institute of Technology), impõem poucas restrições as pessoas que obtém o produto. Muitas vezes, tais licenças são usadas em projetos de pesquisa de universidades, que servem como prova de conceito de alguma tecnologia que poderá ser explorada comercialmente no futuro. No caso das licenças permissivas, não é feita nenhuma restrição ao licenciamento de trabalhos derivados, estes podendo inclusive serem distribuídos sob uma licença fechada. Licenças permissivas são uma ótima opção para projetos cujo objetivo e atingir o maior número de pessoas, não importando se na forma de software livre ou de software fechado. Temos vários exemplos desse modelo no BSD Unix, que continha o software de TCP /IP que hoje é usado na maior parte das implementações desse protocolo, incluindo a da Microsoft 3. Outro exemplo é o BIND, Berkeley Internet Name Daemon, cuja implementação livre é até hoje usada nos principais servidores de DNS, apesar de haver também varias implementações fechadas. Segundo Laurent 3, ha bilhões de dólares em atividade econômica associada apenas com a pilha de software para Internet originalmente liberada sob a licença BSD. Alguns argumentam que o uso desse tipo de licença não incentiva o modelo de software livre, pois empresas se aproveitam da comunidade para desenvolver software que sera fechado. Porém, quando são usadas licenças permissivas, em geral os autores estão cientes dessa possibilidade e não veem isso como um problema. Um caso conhecido em que, de fato, os autores se arrependeram da licença que adotaram é o do Kerberos, desenvolvido no MIT, que posteriormente foi adotado pela Microsoft, que desenvolveu extensões fechadas 3. Mas o mais provável, caso a licença não permitisse isso, seria que a Microsoft adotasse algum outro sistema de segurança e o Kerberos não se tornaria tão popular. Por outro lado, em alguns casos, não é necessário que haja restrições na licença para garantir a continuidade do modelo de desenvolvimento aberto, como no exemplo do servidor Apache. Duas características explicam o domínio do servidor Web livre no mercado, segundo Laurent3: a marca forte, cujo uso é 1 2 3 http://ccsl.ime.usp.br/files/relatorio-licencas.pdf (2012) http://www.rosenlaw.com/Rosen_frontmatter.pdf (2012) http://oreilly.com/openbook/osfreesoft/book/index.html (2012) 33 de 69 Aspectos legais no desenvolvimento de soluções de TI protegido pela própria licença do Apache, e a importância da conformidade com os padrões, que evita a disseminação de extensões fechadas. Além destes exemplos, podemos analisar também a Apple, que desenvolveu o Mac OSX, sistema operacional baseado no FreeBSD, para seus computadores Mac. O Mac OSX é um excelente exemplo de fechamento de código. Ainda dentro do universo de desenvolvimento de software da Apple está o CUPS Common Unix Printing System, é o principal sistema de impressão para os *NIX em geral, incluindo o próprio OSX, que continua seu desenvolvimento de forma aberta e colaborativa. Exemplos BSD Exemplos MIT Figura 28: Vídeos em formato MTK Matroska Figura 29: Linguagem de programação Lua Figura 31: Sistema Operacional FreeBSD Figura 32: Programas em um pendrive PortableApps Exemplos Apache Figura 30: Servidor Web Apache Figura 33: Ferramenta de compilação java ANT 3.5.4. Domínio público Da Wikipedia1: Domínio público, no Direito da Propriedade Intelectual, é o conjunto de obras culturais, de tecnologia ou de informação (livros, artigos, obras musicais, invenções e outros) de livre uso comercial, porque não submetidas a direitos patrimoniais exclusivos de alguma pessoa física ou jurídica, mas que podem ser objeto de direitos morais. 1 http://pt.wikipedia.org/wiki/Dom%C3%ADnio_p%C3%BAblico (2012) 34 de 69 Aspectos legais no desenvolvimento de soluções de TI O domínio público está listado aqui e poderia ser usado para licenciar qualquer software, apesar de não ser usual, no entanto, ele é importante no momento em que entendemos que um software não é constituído exclusivamente de código, precisando conter imagens, sons, vídeos e textos, e estes sim precisam estar devidamente licenciados, mesmo que como domínio público, para não trazer problemas futuros. 3.6. Novos modelos de negócios com licenças abertas Tal como existem mudanças consideráveis entre as licenças fechadas e abertas, estas diferenças influenciaram no modelo mercadológico, fazendo surgir novos modelos de negócios, com funcionalidades diferenciadas. Dentre as principais diferenças está a migração do negócio do software como produto desenvolvido para o serviço, seja como suporte ao usuário, seja no desenvolvimento corretivo ou evolutivo deste produto. Vejamos alguns modelos conhecidos. 3.6.1. Subscrição de suporte Este é um exemplo comum no universo de sistema operacional para servidores, com empresas como Red Hat ou Novell para suas distribuições Linux personalizadas. Apesar de o Linux ser distribuído gratuitamente, não existe um trabalho de homologação junto as diversos fabricantes de hardware, e é isso que estas empresas fazem, isto é, fazem testes exaustivos de compatibilidade com os principais fabricantes, sejam de servidores, unidades de armazenamento (storages), unidades para cópias de segurança (backup), entre outros. Essa mesma homologação pode ocorrer com a parte de software, como banco de dados, servidores de autenticação, firewall, entre outros. Nestes contratos de subscrição, a empresa garante a compatibilidade com os produtos homologados, desenvolvem novos produtos, dão suporte de configuração, além de manter uma estrutura de desenvolvimento para resolver novos problemas no período determinado no contrato. É gerado um número de série para garantir a quantidade de instalações e monetizar sobre estes números. 3.6.2. Contrato de instalação, configuração e suporte Outras empresas optaram por um processo um pouco diferente, aonde se preocupa em entender a solução e vender os serviços de instalação, 35 de 69 Aspectos legais no desenvolvimento de soluções de TI configuração e suporte. Isso acontece para casos como a distribuição Debian, que não conta com uma empresa comercial por trás do produto, mas sim um grande ecossistema capaz de dar suporte a este produto, desde pequenas empresas até grandes do TI mundial, como a HP. Outro segmento que também acompanha essa estratégia são as de mídias web, onde são escolhidos CMSs (Content Management System) abertos, como Drupal, Wordpress ou Joomla, e as empresas personalizam de acordo com as demandas do cliente. 3.6.3. Estratégia de bilicenciamento Alguns projetos que nascem de empresas geralmente preferem a ideia de liberar seu produto sob duas licenças, uma fechada e outra aberta, ou ainda sob uma licença fechada com exceções FOSS (Free and Open Source Software). Nesta estratégia se procura popularizar o uso do software através das comunidades de código aberto, e quando se passa a empregar para negócios comerciais (ou não-abertas), passa a ser tratado como um software fechado, com necessidade de licenças, compra e restrições regidas no seu contrato. O exemplo mais comum deste tipo de licenciamento é o banco de dados MySQL, hoje pertencente a Oracle. Quando este banco de dados foi criado, era fechado até receber propostas de investimentos, somente com a condição de abrir o código-fonte. Após a abertura do código, o banco se popularizou muito na internet e valorizou a ponto de chamar a atenção dos grandes jogadores mundiais de TI, sendo comprado pela Sun Microsystems. Hoje, pertence à Oracle (pela aquisição da Sun Microsystems por esta) e está licenciada sob uma licença fechada com cláusula de exceção FOSS 1. Resumidamente, caso sua aplicação/projeto esteja licenciado sob uma das licenças na página, reconhecidas pela OSI, o banco de dados MySQL se comportará como GLP, caso contrário, é uma aplicação paga, como qualquer outra. 3.6.4. Segmentação em comunitário e empresarial Esta estratégia consiste em desenvolver um núcleo (core) sob uma licença aberta, em um ambiente de desenvolvimento colaborativo e compartilhado, com um conjunto de funcionalidades básicos dentro do segmento que pretende atender, e outra parte fechada, com funcionalidades adicionais estratégicas. Assim, o desenvolvedor consegue promoção e difusão do seu produto de maneira rápida, conquistando espaço no segmento de mercado que se propõe, 1 http://mysql.com/about/legal/licensing/foss-exception/ (2012) 36 de 69 Aspectos legais no desenvolvimento de soluções de TI aderência de força voluntária disposta a ajudar a desenvolver, testar e avaliar o produto, além de manter o domínio do desenvolvimento e o conhecimento interno (know-how), dando uma posição privilegiada na integração destas novas funcionalidades. São vários os exemplos que seguem esta estratégia de mercado, como o gerenciador de arquivos Alfresco1 ou o sistema de inteligência de negócios (businness inteligence – BI) Pentaho2. 3.6.5. Comercialização de produtos abertos - permissivos Produtos abertos - permissivos são aqueles licenciados sob licenças Apache, MIT, BSD ou similares. Nestas licenças, como explicado anteriormente, é necessário respeitar a referência, permitindo a substituição da licença por uma fechada. São exemplos deste tipo de uso os produtos da EnterpriseDB 3, uma empresa que se especializou em evoluir o banco de dados PostgreSQL, que tem uma licença derivada da BSD também chamada Licença PostgreSQL 4, que permite a empresa desenvolver ferramentas ao redor do SGBD, além de ajudar no desenvolvimento do núcleo, tornando a ferramenta ainda mais robusta. 1 2 3 4 http://alfresco.com/ (2012) http://www.pentaho.com/ (2012) http://www.enterprisedb.com/ (2012) http://www.opensource.org/licenses/postgresql (2012) 37 de 69 Aspectos legais no desenvolvimento de soluções de TI 4. Análise dos pontos legais no desenvolvimento Agora, com os conceitos uniformizados, uma visão geral sobre os tipos de software e alguns exemplos para correlacionarmos com nosso uso do dia a dia, temos condições de avaliar melhor o processo de desenvolvimento. Para isso, vamos considerar o esquema da figura abaixo para entender cada parte do processo e os cuidados legais necessários no processo. Figura 34: Visão geral do desenvolvimento - do pedido ao uso O processo começa com uma demanda do cliente, que estabelece o contato com a fornecedora de soluções de TIC que, neste caso, é a empresa que desenvolverá o software. Nesta etapa é definido o escopo do projeto para poder mensurar e orçar para o cliente. O próximo passo é estimar os custo do desenvolvimento e, se for o caso, hospedagem, para poder gerar um orçamento para apresentar ao cliente. Neste ponto, para poder orçar os custos de desenvolvimento e, se for o caso, de hospedagem, a empresa tem recursos para parametrizar alguns pontos na hora de formar a tabela de custos do projeto. Pode acontecer que a empresa já tenha adquirido licenças de uso, no caso de produtos pagos, que podem ser reutilizadas ou utilizadas em paralelo nestes novos projetos. Porém, em caso de ambiente de produção, a forma como for pensada a implantação destas novas soluções podem precisar novas licenças, assim que é importante uma 38 de 69 Aspectos legais no desenvolvimento de soluções de TI análise das compras e contratos vigentes junto aos fornecedores, atendando aos limites destes. Iniciado o processo de desenvolvimento, isto é, fechado o contrato e estabelecido o cronograma de trabalho com as etapas bem definidas, inicia-se a primeira, que é o cenário tecnológico e levantamento de requisitos, necessário para o desenvolvimento. No cenário tecnológico será a etapa para avaliar qual será a linguagem de programação a ser empregada, sistema de gerenciamento de banco de dados a ser usado e em que ambiente operacional (sistema operacional e ativos de rede) são necessários para este escopo. A partir do momento que se definem estes elementos é possível que possam alterar os custos do projeto, pois se considerar a troca de banco de dados de fechado para aberto irá impactar no custo final do produto. É possível oferecer alternativas já no orçamento, demonstrando os custos de desenvolvimento e as opções por utilizar determinadas tecnologias. Outro ponto que deve ser analisado, e por vezes escapa da análise das compras e contratos dos produtos empregados é a questão da virtualização. Resumidamente, virtualização é a capacidade de criarmos vários servidores virtuais (VM – virtual machine) sobre um servidor real. Assim, quando instalamos um software em um servidor virtual, obedece as mesmas regras de um servidor real, isto é, pode acontecer de termos licenças apenas para instalar em uma máquina, e distribuirmos o software em várias VMs, o que pode caracterizar cópias ilegais, dependendo das cláusulas da licença. Já no levantamento de requisitos é onde o cliente especifica as regras de negócios e o funcionamento e comportamento esperado pelo sistema a ser desenvolvido. Nesta etapa, pode ser utilizado desde papel e caneta, editor de texto ou um sistema de requisitos. Se utilizarmos software precisamos considerar as licenças de uso. Ainda nos requisitos, um importante requisito é definir a licença que o software a ser desenvolvido será disponibilizado. Caso não seja especificado nenhuma licença, por padrão se adota o direito de propriedade (copyright) do contratante. Na sequência, é necessário criar os ambientes de desenvolvimento e homologação, contendo os servidores de aplicação e banco de dados. É necessário verificar o ambiente de desenvolvimento dos programadores, o processo de gerenciamento de projeto pela empresa e gerenciamento de configuração pela fábrica de software (setor operacional de desenvolvimento). Com todos os detalhes acertados, inicia-se o processo de codificação. No desenvolvimento do software em si, além de questões de licenças do ferramental empregado, existem ainda questões trabalhistas, de uso de obras, de infraestrutura, bibliotecas e outras envolvidas que requerem uma atenção sob o aspecto jurídico. 39 de 69 Aspectos legais no desenvolvimento de soluções de TI Uma vez que o software foi desenvolvido, testado e homologado, vem a entrega deste software, que dá abertura para duas possibilidades: 1) Desenvolvimento – a empresa pode somente desenvolver o software e a sua implementação pode ocorrer em um ambiente do cliente ou contratado de terceiros para hospedar esta solução, cabendo a empresa entregar o produto devidamente licenciado e, opcionalmente, registrado; ou 2) Desenvolvimento e hospedagem – além de desenvolver, ainda oferece o serviço de hospedagem, contendo mais um ambiente, o de produção, onde será disponibilizada a solução para o cliente, precisando ser devidamente licenciado e, opcionalmente, registrado. Assim, vamos avaliar cada etapa do processo. 4.1. Cenário tecnológico De posse do escopo inicial do cliente, os setores de arquitetura e projetos da empresa vão avaliar as necessidades e estimar os recursos de infraestrutura, tecnologia, pessoas, entre outros, para atender a demanda. Elementos que se podem definir nesta etapa que impactam diretamente no processo é a definição da linguagem de programação, banco de dados e infraestrutura necessária. Isso acontece porque dependendo da estruturação e alinhamentos da empresa podem representar custos de aquisição de licenças em várias partes futuras. Vejamos alguns exemplos. Cenário Linguagem tecnológico Banco de dados Ambiente 1 Asp.NET MS SQL Server MS Server + IIS + Servidor ASP 2 Java Oracle Linux + WebLogic 3 PHP MySQL Linux + Apache + Mod PHP 4 Python PostgreSQL Linux + Apache + Mod Python Tabela 1: Diferentes cenários tecnológicos 1. Cenário tecnológico 1 A linguagem de programação Asp.NET, impacta em compra de licenças das ferramentas de desenvolvimento e no servidor de aplicação Asp.NET. O banco de dados geralmente apresenta correlação entre linguagem, isto é, o fornecedor privilegia ou dá mais atenção a determinadas soluções que, no caso do Asp.NET é para o SQL Server, também da Microsoft. Isso 40 de 69 Aspectos legais no desenvolvimento de soluções de TI trás a necessidade de adquirir licenças para o banco também. E este ambiente é projetado para rodar em servidores com Windows Server, também com necessidade de aquisição de licenças. 2. Cenário tecnológico 2 A linguagem Java dispõe de boas ferramentas de desenvolvimento, tanto sob licenças abertas quanto fechadas. No caso das ferramentas abertas, basicamente é baixar, instalar e usar, enquanto que nas fechadas dependem de aquisição de licenças. A definição do banco de dados Oracle envolve a aquisição de licenças próprias, apesar de versões gratuitas para desenvolvedores, não seria possível fazer testes de carga, por exemplo, fundamental para grandes clientes. E, geralmente ao usar um banco de dados fechado, influi no processo de desenvolvimento para se utilizar funções específicas que dão pequenos ganhos, mas que dificultam uma possível troca futura de tecnologia. Na escolha destes dois elementos geralmente ocorre uma influencia na escolha do servidor de aplicação. No exemplo, foi listado um de licença fechada, precisando ser adquirida a sua licença. No particular do Java em si, hoje existe uma incerteza sobre seu futuro. A especificação do Java cabe a JCP – Java Community Process, responsável por definir os padrões do Java, no entanto, a principal máquina virtual do mercado é o da Oracle, atualmente gratuito. 3. Cenário tecnológico 3 A linguagem PHP é uma das linguagens de script mais usadas na internet, com seu interpretador livre, desenvolvido como código aberto. Roda com os principais bancos de dados do mercado, tanto fechados quanto abertos, e tem bom suporte nos principais servidores web para servidor de aplicação. Neste exemplo, o banco de dados empregado foi o MySQL, atualmente de propriedade da Oracle, sob um bi licenciamento. Neste licenciamento, basicamente diz que se aplicação está especificamente sob a licença GPL, o banco se comporta como software livre, caso contrário, é uma licença comercial. Seu uso deve ser observado com cautela. 4. Cenário tecnológico 4 A linguagem é o Python, linguagem de script aberta, uma das principais pelo Google para seu motor de busca, e-mail, entre outros. Com conexão com os principais bancos de dados aberto, não tem problemas de conexão com o PostgreSQL e os *NIX (o Linux entre eles) é o ambiente 41 de 69 Aspectos legais no desenvolvimento de soluções de TI nativo, bem como o servidor de aplicação Apache + Mod Python. Todas as ferramentas relacionadas com desenvolvimento estão presentes sob licenças abertas, principalmente, e fechadas. Em qualquer cenário apresentado são necessários ferramentas de desenvolvimento, ambientes de desenvolvimento e homologação, gestão de projeto e configuração. Como exemplificado nos diferentes cenários, a escolha da tecnologia pode afetar a questão de custos para o desenvolvimento da solução que, aparentemente, não afetam as questões jurídicas. No entanto, passam a afetar caso a empresa use softwares desrespeitando suas licenças, que no caso de softwares de licença fechada se traduzem na compra do montante correspondente para atender plenamente as demandas. Veremos o desdobramento destas questões nos tópicos adiante. 4.2. Início dos trabalhos Uma vez completado o processo de venda, geralmente com a assinatura do contrato, inicia-se o trabalho em si. O contrato em si, em geral, consta os ditames tradicionais garantidos pela legislação, tais como cronograma aproximado, com abertura de ajustes deste em comum acordo, os valores com forma de pagamento determinada, e cuidados relacionados a questões de custos trabalhistas da contratada e isenção da contratante. Não é normal encontrar detalhamento a respeito de licenciamento do código a ser desenvolvido, uso de componentes de terceiros, propriedade intelectual, condições de disponibilização e reuso (caso a licença elegida assim o permita), entre outros aspectos. Fechada esta etapa, começa o trabalho organizacional dentro da empresa, como criação do projeto com a definição das suas etapas. Neste ponto, é importante utilizar uma ferramenta de gestão de projetos, que pode ser desde uma planilha até um sistema web de gestão de projetos. A tendência é trabalhar com o conceito de nuvem, utilizando sistemas multiusuários e acessíveis a partir de qualquer navegador. Existem excelentes ferramentas tanto fechadas, que dependem de compra de licenças de uso para dar acesso interativo das equipes ao sistema, quanto abertas, que não tem custos. Uma leitura comum encontrada no mercado é pensar que ao se contratar soluções fechadas os custos estão exclusivamente sobre a parte de licenças, porém custos adicionais de recursos de terceiros e personalizações (customizações) do sistema para adequação das necessidades da empresa elevam consideravelmente o custo. Usando a mesma linha de pensamento, as soluções abertas também tem seus custos de implantação, passando pelas mesmas questões de custos nos quesitos de personalização, 42 de 69 Aspectos legais no desenvolvimento de soluções de TI seja de terceiros/fornecedores, seja das equipes internas que trabalharão neste processo dentro da empresa. A principal diferença nos dois modelos está, sem sombra de dúvidas, na questão financeira, mas não só ela. Para modificar um software, precisa haver as permissões de modificação devidamente registradas na licença e/ou contrato. No caso de soluções abertas, essas permissões já estão previamente garantidas. Ainda dentro do processo de preparação, após a abertura do projeto propriamente dito, sob uma visão de PMBOK 1, existe a necessidade de se fazer o ambiente de desenvolvimento, que segue uma linha semelhante à gestão de projetos, mas com um foco para o desenvolvimento de software em todas suas etapas. São duas normas ISO/IEC que oferecem um norteamento para isso: ISO/IEC 122072 e 155043 (SPICE). Neste ambiente de desenvolvimento, precisamos um software para documentar os requisitos e documentação. Pode ser usado desde um editor de texto até sistemas de documentação. Precisamos também um sistema de versionamento, responsável por fazer a rastreabilidade de todo o desenvolvimento, entendendo por rastreabilidade a capacidade de identificar quando, quem e o que cada pessoa da equipe fez. Podemos ter ainda um sistema de bilhetagem, no qual será registrado todos os erros do sistema (bugs), novas funcionalidades desejadas (wishlist), controle de qualidade (quality assurance), testes e homologação. Vejamos um exemplo de ambiente fechado e aberto, tendo em mente que é possível ter um ambiente misto, com elementos de um ou outro lado. Funcionalidade Exemplo Fechado ® Gestão de projetos Microsoft Project (desktop), CA Clarity® (web), ProjectControl® (web), etc. Exemplo Aberto OpenProj (desktop), dotProject (web), LibrePlan (web), etc. Documentação Microsoft Office® (desktop), Caliber (web), etc. OpenOffice.org (desktop), Trac (wiki/web), MediaWiki (web), etc. Gerencia de versionamento MS SourceSafe®, Borland StarTeam®, etc. CVS, SVN, Git, etc. Sistema de bilhetagem IBM ClearQuest®, MS Dynamics CRM®, etc. Redmine, MantisBT, Trac, etc. Tabela 2: Produtos por funcionalidade 1 2 3 http://pt.wikipedia.org/wiki/Project_Management_Body_of_Knowledge (2012) http://pt.wikipedia.org/wiki/ISO/IEC_12207 (2012) http://pt.wikipedia.org/wiki/ISO/IEC_15504 (2012) 43 de 69 Aspectos legais no desenvolvimento de soluções de TI A Wikipedia oferece uma boa listagem de comparação de gestão de projetos 1, controle de versão2 e sistema de bilhetagem3. Estes sistemas podem ter maior ou menor compatibilidade entre si em termo de integração e licenças. Além destes recursos, é necessário definir a ferramenta de desenvolvimento (IDE - Integrated development environment), onde o desenvolvedor irá desenvolver o código propriamente dito, os ambientes de desenvolvimento, geralmente criado na própria estação de trabalho do desenvolvedor com uma versão reduzida do ambiente de produção, o de teste, onde serão disponibilizados e integrados todo o código desenvolvido pelo time de desenvolvimento, e o de homologação, onde os analistas de negócio e até mesmo o cliente irá avaliar o desenvolvimento do sistema. São nestes ambientes, de desenvolvimento, de teste e homologação, que será necessário o servidor de aplicação e banco de dados, especificados pela arquitetura. Considerando os cenários tecnológicos iniciais, podemos gerar uma tabela simplificada comparativa. Func. Cenário Tec. 1 Cenário Tec. 2 SO estação Windows® Windows® IDE MS Visual Studio® Borland Jbuilder® ® Linux Red Hat ® Cenário Tec. 3 Cenário Tec. 4 Windows®/Linux Windows®/Linux Eclipse Eclipse/Aptana Linux Linux PostgreSQL SO servidor Windows Banco de dados MS SQL Server® Oracle® Oracle® MySQL® Servidor de aplicação MS IIS® + ASP .Net® Oracle® OAS Apache + Mod PHP Zope Tabela 3: Comparativo dos cenários tecnológicos 4.3. Requisitos A etapa de requisitos consiste basicamente em entender as regras de negócio do cliente, documentar sob determinada metodologia para que possa ser encaminhada para a área de desenvolvimento da empresa. Nesta etapa é importante ter claro o tipo de licenciamento a ser usado, para a devida inserção no código-fonte, isto é, inserir no cabeçalho de cada arquivo do sistema desenvolvido informações a respeito da autoria e licença utilizada. Para ilustrar, segue um exemplo de cabeçalho. 1 2 3 http://en.wikipedia.org/wiki/Comparison_of_project_management_software (2012) http://en.wikipedia.org/wiki/Comparison_of_revision_control_software (2012) http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems (2012) 44 de 69 Aspectos legais no desenvolvimento de soluções de TI /************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" (…) Código 1: Arquivo $SRCROOT/main/sw/source/core/text/blink.cxx do Apache OpenOffice 4.4. Desenvolvimento Uma vez que os desenvolvedores recebem os requisitos inicia-se a criação das tabelas dos bancos de dados, papel destinado ao arquiteto de dados. É criado um script de criação das tabelas e atribuições necessárias para a parte de dados. Uma vez criada a base de dados inicial, os programadores começam a construir a aplicação em si dentro de suas IDEs, sempre integrados com um controle de versionamento. De acordo que aplicação é construída em suas respectivas estações de trabalho, periodicamente é feito um teste integrando todos os códigos no ambiente de testes, verificando como está funcionando a integração de código dos diversos integrantes da equipe. Neste ambiente de testes existe um conjunto de configurações, tanto do servidor de aplicação quanto do banco de dados, que precisa ser replicado nos ambientes de homologação e produção (quando for o caso). Geralmente se empregam frameworks para tornar a codificação mais produtiva, isto é, pedaços de código com funções pré-determinadas, de forma que o desenvolvedor apenas passe alguns parâmetros para esse framework e este desenvolva uma série de ações, de maneira simplificada. Além dos frameworks, é possível que sejam empregadas bibliotecas de terceiros, isto é, componentes de códigos que fazem determinada função, como por exemplo gerar relatórios. O desenvolvedor terá que se preocupar apenas em levantar os dados e um modelo de apresentação e enviar para esta biblioteca, e a biblioteca se encarrega de criar os arquivos PDFs, com a apresentação desejada. 45 de 69 Aspectos legais no desenvolvimento de soluções de TI Durante o desenvolvimento é comum também o uso de imagens, principalmente em botões ou links, como o de um disquete para indicar a ação de salvar, ou de uma impressora, para chamar a interface de impressão, ou ainda uma bandeira para definir o idioma da aplicação. Ainda para a interação com o usuário pode ser necessário o uso de sons na forma de chamadas, voz ou música, ou uma forma mais, através de animações ou vídeos. De acordo que o sistema evolui é necessário desenvolver uma documentação de apoio, que pode ser um sistema de ajuda, manuais, cursos em EAD ou outra forma, que possa dar apoio ao usuário em usar e desenvolver seus trabalhos no sistema criado. Então, com esta rápida descrição da etapa de desenvolvimento do sistema, podemos começar a analisar os cuidados para as questões jurídicas envolvidos. 4.4.1. Ambientes Quando falamos dos servidores de aplicação e banco de dados, estamos falando de sistema operacional (SO)l do(s) servidor(es) que vai recebê-los, software de serviço de aplicação, de banco de dados e de softwares adicionais que sejam necessários. Além disso, existe a parte de infraestrutura de rede, como firewalls, que também tem questões de licenças a serem consideradas. No caso do sistema operacional é o software mínimo para operar o computador. Em caso de SOs Windows ®, Mac OSX ou Solaris, estão sob licenças fechadas, já o Linux está sob uma licença aberta, sem custos, com empresas que oferecem contratos de suporte ao ambiente (quando utiliza-se o Linux personalizado e mantido por eles), como é o caso da Red Hat e Canonical, e livres como o Debian. Neste ponto, a escolha de determinado sistema operacional precisará de licenças compradas, contrato de suporte ou licenças abertas. Já para o banco de dados também é necessário um cuidado com as licenças, especialmente para o MySQL. Este banco de dados possui uma licença comercial com uma exceção FOSS (Free and Open Source Software) que permite que os componentes da MySQL sejam usadas como licença aberta somente quando a licença do software em desenvolvimento esteja sob uma das licenças abertas listada em sua página. Na prática, se está desenvolvendo um software comercial em licença não-aberta, terá que comprar os componentes da MySQL Inc. Ainda vendo os softwares relacionados ao ambiente, a documentação de cada software envolvido (servidor web, aplicação, banco de dados, etc.) é de responsabilidade dos respectivos desenvolvedores/ fornecedores, mas o conjunto de informações de configuração empregados para o desenvolvimento 46 de 69 Aspectos legais no desenvolvimento de soluções de TI da solução vendida, em si, é parte da documentação do projeto, e precisa estar presente na documentação final e sob um licenciamento correto, geralmente seguindo o mesmo licenciamento do desenvolvimento contratado. A estrutura, ou esquema, de banco de dados em si é outro objeto de licenciamento em si. Não estamos falando dos dados que serão armazenados, mas a forma que será armazenado. Fazendo uma analogia, os dados são a carga de um contêiner, o esquema de dados é o contêiner em si, e o banco de dados é o depósito onde estão todos os contêineres armazenados. 4.4.2. Elementos externos Podemos considerar elementos externos as bibliotecas, framework, documentação, e sons, vídeos e imagens. Vejamos cada um com mais cuidado. 4.4.2.1. Bibliotecas As bibliotecas são códigos reutilizáveis organizado e simplificado para facilitar a vida do programador. Um exemplo que ajuda a entender seu funcionamento é uma biblioteca1 para validar CPF em Java. 1 http://javafree.uol.com.br/artigo/851371/Validacao-de-CPF.html (2012) 47 de 69 Aspectos legais no desenvolvimento de soluções de TI /* ****************************************************** * Código Original: * Autor: Allan Peron * ****************************************************** * Modificações feitas para fácil aplicação */ package br.com.javafree.wscpf; public abstract class CPF extends Object { private static String calcDigVerif(String num) { Integer primDig, segDig; int soma = 0, peso = 10; for (int i = 0; i < num.length(); i++) soma += Integer.parseInt(num.substring(i, i + 1)) * peso--; if (soma % 11 == 0 | soma % 11 == 1) primDig = new Integer(0); else primDig = new Integer(11 - (soma % 11)); soma = 0; peso = 11; for (int i = 0; i < num.length(); i++) soma += Integer.parseInt(num.substring(i, i + 1)) * peso--; soma += primDig.intValue() * 2; if (soma % 11 == 0 | soma % 11 == 1) segDig = new Integer(0); else segDig = new Integer(11 - (soma % 11)); return primDig.toString() + segDig.toString(); } private static int calcSegDig(String cpf, int primDig) { int soma = 0, peso = 11; for (int i = 0; i < cpf.length(); i++) soma += Integer.parseInt(cpf.substring(i, i + 1)) * peso--; soma += primDig * 2; if (soma % 11 == 0 | soma % 11 == 1) return 0; else return 11 - (soma % 11); } public static String geraCPF() { String iniciais = ""; Integer numero; for (int i = 0; i < 9; i++) { numero = new Integer((int) (Math.random() * 10)); iniciais += numero.toString(); } return iniciais + calcDigVerif(iniciais); } public static boolean validaCPF(String cpf) { if (cpf.length() != 11) return false; } String numDig = cpf.substring(0, 9); return calcDigVerif(numDig).equals(cpf.substring(9, 11)); } Código 2: Código Java para validação de CPF Praticamente em qualquer sistema comercial tem a necessidade de se ter o CPF1 dos clientes e é necessário fazer a validação deste para evitar erros futuros no sistema contábil. Não há necessidade de reescrever o código cada vez que se inicia um novo projeto, podendo simplesmente reaproveitar o código, ou seja, fazer uma biblioteca na linguagem usada e reaproveitá-la em novos projetos. Por isso é importante ter um licenciamento claro da biblioteca e do projeto em si. 1 http://javafree.uol.com.br/artigo/851371/Validacao-de-CPF.html (2012) 48 de 69 Aspectos legais no desenvolvimento de soluções de TI Um exemplo prático em relação a licenciamento é o desenvolvimento de um sistema e utilizar bibliotecas fechadas. Ao utilizar uma biblioteca fechada é importante analisar se o licenciamento permite a distribuição da mesma ou se é necessário adquirir licenças adicionais. Em caso de uso destas bibliotecas sem a devida regularização de uso pode acarretar em litígio contra a empresa. Outro exemplo é o uso de bibliotecas sob licenças abertas do tipo protecionistas totais, como a GPL, que proíbem a sua distribuição com códigos sob outros tipos de licenças. Na prática, se você utiliza uma biblioteca GPL, terá que entregar o seu código sem a(s) referida(s) biblioteca(s) e dar as orientações para que o cliente (ou quem irá instalar o sistema) baixe as bibliotecas e as disponibilize no ambiente de produção. 4.4.2.2. Framework Framework é similar a biblioteca no sentido de facilitar o trabalho do programador. Se desenvolvermos um sistema web em Java, conectando em um banco de dados Oracle®, geralmente utilizamos bibliotecas para conexão entre o sistema e o banco de dados. No entanto, caso queiramos trocar de banco de dados será necessário um retrabalho no código (refatoração) para adaptar ao novo banco. Agora, se empregamos um framework, ele pode oferecer uma abstração, facilitando uma troca de tecnologia como esta, pois o framework já contempla esse processo dentro dele. No entanto, como código, está sob uma determinada licença, como é o caso do Demoiselle1, framework desenvolvido pelo SERPRO – Serviço Federal de Processamento de Dados – para atender suas demandas de desenvolvimento em Java. Este framework foi desenvolvido sob a licença LGPL (GNU Library or Lesser General Public License v. 3.0). Esta licença é adequada tanto para desenvolvimento de sistemas com licenças fechadas quanto abertas. O uso de frameworks fechados entram na mesma situação das bibliotecas, precisando analisar a licença e regularizar o uso. Em caso de não se encontrar o licenciamento, segue a regra padrão de licença fechada. 4.4.2.3. Documentação A documentação, tal como sons e imagens, difere de código, inclusive no licenciamento. Para textos, sons e imagens existem uma gama de licenças mais adequadas do que as licenças de software, como é o caso da Creative 1 http://www.frameworkdemoiselle.gov.br/ (2012) 49 de 69 Aspectos legais no desenvolvimento de soluções de TI Commons2. Isso acontece porque as licenças se referem a código-fonte ou objetos relacionados a engenharia de software. Da Wikipédia, As licenças Creative Commons foram idealizadas para permitir a padronização de declarações de vontade no tocante ao licenciamento e distribuição de conteúdos culturais em geral (textos, músicas, imagens, filmes e outros), de modo a facilitar seu compartilhamento e recombinação, sob a égide de uma filosofia copyleft. As licenças criadas pela organização permitem que detentores de copyright (isto é, autores de conteúdos ou detentores de direitos sobre estes) possam abdicar em favor do público de alguns dos seus direitos inerentes às suas criações, ainda que retenham outros desses direitos. Isso pode ser operacionalizado por meio de um sortimento de módulos-padrão de licenças, que resultam em licenças prontas para serem agregadas aos conteúdos que se deseje licenciar. Os módulos oferecidos podem resultar em licenças que vão desde uma abdicação quase total, pelo licenciante, dos seus direitos patrimoniais, até opções mais restritivas, que vedam a possibilidade de criação de obras derivadas ou o uso comercial dos materiais licenciados. A documentação em si pode estar em arquivos, como manuais em formato PDF, ou em wikis, sistema colaborativo de conteúdo na web. Independente da forma que sejam disponibilizados precisam ter seu licenciamento claro. De acordo a FSF 1 – Free Software Foundation – em uma tradução livre: Posso usar a GPL para algo diferente software? Você pode aplicar a GPL para qualquer tipo de trabalho, desde que é claro o que constitui o "código-fonte" para o trabalho. O GPL define isso como a forma preferida do trabalho para fazer alterações nele. No entanto, para manuais e livros didáticos, ou mais genericamente qualquer tipo de trabalho que se destina a ensinar um assunto, recomendamos o uso do GFDL – Gnu Free Documentation License - e não a GPL. Já do portal Creative Commons2: Posso aplicar uma licença Creative Commons de software? Nós não recomendamos. As licenças Creative Commons não devem ser usadas para software. Nós encorajamos você a usar uma das muito boas licenças de software disponíveis. Recomendamos as licenças disponibilizadas pela Free Software Foundation ou listados no Open 2 1 2 http://www.creativecommons.org.br/ (2012) http://www.gnu.org/licenses/gpl-faq.html#GPLOtherThanSoftware (2012) http://wiki.creativecommons.org/FAQ#Can_I_apply_a_Creative_Commons_license_to_softwar e.3F (2012) 50 de 69 Aspectos legais no desenvolvimento de soluções de TI Source Initiative. Ao contrário das nossas licenças, que não fazem menção ao código-fonte ou objeto, essas licenças existentes foram projetadas especificamente para uso com software. Além disso, nossas licenças não são compatíveis com a GPL, a licença de software mais utilizadas gratuitamente. 4.4.2.4. Sons, vídeos e imagens Da mesma forma que a documentação, esses elementos estão muito mais associados a criações artísticas do que com software, de forma que se enquadram na Lei de Direitos Autorais (Lei nº 9.610/98). O uso de elementos com direito de propriedade de terceiros pode trazer um grande problema para o cliente e a empresa. Isso pode acontecer quando acontece o uso de imagens de pessoas, como fotos, sem os devidos cuidados jurídicos, como cessão de direitos de imagem para a empresa, ou ainda o uso de cliparts, sons, animações, etc., com os mesmos cuidados ou a compra dos direitos de reprodução. Uma saída para este tipo de problema é o uso destes elementos em Domínio Público ou licença Creative Commons com permissão de trabalhos derivados ou uso comercial. Atualmente as principais ferramentas de busca, como o Google ou o Yahoo!, contam com filtros de busca por licenciamento, o que ajuda muito na busca. Outro repositório excelente é o projeto OpenCliparts.org, que serve de repositório de trabalhos gráficos vetoriais em Domínio Público. Além disso, temos ainda o portal governamental Domínio Público 1. 4.4.3. Declaração da licença Este é um ponto importante do processo de geração do código pois a licença e autoria devem estar presentes em cada arquivo-fonte. A inserção destes dados pode ser feito durante o desenvolvimento, através do uso de modelos (templates) com o cabeçalho pronto, ou ao final dele, adicionando em todos. Cada licenciamento tem uma forma de especificar este cabeçalho. Vejamos a seguir alguns dos principais. 1 http://www.dominiopublico.gov.br (2012) 51 de 69 Aspectos legais no desenvolvimento de soluções de TI /************************************************************************* <nome da empresa ou cliente> - Todos os direitos reservados (c) ano * Licença, referência adequada ao projeto ou arquivo da biblioteca ou * ADOBEa CONFIDENTIAL módulo que pertence. * __________________ Descrição do que ela contém. * * [2002] - [2007] Adobe Systems Incorporated História * All Rights Reserved. ------* 2010/01/08 - Versão inicial - Programador criação. 2010/01/09 * NOTICE: All information contained herein is, and remains Programador - Alterar descrição da versão. * the property of Adobe aSystems Incorporated and its suppliers, * if any. The intellectual- and technical concepts contained 2010/01/10 - Programador Alterar a descrição da versão. * herein are proprietary to Adobe Systems Incorporated * and its suppliers and3:may be covered by U.S. and Foreign Patents, Código Cabeçalho de licença fechada genérica * patents in process, and are protected by trade secret or copyright law. * Dissemination of this information or reproduction of this material * is strictly forbidden unless prior written permission is obtained * from Adobe Systems Incorporated. */ Código 4: Cabeçalho de licença fechada da Adobe Copyright (C) <year> <copyright holders> /* +-----------------------------------------------------------------------+ Permission | program/include/rcube_browser.php is hereby granted, free of charge, to any person obtaining a copy | of | this software and associated documentation files (the "Software"), to deal | in | the ThisSoftware file is without part of restriction, the Roundcubeincluding Webmail client without limitation the rights | to | use, Copyright copy,(C) modify, 2007-2009, merge,The publish, Roundcube distribute, Dev Teamsublicense, and/or sell| copies | Licensed of the under Software, the GNU and GPL to permit persons to whom the Software is | furnished | to do so, subject to the following conditions: | | PURPOSE: | The | above Classcopyright representing notice theand client thisbrowser's permission properties notice shall be included in | all copies | or substantial portions of the Software. | +-----------------------------------------------------------------------+ THE | Author: SOFTWARE Thomas IS PROVIDED Bruederli "AS<[email protected]> IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | IMPLIED, +-----------------------------------------------------------------------+ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS $Id$ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE */ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER INCabeçalho AN ACTION de OF licença CONTRACT, TORT OR OTHERWISE, ARISING FROM, Código 5: aberta recíproca total - GPL OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Código 4: Cabeçalho de licença aberta permissiva – MIT 52 de 69 Aspectos legais no desenvolvimento de soluções de TI /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -** * ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is JSIRC Library. * * The Initial Developer of the Original Code is * New Dimensions Consulting, Inc. * Portions created by the Initial Developer are Copyright (C) 1999 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Robert Ginda, [email protected], original author * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ Código 5: Cabeçalho de licença aberta protecionista parcial - MPL Por fim, com todos estes elementos explanados e discutidos, podemos ter uma visão geral do processo sob o aspecto legal, resultado na figura abaixo. Figura 35: Licenças presentes em um sistema computacional 53 de 69 Aspectos legais no desenvolvimento de soluções de TI 4.5. Registro Este é um passo opcional. O registro de software pode ser considerado um processo junto a um fiel depositário, que oferece o recurso de carimbo de tempo sobre o mesmo. No Brasil, este processo fica a cargo do INPI – Instituto Nacional de Propriedade Industrial. O processo é relativamente simples, precisando gerar um arquivo em PDF de todo o código, gravar em um CD e entregar este junto com a documentação solicitada para o processo, devidamente descrito no portal da instituição 1. Além do registro junto ao INPI tem outras vantagens, como o registro de marca, por exemplo. Em caso de litígio, será esse carimbo de tempo a prova da originalidade. No entanto, este não é o único processo aceito, podendo ser gravado um CD, lacrado e postado para si mesmo, usando o carimbo de tempo do Correios como prova temporal. No caso de querer liberar o software como um software público, o registro no INPI é parte obrigatória do processo. 4.6. Relações trabalhistas Existe uma confusão quando tratamos dos direitos sobre o software, que precisa de uma atenção especial para entender e diferenciar os diferentes elementos que compõe este assunto. Uma coisa é o conhecimento do programador sobre determinada tecnologia para desenvolver um algoritmo que atenda as necessidades do cliente sob determinadas regras de negócio ou intrínsecas ao ramo de negócio do cliente. Outra coisa é o produto gerado a partir da união da necessidade do cliente, o conhecimento do programador, e sua condição de empregado da empresa que o contratou para desenvolver esta solução. Sobre o conhecimento do programador, este é intrínseco a pessoa e/ou empregado, pois o mesmo evolui no seu conhecimento através da experiência, investimento em cursos, eventos, do dia a dia, etc. Neste foco, o direito de autoria no desenvolvimento de uma solução de TI é intransferível e pertence a ele. Já pelo lado da empresa, é esta que faz a ponte entre o cliente e o desenvolvedor, ou seja, é ela que traz o conhecimento, necessidades e regras de negócios do cliente ou demanda do mercado para a produção da solução, além de também ser responsável pela gestão do projeto/contrato, de integrar diferentes profissionais de áreas distintas, bem como profissionais de diferentes áreas dentro do TI (como arquitetura, configuração, desenvolvimento, qualidade, testes, especificação), criando uma coletividade 1 http://www.inpi.gov.br/index.php/programa-de-computador/guia-basico (2012) 54 de 69 Aspectos legais no desenvolvimento de soluções de TI no desenvolvimento da solução. Além disso, esses profissionais são contratados, seja por terceirização, seja por vínculo trabalhista, de forma que estão sendo contratados para empregar esse conhecimento no desenvolvimento da solução, portanto garantindo a ela o direito de propriedade ou copyright sobre o software desenvolvido em caso de se ter desenvolvido a partir de uma demanda de mercado. Isso acontece principalmente para os “softwares de prateleira”. Geralmente em caso de contratos trabalhistas também estão inclusas cláusulas de confidencialidade entre a empresa e o funcionário. Para o caso de terceirizações, as regras devem estar devidamente registradas no contrato entre as partes. E por fim, pelo lado do cliente existe o conhecimento do negócio, a metodologia e a aplicabilidade deste conhecimento, que pode ser um diferencial comercial e/ou estratégico desta frente ao mercado. Neste cenário, geralmente é requerido um termo de confidencialidade entre cliente e empresa. No caso de contratos de desenvolvimento entre cliente e empresa, o direito de propriedade pertence ao cliente. De acordo Tarcisio Queiroz Cerqueira1, programas de computador são considerados, mundialmente, de maneira razoavelmente unânime, a despeito de seu reconhecido caráter utilitário e das leis específicas que regulamentam sua propriedade e comércio, bens intelectuais, equiparados a obras literárias, científicas e artísticas, tais como livros, pinturas, música, fotografias, filmes, gravações sonoras, etc.. Os programas são regulados e protegidos pelas leis da Propriedade Intelectual. A Lei nº 9.610/98, nova Lei dos Direitos Autorais, regulamenta os direitos autorais no Brasil, em acordo com a Constituição Federal e com a Convenção de Berna, estabelecida em 1886, na Suíça, para consolidar as regras mundiais acerca do "copyright" e dos direitos de autor, atualizada de tempos em tempos e administrada pela OMPI/WIPO Organização Mundial da Propriedade Intelectual/World Intellectual Property Organization, órgão da ONU, com sede em Genebra, da qual a quase totalidade dos países do mundo é signatária. A Convenção de Berna foi concluída em 9 de setembro de 1886, revista em Paris em 24/07/1971 e, através do Decreto nº 75.699, de 06/05/75, do então Presidente Ernesto Geisel, publicado no D.O.U. de 09/05/75, passou a viger no Brasil. A Convenção de Berna encontra-se por detrás de qualquer demanda judicial envolvendo "pirataria" de software, em qualquer país do mundo. Antes de abordar direitos e deveres relacionados com software ou com dados ou bases de dados ou informações, deve-se considerar que a Lei dos Direitos Autorais (Lei nº 9.610, de 19/02/98) estabelece, em seu Art. 4º, que "...Interpretam-se restritivamente os negócios jurídicos sobre os direitos autorais", ou seja, não cabem, quanto aos direitos e deveres relacionados com as obras protegidas, quaisquer interpretações legais extensivas ou com auxílio de outro diploma legal, comparações ou adaptações: 1 http://www.tarcisio.adv.br/novo/index.php?pagina=lerartigo.php&id=24 (2012) 55 de 69 Aspectos legais no desenvolvimento de soluções de TI vale apenas e unicamente o texto da lei, em sentido estrito. A Lei do Software (Lei 9.609/98), que remete a proteção dos programas para os Direitos Autorais (Lei 9.610/98) é clara em seu Art. 5º e define: software desenvolvido pelo empregado pertence ao empregador. A determinação é justa, desde que o empregado tenha sido designado para a função e receba remuneração para tal. De acordo com a lei, somente a empresa poderá declarar-se titular dos direitos de propriedade sobre programas de computador, o que inclui os direitos de usar, licenciar, distribuir, vender, transferir ou comercializar de qualquer forma ou modo. A legislação e a doutrina entendem que a remuneração pelo salário remunera o empregado pelo seu trabalho, que, no caso, é o de criar soluções em forma de programas de computador, a não ser que contratos competentes estabeleçam o contrário. 56 de 69 Aspectos legais no desenvolvimento de soluções de TI 5. Outras considerações Dentro do processo de desenvolvimento temos várias dúvidas de ordem prática, como questões de compatibilidade entre licenças, a interpretação das licenças no modelo jurídico brasileiro, responsabilidades dentro do desenvolvimento de software, software para órgãos públicos e marcas. Vejamos em mais detalhes estes pontos. 5.1. Licenças estrangeiras e a legislação brasileira Do inglês: End User License Agreement (Licença do Usuário Final), ou comumente conhecido como EULA, é o acordo entre desenvolvedor e usuário onde se estabelece as regras para o uso e outras ações permitidas ou não, relacionadas ao software. Para comercialização do produto no país é necessário que a licença seja traduzida para o português, de acordo com a exigência do art. 224 do Código Civil 1. Além deste dispositivo, temos ainda a referência ao art. 9º da Lei 9.609/98 2, o qual estabelece o contrato de licença como instrumento de regramento do uso de programas de computador no Brasil, e em seu parágrafo único permite a substituição do instrumento de contrato por documento fiscal, na hipótese de aquisição comercial do programa como comprovação à aquisição ou licenciamento de cópia. Em caso de produtos que não são vendidos, podendo ser os de licença do tipo aberta ou fechada – gratuito ou adware - não há esta obrigação legal uma vez que não existe comercialização. Neste ponto, é importante salientar as diferenças das origens legais de cada país, isto é, se o sistema legal local é de origem romano-germânica, com base no sistema continental europeu, com o modelo baseado em leis escritas, ou do sistema anglo-americano, baseado nas leis escritas e no senso comum da sociedade, ou ainda chamado de Common Law. As licenças estrangeiras, principalmente com redação no EUA são baseadas no Common Law, e com foco no direito de cópia, ou copyright. Desta forma, trás um agravante ainda maior ao processo de tradução, uma vez que a interpretação sobre o produto software é diferente nos dois sistemas, um tratando como obra artística e outro como objeto, no sistema brasileiro e americano, respectivamente. Devido a estes problemas, as entidades que desenvolveram as licenças, como a Free Software Foundation entre outras, não reconhecem as traduções para outros idiomas como legais. Apesar de haver uma série de traduções de qualidade, apenas a GPL passou por um processo de análise jurídica feita pela 1 2 http://www.planalto.gov.br/ccivil_03/leis/2002/L10406.htm#prova (2012) http://www.planalto.gov.br/ccivil_03/leis/L9609.htm (2012) 57 de 69 Aspectos legais no desenvolvimento de soluções de TI Fundação Getúlio Vargas – FGV-Rio – e o projeto Creative Commons para uso no projeto de Software Público Brasileiro, do Ministério do Planejamento, criando a GLP-CC-V21. É importante observar que a GPLS-CC-V2 não é reconhecida pela Free Software Foundation, de forma que deve ser interpretada como outra licença. Da página da Free Software Foundation 2, em tradução livre: “A razão que o FSF não aprovar essas traduções como oficialmente válidas é que verificá-las seria difícil e caro (necessitando a ajuda de advogados bilíngues em outros países). Pior ainda, se um erro fosse inserido nelas, os resultados poderiam ser desastrosos para toda a comunidade de software livre. Enquanto as traduções não são oficiais, elas não podem fazer nenhum mal.” Porém, o fato de não termos traduções sobre as licenças e muitos produtos não serem comercializados não invalida os termos descritos na mesma, uma vez que o licenciamento de software está sob o crivo do Acordo TRIPs 3 (TradeRelated Aspects of Intellectual Property Rights), que estende as regras para todos os países signatários, entre eles o Brasil. Não são poucos os casos de violação de licenças como a GPL, por exemplo, de forma que surgiu inclusive projetos como o GPL-Violations 4, a qual dá suporte jurídico em diferentes países pelo mundo sobre problemas com produtos licenciados sob esta licença. 5.2. Compatibilidade de licenças Uma dúvida frequente entre os desenvolvedores está no licenciamento de soluções ou ainda no uso de diferentes componentes, com diferentes licenças, na composição de uma solução aberta ou fechada. Vejamos as possibilidades, abordando apenas as principais licenças: 1 2 3 4 http://www.softwarelivre.gov.br/Licencas/LicencaCcGplBr/ (2012) http://www.gnu.org/licenses/old-licenses/gpl-2.0-translations.html (2012) http://www.wto.org/english/docs_e/legal_e/27-trips_01_e.htm (2012) http://gpl-violations.org/about.html (2012) 58 de 69 Aspectos legais no desenvolvimento de soluções de TI Licença Uso Comercia Modificar Distribuir individual lização Binários Créditos Código Fonte Trocar Licença BSD S S S S O F F MIT S S S S O F F Apache S S S S O F F GPL S S S S O O N LGPL S S S S O O N MPL S S S S O O F CC S D F NA O F N DP S S S NA F F F P = permitido; O = obrigatório; F = facultativo; N = negado; NA = não aplicável; D = depende da licença Tabela 4: Compatibilidade entre licenças Como explica David A. Wheeler, em seu trabalho The Free-Libre / Open Source Software (FLOSS) License Slide1, nem todas as licenças abertas são usadas, e as licenças mais comuns tendem a serem compatíveis, ou seja, o software pode ser combinado para produzir uma obra maior. A figura abaixo, inspirado neste trabalho, foi feita uma expansão adicionando os demais tipos de licenças e torna mais fácil de ver quando as licenças comuns podem ser combinadas. Figura 36: Relação e compatibilidade entre as licenças E na tabela abaixo, inspirado no trabalho de C. Chandam 2, compara os grupos de licenças. 1 2 http://www.dwheeler.com/essays/floss-license-slide.html (2012) https://blogs.oracle.com/chandan/entry/copyrights_licenses_and_cddl_illustrated (2012) 59 de 69 Aspectos legais no desenvolvimento de soluções de TI Figura 37: Comparativo entre os tipos de licenças 60 de 69 Aspectos legais no desenvolvimento de soluções de TI 5.3. Responsabilidades dentro do desenvolvimento de software As penalidades por uso de software irregular dentro de uma empresa é a forma mais comum de questões de litígio relacionados a programas de computador, e cada vez é tratado com mais facilidade pela justiça brasileira, aja visto se tratar de um assunto recorrente. Um exemplo extraído de: Direito Público - 28 de Fevereiro de 20111: “Pirataria de software A 4ª Turma do Superior Tribunal de Justiça (STJ) decidiu que a indenização imposta ao infrator por uso sem licença de programa de computador não se restringe ao valor de mercado dos produtos apreendidos. De acordo com os ministros, a indenização por violação de direitos autorais deve ser punitiva e seguir as regras do artigo 102 da Lei nº 9.610, de 1998, que impõe maior rigor na repressão à prática de pirataria. O entendimento, já adotado pela 3ª Turma do STJ, reformou decisão do Tribunal de Justiça do Rio Grande do Sul (TJ-RS). Para o tribunal local, na hipótese de apuração exata dos produtos falsificados, a indenização se restringiria ao pagamento do preço alcançado pela venda. No caso, o TJ-RS condenou uma empresa de bebidas a pagar à Microsoft Corporation indenização por 28 cópias de softwares apreendidos. Os magistrados se basearam no artigo 103 da Lei de Direitos Autorais. A Microsoft recorreu, então, ao STJ. Para os ministros, a interpretação adotada pelo TJ-RS apenas remunera pelo uso ilegal do programa, mas não indeniza a proprietária do prejuízo sofrido. Na ausência de dispositivo expresso sobre a matéria, decidiram aplicar o entendimento do artigo 102 da Lei nº 9.610, que estabelece indenização no caso de fraude. Valor Econômico” De acordo com a Business Software Aliance – BSA, existem cinco tipos comuns de pirataria de software2, a saber: 1 2 • Pirataria do usuário final; • Superutilização de cliente-servidor; • Pirataria na Internet; • Falsificação de software http://direito-publico.jusbrasil.com.br/noticias/2586041/pirataria-de-software (2012) http://www.bsa.org/country/Anti-Piracy/What-is-Software-Piracy/Types%20of%20Piracy.aspx (2012) 61 de 69 Aspectos legais no desenvolvimento de soluções de TI Em caso de litígio, a empresa é responsável pelo problema de pirataria, mesmo tendo área técnica específica, recaindo sobre seus representantes legais as penalidades, mesmo que estes não tenham parte efetiva no uso ou difusão interna dos softwares, pois é a empresa q tem a responsabilidade em fiscalizar e escolher (in vigilandum et in eligendum) seus empregados, assumindo o total risco do negócio. Porém, é conveniente incluir no contrato de trabalho de seus empregados uma cláusula sobre procedimentos internos sobre uso irregular de software, atribuindo corresponsabilidade do empregado em caso deste tipo de ocorrência. Esta ação não isenta a empresa da responsabilidade, mas esta é mitigada com seus contratados em caso de uso indevido de software. ? Figura 38: Litígio - responsabilidades internas e externas A partir destas considerações, podemos mergulhar ainda mais nas questões legais envolvendo o desenvolvimento de software, analisando um caso hipotético que ilustra estes pontos em um caráter prático. Pensemos o desenvolvimento de um sistema comercial de frente de caixa, isto é, aqueles sistemas utilizados por comércio em geral, com cadastro de produtos, clientes, venda e estoque. Pela análise da arquitetura, pode ser orientado a web, feito em Java, com banco de dados MySQL. Uma vez aprovado o orçamento, se inicia os trabalhos realizando as tarefas como gestão do projeto, levantamento de requisitos, e outras ações já citadas. Em caso de se utilizar softwares para estas atividades estamos falando necessariamente de licenças de uso, que podem ser pagas para os de licença fechada, ou gratuitas em caso de licenças abertas. Como comentado acima, é necessário estar em situação regular. 62 de 69 Aspectos legais no desenvolvimento de soluções de TI Aprofundando um pouco mais no lado técnico, a linguagem de programação elegida foi o Java. Geralmente para tornar o desenvolvimento mais ágil, fazemos uso de frameworks. A linguagem Java conta com um grande número de frameworks, inclusive com frameworks desenvolvidos pela própria empresa. Considerando que seja usado o desenvolvido internamente, se não há explicitamente o licenciamento, estamos falando de um produto fechado, ou ainda, com copyright. Ainda com a linguagem Java, pode são utilizados um grande volume de biblioteca de terceiros. No nosso caso hipotético, vamos considerar alguns tais como: • Dbbrowser1 – Gnu General Public License (GPL) – navegador de dados; • Strings2 - Apache Public License (APL) - framework para infraestrutura e serviço de dados; • Crystal Reports3 - Licença própria da SAP (EULA) – ferramentas para geração de relatórios. A escolha destas bibliotecas se deu dentro da fábrica de software, na equipe de programadores. Linguagem e banco de dados, foi escolha da arquitetura. O desenvolvimento transcorreu normalmente, gerando a aplicação do cliente, passando pelos testes e homologação, finalmente sendo entregue para o cliente, confirmado pelo termo de aceite, a aplicação (instalador), documentação e código-fonte, além de passos adicionais para implantação do sistema no ambiente de produção nos servidores do cliente. Acontece que desta forma, o produto encontra-se com várias irregularidades. Vejamos o que acontece. 1 2 3 • Banco de dados: o MySQL possui licença comercial com cláusula de exceção FOSS (Free and Open Source Software). Como a aplicação não é de código aberto, então precisa ser comprada as licenças necessárias; • Dbbrowser: Como se trata de um componente GPL, e de acordo essa licença só pode ser distribuído com componentes GPL e/ou bibliotecas LGPL, torna-se incompatível com o sistema, pois transgride as regras estabelecidas na licença; • Springs: Este é um ótimo exemplo de produto com licença permissiva, que permite esta distribuição casada, ou ainda, trocar a licença do componente, adequando-o ao produto; http://java-source.net/open-source/sql-clients/dbbrowser http://www.springsource.org/ http://crystalreports.com/ 63 de 69 Aspectos legais no desenvolvimento de soluções de TI • Crystal Reports: a empresa não comprou licenças para seu uso. Os desenvolvedores buscaram por outros meios uma cópia para atender a demanda de relatórios do sistema. Ao final, foi empacotado junto, como parte da solução. • Framework: caso o cliente queira distribuir ou trocar a licença do software desenvolvido, terá problemas graves pela dependência do licenciamento do framework empregado, que tem o direito autoral pertencente à fábrica de software. Considerando que o software fosse distribuído, precisaríamos ajustar todos os pontos acima para evitar um processo jurídico. Uma vez que é constatado violação de algum tipo, o cliente pode mover uma ação contra a fábrica de software em relação ao desenvolvimento em si, e outro por danos morais. Como explicado anteriormente, a empresa é responsável integralmente pelo ônus, mas como pudemos ver, podem existir várias ações internas de penalização dos diversos atores do processo de desenvolvimento, dependendo das regras estabelecidos no contrato trabalhista. No caso do banco de dados, seria necessário avaliar quem estabeleceu esse componente, e de quem seria a função de avaliar se as licenças estão disponíveis e se seriam compatíveis com a licença final do produto. Da mesma forma, o uso de componentes, como as bibliotecas, tangem à equipe de programadores. As licenças foram respeitadas? A inserção de produtos com licenças fechadas era de ciência de todos? Do gerente de projeto? Da diretoria de desenvolvimento? Dependendo das respostas, são imputadas as corresponsabilidades e aplicada as devidas sansões, que pode ser desde advertências até demissão. 5.4. Software para órgãos públicos – aquisição e desenvolvimento No Programa de Governo Eletrônico, desenvolvido pelo Ministério do Planejamento, do Governo Brasileiro, foram desenvolvidos uma série de ações das quais podemos citar algumas como: • Padrões de Interoperabilidade de Governo Eletrônico1 – E-Ping define um conjunto mínimo de premissas, políticas e especificações técnicas que regulamentam a utilização da Tecnologia de Informação e Comunicação (TIC) no governo federal, estabelecendo as condições de interação com os demais Poderes e esferas de governo e com a 1 http://www.governoeletronico.gov.br/acoes-e-projetos/e-ping-padroes-de-interoperabilidade (2012) 64 de 69 Aspectos legais no desenvolvimento de soluções de TI sociedade em geral. Para os órgãos do governo federal – Poder Executivo brasileiro a adoção dos padrões e políticas contidos na e-PING é obrigatória (Portaria SLTI/MP nº 5, de 14 de julho de 20051). • Modelo de Acessibilidade de Governo Eletrônico2 – e-MAG O Modelo de Acessibilidade de Governo Eletrônico consiste em um conjunto de recomendações a ser considerado para que o processo de acessibilidade dos sítios e portais do governo brasileiro seja conduzido de forma padronizada e de fácil implementação. • Software Público3 é um ambiente para gestão das soluções desenvolvidas na Administração Pública compartilhando ferramentas que podem ser úteis aos mais diferentes órgãos públicos e também à sociedade. O objetivo é reduzir custos, aprimorar os aplicativos disponibilizados e, consequentemente, melhorar o atendimento à população. (Portaria SLTI/MP nº 1, de 17 de janeiro de 2011). Além disso, pela Instrução Normativa Nº 04, de 12 de novembro de 2010, em seu Art. 11, cita (com grifos por conta do autor para destacar): Art. 11. A Análise de Viabilidade da Contratação será realizada pelos Integrantes Técnico e Requisitante, compreendendo as seguintes tarefas: (…) II - identificação das diferentes soluções que atendam aos requisitos, considerando: a) a disponibilidade de solução similar em outro órgão ou entidade da Administração Pública; b) as soluções Brasileiro; existentes no Portal do Software Público c) a capacidade e alternativas do mercado, inclusive a existência de software livre ou software público; d) a observância às políticas, premissas e especificações técnicas definidas pelos Padrões de Interoperabilidade de Governo Eletrônico - e-PING e Modelo de Acessibilidade em 1 2 3 http://www.governoeletronico.gov.br/o-gov.br/legislacao/portaria-no-05-de-14-de-julho-de2005 (2012) http://www.governoeletronico.gov.br/acoes-e-projetos/e-MAG (2012) http://www.governoeletronico.gov.br/acoes-e-projetos/software-livre/portal-do-softwarepublico (2012) 65 de 69 Aspectos legais no desenvolvimento de soluções de TI Governo Eletrônico – e-MAG, conforme as Portarias Normativas SLTI no 5, de 14 de julho de 2005, e no 3, de 7 de maio de 2007; E ainda, sobre a questão de contratação por órgãos desenvolvimento de software, citamos o Art. 27 da referida IN: públicos para Art. 27. Os softwares resultantes de serviços de desenvolvimento deverão ser catalogados pela contratante e, sempre que aplicável, disponibilizados no Portal do Software Público Brasileiro de acordo com o regulamento do Órgão Central do SISP. Em caso de se tratar de uma empresa pública que adquire o software passa a ser obrigada a verificar estes e outros pontos definidos nos respectivos dispositivos normativos, e quem desenvolve, passa a ter uma preocupação a mais para garantir a compatibilidade de seus sistemas a essas novas condições. 5.5. A marca A marca de um produto geralmente tem uma política de licenciamento diferente do software em si. Para ilustrar melhor esse detalhe, vejamos dois exemplos: Mozilla Firefox e Google Chrome. Mozilla Firefox é um navegador web desenvolvido pela Mozilla Foundation com colaboração de desenvolvedores de todo o mundo. O código-fonte está licenciado sob a Mozilla Public License – MPL, que é uma licença aberta e, assim, com o código-fonte disponível, porém código-fonte não significa o programa que estamos acostumados a usar. Para chegar lá é necessário executar um processo chamado compilação, que consiste na conversão deste código para o programa em si, também chamado de binário, que é o que ao final usamos. No caso do Mozilla Firefox, que tem este nome e um logotipo associado só pode ser empregado em binários gerados pela própria Mozilla Foundation. Caso seja feita por outra instituição, eles se reservam ao direito de não autorizar o uso do nome. Isso faz sentido se pensar que qualquer pessoa, com o devido conhecimento técnico e ferramentas adequadas, pode modificar o código, compilar e distribuir os binários. Caso aconteça algum problema, a culpa não pode ser repassada a Mozilla Foundation. Assim, ainda é possível gerar binários, mas terá que ser com outro nome. Isso aconteceu dentro da distribuição Linux chamada Debian1, que precisou trocar o nome e o logotipo do navegador compilado por eles. Ainda sobre o Mozilla Firefox ocorreu uma nova ocorrência com a criação do projeto WaterFox, que busca compilar um navegador que utilize os novos 1 http://www.debian.org (2012) 66 de 69 Aspectos legais no desenvolvimento de soluções de TI recursos de 64bits dos novos sistemas operacionais da Microsoft, o Windows Vista 64bits e o Windows 7 64bits. Figura 39: Derivação de marcas a partir do produto Mozilla Firefox Outro exemplo é do navegador web Google Chrome, que é derivado do projeto Chromium1, que tem a proposta de construir um navegador web de código aberto rápido, seguro e mais estável. Assim, o Google investe esforços no desenvolvimento deste projeto e seu time de desenvolvedores geram binários periodicamente sob suas especificações. Este produto chama-se Google Chrome, caso contrário, deve se chamar Chromium, ou em outra forma, se é Google Chrome, é feito (compilado) pela Google, se não, é feito por desenvolvedores independentes. Figura 40: Troca de logo de Chromium para Google Chrome Ainda sobre marcas, é importante salientar que temos dispositivos legais para tratar deste assunto, através da lei 9.279/96 2, que regula direitos e obrigações relativos à propriedade industrial, no seu Título III. 1 2 http://www.chromium.org/Home http://www.planalto.gov.br/ccivil_03/leis/L9279.htm 67 de 69 Aspectos legais no desenvolvimento de soluções de TI 5.6. Fluxograma operacional de análise legal para desenvolvimento Para consolidar todos os conceitos discutidos até aqui, foram sintetizados no quadro abaixo. Figura 41: Fluxo de análise de restrições e correções 68 de 69 Aspectos legais no desenvolvimento de soluções de TI 6. Material complementar Para ajudar a compreender as questões de licenciamento de software, é necessário entender a evolução do software e, por consequentemente, a história da informática/computação em geral. Abaixo, seguem alguns materiais que ajudam a conhecer estes elementos. 6.1. Filmes 6.1.1. Piratas do Vale do Silício (1999) 95 min - Biografia | Drama - 1 agosto de 1999 (Brasil) Diretor: Martyn Burke Escritor: Paul Freiberger (livro), Michael Swaine (livro), Martyn Burke Atores: Anthony Michael Hall, Noah Wyle e Joey Slotnick IMDb: http://www.imdb.com/title/tt0168122/ 6.1.2. Revolution OS (2001) 85 min - Documentario | Comédia (EUA) - 15 Fevereiro de 2002 Etiquetas: Hackers, Programmers & Rebels UNITE! Diretor: J.T.S. Moore Escritor: J.T.S. Moore Atores: Linus Torvalds, Richard M. Stallman and Eric Raymond IMDb: http://www.imdb.com/title/tt0308808/ 69 de 69 Aspectos legais no desenvolvimento de soluções de TI