No último sábado, apresentei no Software Freedom Day em Campinas sobre algumas questões éticas envolvendo ecossistemas e engenharia reversa. Não pretendia apresentar certezas, mas questões para reflexão, e algumas tentativas de resposta, ou o o viés que eu tinha.

Quando falo em ética e engenharia reversa, me refiro não à ética da engenharia reversa como meio. Essa prática é legítima, não fere o direito do criador da obra original. Ao contrário, criar tecnologia que outros não podem reproduzir livremente, com ou sem alterações, não é ético. A engenharia reversa permite reverter essa atrocidade. No entanto, sou a favor de que seja feita seguindo a letra da lei, de forma a tornar a nova obra resultante em obra que possa ser utilizada e redistribuída pelo público de forma legítima, sem que corram grandes riscos. Portanto, prefiro software reescrito a software descompilado, por exemplo.

No entanto, minha palestra focava em ecossistemas e a utilização da engenharia reversa para atingir um fim. E discutia quando tal fim é ético. Por exemplo, ao fazer a engenharia reversa do Flash, com o intuito de criar um reprodutor livre de software Flash, não estaríamos aumentando o valor do seu ecossistema? E, sendo essa uma tecnologia repleta de armadilhas, como documentação incompleta, inexistente ou indisponível, reprodutores e editores que não são software livre, entre outros, queremos aumentar seu valor, e influencia que mais pessoas o utilizem, pois agora existe um reprodutor livre?

Mas acredito que há situações em que a engenharia reversa de um formato fechado é ética. Quando usuários gravam seus dados em tal formato, correm sérios riscos de não mais poder acessá-los quando o criador do software abandonar seus usuários. Em casos como esse, um software livre capaz de ler o arquivo e salvá-lo em um formato livre pode salvar usuários também.

Muito cuidado, no entanto. Salvar no formato fechado pode acabar mantendo sua hegemonia, e o software livre utilizado apenas como um veículo para aumentar ainda mais seu valor. Se, ao contrário, o software livre apenas converte o formato fechado para um formato livre, com especificações abertas, gratuitas, redistribuíveis e que permitem implementações livres, ajudaremos usuários que não sabiam no que estavam se metendo, sem correr grandes riscos de aumentar o valor do formato fechado.