sexta-feira, 1 de novembro de 2013

Então, você quer usar software livre?


O Software livre tem se tornado muito popular ultimamente. As empresas e até mesmo as pessoas comuns o estão utilizando em seu dia a dia. O que é vantajoso para todos. Porém, adotar software livre no meio corporativo exige certas decisões e mudanças de paradigma. Você está preparado?




O que é software livre?


Não poderíamos sequer começar este artigo sem falar no projeto GNU e na Free Software Foundation. Sem querer me deter muito neste assunto, a FSF é uma instituição sem fins lucrativos, que objetiva a liberdade de uso dos computadores e os direitos de todos os usuários de softwares livres. 

O projeto GNU visa criar um sistema operacional totalmente livre (e realmente o fez: http://www.gnu.org/distros/free-distros.html), e é patrocinado pela FSF. 

A FSF e o projeto GNU foram fundados por Richard Stallman

Mas, voltando ao assunto original, o que é software livre? Existem muitos conceitos parecidos, porém não exatamente iguais: 
  • Software com versão gratuita: São programas que permitem o seu uso gratuito, ou que possuem uma versão gratuita;
  • Shareware: Programas que permitem que você use e compartilhe, e, se considerar útil, você pode pagar uma taxa para registrar o uso;
  • Freeware: São softwares com licença totalmente gratuita;
  • Open Source: São programas nos quais o autor distribui o código-fonte, permitindo (ou não) sua redistribuição.

Dependendo da disponibilidade do código-fonte e do tipo de licença concedido, o software pode ou não ser considerado livre. 

No site do projeto GNU, há uma definição bem precisa: 

"
Por “software livre” devemos entender aquele software que respeita a liberdade e senso de comunidade dos usuários. Grosso modo, os usuários possuem a liberdade de executar, copiar, distribuir, estudar, mudar e melhorar o software. Com essas liberdades, os usuários (tanto individualmente quanto coletivamente) controlam o programa e o que ele faz por eles.

Quando os usuários não controlam o programa, o programa controla os usuários. O desenvolvedor controla o programa e, por meio dele, controla os usuários. Esse programa não-livre e “proprietário” é, portanto, um instrumento de poder injusto.

Assim sendo, “software livre” é uma questão de liberdade, não de preço. Para entender o conceito, pense em “liberdade de expressão”, não em “cerveja grátis”.

Um programa é software livre se os usuários possuem as quatro liberdades essenciais:

  • A liberdade de executar o programa, para qualquer propósito (liberdade 0).
  • A liberdade de estudar como o programa funciona, e adaptá-lo às suas necessidades (liberdade 1). Para tanto, acesso ao código-fonte é um pré-requisito.
  • A liberdade de redistribuir cópias de modo que você possa ajudar ao próximo (liberdade 2).
  • A liberdade de distribuir cópias de suas versões modificadas a outros (liberdade 3). Desta forma, você pode dar a toda comunidade a chance de beneficiar de suas mudanças. Para tanto, acesso ao código-fonte é um pré-requisito.
Um programa é software livre se os usuários possuem todas essas liberdades. Portanto, você deve ser livre para redistribuir cópias, modificadas ou não, gratuitamente ou cobrando uma taxa pela distribuição, a qualquer um, em qualquer lugar. Ser livre para fazer tudo isso significa (entre outras coisas) que você não deve ter que pedir ou pagar pela permissão para fazê-lo.
"

Eu apoio e uso software livre

Sim, é verdade. Porém, quando eu digo isto, sempre ouço: "Mas você usa um MAC!!!!"... Apoiar o software livre não quer dizer, necessariamente, usar APENAS software livre. Eu me considero apoiador do uso e disseminação de software livre porque:

  • Uso profissionalmente software livre no meu trabalho do dia a dia;
  • Uso software livre em minhas atividades como escritor e professor. Meus livros são escritos usando o Libre Office;
  • Desenvolvo e disponibilizo softwares livres, além de participar de algumas comunidades de softwares livres;

Atualmente, estou usando um MacBook Pro, com Mac OSX, que não pode ser considerado exatamente como software livre. Mas eu uso outras plataformas, como: Linux, por exemplo. E, além de usar, eu desenvolvo software livre e participo de comunidades de suporte e apoio. 

O que eu quero dizer é que você não precisa ser radical, basta participar.


Quais são as vantagens de usar software livre?

Podemos começar por uma, que considero a mais importante de todas: Transparência! Quando você usa um software livre, sabe o que está usando. Você tem acesso ao código-fonte e à comunidade de desenvolvedores, pode ver como está o processo de desenvolvimento, os bugs e até mesmo ajudar a corrigir ou melhorar o software. 

Para mim, é a maior vantagem que existe. 

Para a maioria das pessoas que eu conheço, a única vantagem é ser gratuito. Porém, não se iluda: Software livre não quer dizer Software gratuito. Várias empresas desenvolvem software livre e cobram um valor pelo seu uso. 

De qualquer forma, você não pode escolher determinado software por ser gratuito. Outros critérios devem pesar em sua decisão, entre eles:
  • Funcionalidade: Ele atende às suas necessidades atuais?
  • Flexibilidade: Ele pode acomodar suas necessidades futuras?
  • Compatibilidade: Ele é compatível com outros programas?
Além da transparência, você não fica sozinho! Está acompanhado de vários usuários, e pode discutir seus problemas na comunidade de apoio do software que escolheu. Coisa quase impossível de acontecer com software proprietário. 

Há uma outra grande vantagem: Uso de padrões. Software livre, normalmente, é desenvolvido baseado em padrões e usa padrões em sua funcionalidade, logo, você não ficará restrito a apenas uma ferramenta, podendo facilmente migrar para outra. Um bom exemplo disso é o padrão ODF, usado pelo Libre Office e por vários outros programas. 


Existem desvantagens?

Sim, existem. 

Dependendo da situação e da aplicação, existem desvantagens sim. Eu diria que depende de você ou da sua empresa, o fato de haver desvantagens ou não. 

Existem três tipos de usuários de software livre:
  • Engajados: Participam ativamente da comunidade, implementam correções de bugs e auxiliam os outros usuários;
  • Conscientes: Mesmo que não participem ativamente, estão sempre antenados no que se passa na comunidade e cientes dos bugs, promovendo medidas proativas para mitigar os riscos;
  • Consumidores: Apenas usam o software livre como ferramenta, geralmente por ser de licença gratuita.
Para começar, você não tem, obrigatoriamente, uma equipe de suporte do fornecedor, com telefone 24 x 7 ao seu dispor. E, em segundo lugar, você também não tem um prazo para correção de bugs. 

Algumas empresas oferecem o mesmo software em duas modalidades de licença: Uma comunitária e gratuita, e outra "Professional", paga. A licença paga pode incluir um contrato de suporte, que pode mitigar o risco de problemas, para os usuários e empresas do tipo "Consumidor". 

Outras empresas se especializam em determinados softwares livres e, mesmo não sendo os desenvolvedores, procuram prestar serviços pagos de suporte. 

A própria comunidade de usuários pode oferecer "patches" ou "workarounds" para resolver bugs específicos, enquanto não sai uma nova versão do software. Usuários dos tipos "Engajados" e "Conscientes" se valem destes recursos para evitar problemas. 

Agora, se você é um usuário "Consumidor" e não quer pagar por nada, então é melhor não usar software livre. 

Porém, tem mais uma questão, que pode ou não virar uma desvantagem: O tipo da licença de uso do software livre. Vamos analisar isto com mais detalhes. 


Tipos de licença de softwares livres

A licença de uso é o contrato entre o autor (ou o detentor dos direitos autorais) do software e você, usuário. Neste contrato, estão especificadas as formas permitidas de uso do software, incluindo do seu código-fonte. 

Algumas licenças são totalmente livres, outras exigem a manutenção dos avisos de direitos autorais, e algumas restringem o uso de código-fonte derivado, tornando-o público também. 

Violar uma licença pode tornar você ou sua empresa alvo de processo judicial. Antes de continuar, você tem que entender o conceito de "Copyleft": 

"
Copyleft é uma forma de usar a legislação de proteção dos direitos autorais com o objetivo de retirar barreiras à utilização, difusão e modificação de uma obra criativa devido à aplicação clássica das normas de propriedade intelectual, exigindo que as mesmas liberdades sejam preservadas em versões modificadas. 
"

Vamos ver algumas licenças mais comuns, utilizadas por autores de software livre: 

  • GPL (GNU General Public License): É a licença mais utilizada por softwares livres. Ela reforça as quatro liberdades, explicadas anteriormente, e impede que o código-fonte (ou suas derivações) sejam "apoderadas" por terceiros, virando software proprietário. É a que garante realmente as quatro liberdades, porém, restringe o software derivado através do "Copyleft";
  • LGPL (GNU Lesser General Public License): Apesar de ser baseada na GPL, permite o uso do software, neste caso bibliotecas de código, com software proprietário, desde que seja mantido o aviso de "copyright";
  • BSD (Berkeley Software Distribution): É utilizada pelo Unix derivado da universidade de Berlkeley, e é muito permissiva, não impondo o princípio de "Copyleft";
  • Apache (Apache Software Foundation): É utilizada pelos produtos da ASF, e é permissiva, não impondo o princípio de "Copyleft";
  • Mozilla (Licença pública Mozilla): É utilizada por vários produtos Mozilla, como o navegador Firefox. Não impõe o "Copyleft";
Mas, qual é o impacto disso para você?

Bem, vamos supor que você usou um software distribuído pela licença GPL e criou um outro produto, que o utiliza. Bem, o seu produto pode ser considerado um software derivado e, portanto, sujeito a ser distribuído sob licença GPL também. Isto acontece quando usamos componentes GPL para desenvolver outros softwares. 

É claro que depende da aplicação... Por exemplo, você usou Libre Office para criar a documentação do seu software. Isto não significa que o seu software deva ser GPL. Porém, se você compilou seu software ou utilizou algum componente GPL, pode ter que distribuir seu produto como GPL também. 

Veja bem, distribuir um software sob licença GPL não quer dizer que você vá fazer de maneira gratuita, conforme já dissemos anteriormente. 


No mundo corporativo

O uso de software livre no mundo corporativo vem aumentando nos últimos anos. Várias empresas importantes, tanto governamentais como privadas, vêm investindo cada vez mais nesta modalidade, seja para plataformas desktop (automação de escritório) como servidores.

Porém, as corporações não podem se dar ao mesmo luxo que as pessoas, ou seja, existem aplicações de missão crítica que podem afetar até o faturamento das empresas, logo, é preciso tomar cuidados especiais.

Prospecção de software livre

Uma Empresa precisa justificar a adoção de determinada ferramenta, seja ela software livre ou proprietário. Mesmo que a licença seja gratuita, existem vários custos envolvidos, por exemplo, na instalação, no atendimento etc.

Desta forma, o processo de seleção de software livre deve seguir de forma igual ao processo de seleção de software proprietário. Deve haver uma lista de critérios e devem ser consideradas várias opções. Desta forma, o processo decisório de adotar um determinado software livre ficará documentado.

Além disto, deve haver um processo de internalização do software, ou seja, de criação de cultura, de documentação, de capacitação de funcionários.

Os custos de capacitação, administração, instalação e operação do software devem ser considerados, e não apenas o custo da licença, para justificar o uso de um software livre.

Para calcular estes custos, é necessário saber maiores informações sobre o software livre, por exemplo:

  • Seus requisitos de hardware e plataforma operacional;
  • Suas capacidades, ou limites, como: desempenho, confiabilidade, recuperabilidade etc;
  • Sua evolução, ou seja, o "roadmap";
  • O ritmo de solução de problemas;
  • O suporte da comunidade.


Sustentação e Suporte

Quando uma empresa adota um software livre, ela está criando uma solução completa, que inclui: Operação, Manutenção, Capacitação etc.

Esta solução tem um ciclo de vida, que inclui todas as atividades para manter a solução funcionando e evoluí-la, até que seja desativada. Estas atividades são chamadas de "sustentação".

O Suporte está relacionado com a resolução de problemas relativos à solução, incluindo o(s) software(s) livre(s) empregado(s). O Suporte pode ser atendimento aos usuários ou mesmo à área de operação da empresa.

Estas atividades, além das outras relacionadas à prospecção, fazem parte do Custo Total de Propriedade (TCO) de uma solução. Existem diferenças importantes entre um software proprietário e um software livre:

CaracteristicaSoftware proprietárioSoftware livre
Custo de licençaTemPode não ter
Suporte do fornecedorTemPode não ter
Correção de bugsTem frequênciaIndeterminado


É preciso estar antenado ao que a Comunidade está fazendo, acompanhar o "JIRA" e os desenvolvedores do software livre, verificando se existem "patches" a serem aplicados. Não há um contrato de suporte com o fornecedor, logo, você deve se preocupar com isso.

É claro que alguns fornecedores de software livre oferecem contrato de suporte, mas, neste caso, deixa de ser um software livre e passa a ser encarado como um software proprietário.

Se a empresa utiliza pesadamente determinados softwares livres, e não existe contrato de suporte para eles, é necessário criar uma área para suportar e sustentar a solução. Esta área deverá:

  • Capacitar os usuários;
  • Verificar a evolução da solução;
  • Ficar antenado nas comunidades de suporte;
  • Aplicar "patches";
O ideal é que alguém da equipe participe efetivamente da comunidade de desenvolvedores do software livre, pois assim, a empresa estará retribuindo à comunidade pelo uso do software ("give back to the community").



Uso em projetos de software

Se você desenvolve software, independentemente de ser proprietário ou livre, deve considerar o impacto que o uso de componentes de software livre em seu produto acarretará para o seu usuário.

Hoje em dia, as soluções são desenvolvidas em modalidade RAD, fortemente baseado em componentes externos. O pessoal mais antigo critica este tipo de solução, chamando de "Sistema Lego". De qualquer forma, é natural que os desenvolvedores incluam componentes distribuídos como software livre em seus projetos. Só que deveriam tomar algumas medidas para alertar os seus usuários:

  1. Verificar se o uso do componente de software livre está de acordo com a licença dada;
  2. Manter a licença de cada componente de software livre junto com o seu produto, para que os clientes possam lê-las;
  3. Citar na documentação do seu produto quais componentes de software livre foram utilizados, em quais versões;
  4. Suportar inclusive os componentes de software livre que incluiu em seu produto.

Resumo da fritada

Usar software livre é uma atitude ecológica! Sei que você nunca ouviu falar nisso, mas, ao usar software livre, você está economizando recursos financeiros gastos em licenças, que podem ser utilizados em outras finalidades. Também é mais seguro, pois a transparência garante que você está livre de espionagem e "cavalos de tróia".

Porém, requer maior cuidado no suporte e sustentação das soluções, com participação ativa nas comunidades de usuários e TAMBÉM na de desenvolvedores. 

Você pode contribuir com a comunidade de software livre, mesmo que não seja um desenvolvedor. Você pode, por exemplo, fazer traduções das aplicações e de sua documentação. 

Se não quer se envolver com nada disso, então procure usar software livre que tenha contrato de suporte do fornecedor. 

A pior coisa que você pode fazer é adotar um software livre e usá-lo como se fosse proprietário, sem se envolver na comunidade e sem pagar suporte. Depois, você vai sair falando mal do software livre, sem motivos para isto.