Manifesto para uma mudança de postura

Recentemente postei na lista de discussão da SL-RJ uma mensagem que gostaria de compartilhar para um número maior de pessoas. A razão para eu escrever este texto foi por um integrante da comunidade escreveu uma frase que já ouvi muitas vezes de diversos ativistas do software livre. A frase (com leves modificações) é:

Vou usar um software proprietário X, porque o software livre Y ainda não está tão bom.

Ler isto novamente me fez pensar e acho que esta postura que estamos acostumados a tomar deveria mudar. Qual postura? Pegar o atalho e deixar de contribuir para o software livre para utilizar um software proprietário.

Antes de você que já falou isto pare de ler, deixo claro que não estou te crucificando e vou deixar isto mais claro ainda durante o texto. Pessoas influentes já disseram isto, então quem sou eu para crucificar alguém?

Antes de continuar, recomendo a leitura do artigo “Software Livre não nasce em árvores: do Colonialismo ao extrativismo digital” do Jomar Silva, porque tem tudo a ver com este conteúdo.

Extrativismo digital

Quem leu o artigo viu que a postura que citei foi chamada pelo Jomar de “extrativista”. O próprio Linus Torvalds, uma das pessoas mais influentes e que mais admiro no mundo, já fez isto. Ele não gostava de nenhuma ferramenta livre de controle de versão e passou a utilizar uma ferramenta proprietária para o Linux: o BitKeeper. No final ele teve problemas de licenciamento com a ferramenta e desenvolveu o Git, o qual fez melhor que o BitKeeper. Mas repare, nesta história toda, que a atitude extrativista não deu certo!

Tá bom, não existe outro Linus Torvalds e o cara é fora de série mesmo… Normalmente as pessoas que pegam este atalho ou não são programadores ou não programam na linguagem em que aquele software foi escrito. Sendo assim, eles não poderiam desenvolver uma solução para atendê-los. Mas será que existe outro caminho?

Relembrando o nosso amor pelo software livre

Eu gosto de software livre por vários motivos:

  1. Não fico preso a fornecedores e suas estratégias de mercado;
  2. A evolução normalmente é muito mais rápida;
  3. Eu posso reutilizar em meus projetos e debugar quando tenho algum problema;
  4. Eu posso consertar e melhorar!

Vale a pena abandonar isto tudo tão rápido?

Qual minha solução “genial”? (É o que muita gente deve ter pensado, né? Joguei pedra, agora ferrou – vou ter que dar uma solução! ;) )

Eu acho que nós, desenvolvedores, poderíamos de fato exercer o 4° ponto que citei. Quando não tivermos conhecimento requerido, podemos apelar para outra solução. Esta solução seria, ao invés de pagar o proprietário, pagar a um desenvolvedor para fazer o que você precisa no software livre!

Você acha isto impossível? Olha que eu conheço um cara que está trabalhando na Globo.com reimplementando partes do software livre Squid! Este cara não teria competência para implementar o que está faltando no seu software? Acho que sim.

Além disso, temos as seguintes vantagens:

  1. Você estará apoiando a economia local e não mandando dinheiro para americanos sacanas que querem te enjaular;
  2. O software ficará mais próximo do que você considera ideal (o próprio Randal Schwartz disse que nem o iPhone nem o MacOS são perfeitos);
  3. Você estará fortalecendo o software livre e mostrando que é um modelo viável e sustentável;
  4. Melhorando o software, é capaz dele se ter mais usuários e receber melhorias mais rápido;
  5. Esta melhoria estará disponível para TODO O MUNDO! Em outras palavras: você estará fazendo um mundo melhor (sem lágrimas, por favor);

Não existe bala de prata

OK, pessoal. Eu sei que nem sempre esta solução será possível, pois pode ser que você tenha restrições de tempo de atendimento a um cliente ou o que precisa ser implementado é muito grande, ou muito complexo, ou demandaria muito mais dinheiro dentre vários outros impeditivos.

Mas gostaria de fazer um apelo a vocês: vamos considerar como primeira opção pagar alguém para desenvolver um software livre! Caso esta opção não seja possível, aí sim, vamos pensar em partir para uma solução proprietária e que vai te enjaular!

Hack’n Rio: inscrições a preços promocionais

Como muitos de vocês devem saber, estou organizando o Hack’n Rio, evento nascido da ideia do Júlio Neves: fazer um grande evento com enfoque técnico. Junto comigo está um grupo de peso acostumado a organizar eventos e apoio jurídico da ONG ALTA.

Logotipo do Hack'n Rio

O grande diferencial do Hack’n Rio é o enfoque técnico e nosso objetivo é que os participantes aprendam bastante durante o evento. Então, nada mais natural do que esperar muitos estudantes interessados no evento, certo? Muitos que estão acostumados com os valores cobrados em outros eventos, devem pensar que um evento deste porte e com duração de 2 dias deve custar caro demais para estudantes, certo? ERRADO!

Durante todo o mês de agosto, os ingressos do Hack’n Rio estarão ao preço promocional de R$ 25,00! Portanto, você tem ainda 2 semanas para fazer sua inscrição e aproveitar a promoção!

Projeto pró-contribuição: uma proposta de estrutura para as comunidades brasileiras de software livre

Muito se tem falado pelos “corredores” das comunidades de software livre a respeito da falta de contribuição dos brasileiros, principalmente com codificação. Um acontecimento marcante para a comunidade do Estado do Rio de Janeiro foi em 2009, quando Jon “Maddog” Hall veio ao FSLDC e disse “vocês já tem fazem bastante divulgação – agora vocês precisam escrever código”.

De fato, se observarmos bem, as contribuições brasileiras para a maioria dos projetos livres são sempre em:

  1. Divulgação;
  2. Tradução do software e da documentação;
  3. Solução de dúvidas;
Apesar de serem importantes contribuições, elas não ajudam tanto para evolução do software. Além disso, acabamos não tirando proveito da melhor coisa que o software livre nos provê: controle sobre o que ele faz. Desta forma, acho que existem dois pontos importantes que podemos melhorar:
  1. Reporte de bugs;
  2. Codificação;

A barreira do idioma

Apesar de estar na moda criticar os brasileiros por não contribuírem, na minha opinião, a maior barreira que existe para os nossos conterrâneos contribuírem em projetos livre é o idioma. Por mais que a maioria dos desenvolvedores de software saibam ler inglês (afinal, a maioria das nossas fontes de consulta está neste idioma), escrever em inglês é muito mais difícil. Isto acaba afastando as pessoas não só da codificação, mas até mesmo usuários comuns de reportarem bugs!

Acho que as comunidades brasileiras tem um papel fundamental para melhorar esta situação, mas, infelizmente, a maioria delas atualmente funciona apenas como “proxies” e filtrando o que pessoalmente não consideram válido.

Por isso comecei a pensar em como poderíamos transpassar esta barreira e com a ajuda das comunidades brasileiras. Cheguei a uma estrutura que gostaria de compartilhar com vocês para que possa ser melhorado e aplicado num projeto real.

Importante: Não espere por uma ideia do outro mundo, pois as ideias que vou apresentar são bem simples :)

Facilitando o reporte de bugs

Antes de mais nada, precisamos entender o ciclo de vida de um bug reportado:

  1. Reporte: quando o usuário notifica ao projeto que percebeu um comportamento errôneo;
  2. Triagem: uma equipe exclusiva que verifica os bugs reportados para ver se eles são válidos, se estão duplicados e se estão com todas as informações necessárias;
  3. Correção: após a triagem, o desenvolvedor terá todas as informações para fazer a correção;

O papel que eu acho que a comunidade brasileira deveria fazer aqui é de participar da equipe de triagem. O usuário brasileiro poderia reportar o bug em português e a equipe de triagem iria fazer a tradução do bug para que qualquer desenvolvedor possa corrigí-lo.

O importante aqui é ter uma forma simples para o usuário sinalizar que ele está reportando em português. O ideal é que a própria ferramenta tenha esta opção ou que possa ser enviado automaticamente dados de idioma do sistema (ou navegador) do usuário. Caso isto não seja possível, deve ser documentado de forma clara como ele deve informar o idioma que está escrevendo.

Facilitando a codificação

Para facilitar a introdução de novos codificadores não fluentes em inglês é interessante que se tenha uma tradução da documentação para desenvolvedores tão boa quanto a tradução da documentação para usuários. Claro que isto não é uma barreira tão grande, já que nós desenvolvedores já estamos acostumados com documentação em inglês, mas qualquer ajuda é bem vinda.

Mais importante do que isto, a comunidade brasileira deve ter uma lista de desenvolvimento própria! Esta lista teriam discussões em português para que as dúvidas possam ser tiradas por todos. Como eu disse, escrever em inglês não é para todos (mesmo para quem lê neste idioma) e uma lista brasileira ajudaria muito a inserir novos desenvolvedores.

No entanto, a primeira providência que deve ser tomada é: as comunidades brasileiras precisam ter desenvolvedores! Caso contrário, quem vai traduzir a documentação técnica? Quem vai responder as dúvidas na lista de discussão? Além disso, existe o efeito cascata – quanto mais codificadores, mais gente vai querer codificar!

Próximos passos

Vou tentar implementar isto em algum projeto e, por consequência, fazer melhorias. Quem quiser contribuir nos comentários, ideias e críticas construtivas são bem vindas.

Eu sou desenvolvedor de software, mas atualmente não codifico para nenhum software livre. Então, assim pretendo começar a contribuir com código, além de criar uma estrutura que torne fácil para qualquer outra pessoa contribuir também, independente do nível de proficiência em inglês.

Meu ZTD: como o Zen To Done está mudando minha vida

Era uma vez, uma pessoa muito desorganizada. Esta pessoa tinha a caixa de e-mail lotada e bagunçada, tentava tocar vários projetos ao mesmo tempo, deixava papéis jogados em todos os lugares e, pior de tudo, dependia de sua memória para se lembrar de quase tudo! O resultado desta bagunça não era todos os projetos realizados com sucesso (apesar de alguns, milagrosamente, serem), mas sim estresse.

Foi então que, no Flisol 2011, do meu amigo Oscar Marques que fez a mudança na minha vida. Sua dica: ZTD.

Eu já havia tentado a metodologia GTD, mas não tive fôlego suficiente e fracassei. Mas o ZTD, com seu foco em mudanças graduais, caiu como uma luva para mim. O resultado final é parecido com o GTD, mas é muito mais fácil de se implementar!

Implementando os hábitos

O primeiro hábito do ZTD é “capture”. Ele diz que você deve escrever tudo e tirar tudo da cabeça. Assim eu fiz. A sensação de alívio por acabar com a “bagunça mental” que vinha sentindo não tem preço. Meu estresse diminuiu, no mínimo, pela metade. Hoje fico pensando por que não fazia antes esta coisa tão simples?

Atualmente estou implementando o segundo hábito: “processe”. Nele você deve manter sempre suas caixas de entrada sempre vazias e processá-las em períodos fixos do dia, até a última mensagem. Implementá-la foi bem mais difícil, pois o meu e-mail era uma zona e cheguei a cogitar pular este hábito e deixando-o para depois. Mas, com ajuda do ActiveInbox, consegui retomar o controle do meu e-mail novamente!

Mudanças na minha vida

Ainda estou no meio da implementação do segundo hábito e já consigo sentir as mudanças.

  1. Não esqueço de mais nada importante, porque está tudo escrito;
  2. minha cabeça está mais leve e livre para pensar em coisas mais importantes do que “tenho que lembrar de ir na farmácia hoje”;
  3. minha caixa de e-mail está trabalhando ao meu favor e me deixa mais confiante para tocar os meus projetos, como o Hack’n Rio.

Mensagem para quem não se interessa pelo assunto

Sei que este artigo foi totalmente diferente do que eu costumo escrever no blog e podem ter pessoas querem ler sobre isto. Se você é uma delas, não precisa descadastrar o RSS do seu leitor ou remover a inscrição por e-mail! Vou continuar escrevendo sobre os assuntos de sempre, mas certamente haverão mais artigos sobre a minha implementação do ZTD. Nestes artigos, vou manter um padrão do título sempre começar com ”Meu ZTD:”. Sendo assim, se você não se interessar, pode simplesmente descartar o post de cara e minha tentativa de ficar mais produtivo não vai atrapalhar a produtividade de ninguém :)

Links interessantes

ORC: Meu primeiro projeto Android

Meu amigo do SL-RJ Gabriel Duarte resolveu começar a estudar desenvolvimento Android e começou a desenvolver um pequeno projeto. O projeto, nomeado posteriormente de ORC (Open Remote Control), tem o objetivo de oferecer uma ferramenta para controlar um computador através de um smartphone Android utilizando uma rede WI-FI.

Ele pediu ajuda para o desenvolvimento do projeto na lista do Android In Rio e eu resolvi entrar nesta empreitada, tanto para ajudá-lo com Java (como se alguém que sabe tudo de C/C++ precisasse de ajuda em Java, né? :P ) como para aprender num projeto real a desenvolver para minha plataforma móvel preferida!

Bem, fica então o convite para todos os interessados a contribuirem para o projeto, que é 100% livre licenciado sob GPL. O código está no Github (que já falei num post anterior) e tenho certeza que iremos aprender bastante!