O que aprendi desenvolvendo projetos de código aberto

Nesse post vou escrever um pouco sobre minha primeira experiência no desenvolvimento de projetos de código aberto.

O interesse por software de código aberto

Desde muito tempo tive interesse no desenvolvimento de software, especialmente em softwares de código aberto. Um interesse especial é o fato de você ter a oportunidade de ver códigos escritos por outras pessoas. Ler código de outras pessoas nos faz aprender muito, pois vemos abordagens diferentes para um mesmo problema e podemos aprender hacks que não fazíamos idéia que seriam possíveis.

Sempre publiquei meus códigos para quem quisesse ver e defendo a idéia de que as pessoas deveriam também sempre publicar seus códigos. A unica situação em que faz sentido não publicar algum código é quando esse código é crucial para um negócio qualquer. Nesse caso não faz sentido entregar o ouro, claro.

Primeiras contribuições

O primeiro passo para ter seu projeto de código aberto é fazer parte de algum outro projeto. Fazendo isso você pode ter contato com outros desenvolvedores, aprender como funciona o projeto especificamente, como é o processo para que você possa contribuir, além de ganhar experiência para que um dia possa tocar seu próprio projeto de código aberto.

Minha participação em projetos de código aberto teve início quando comecei a estudar python, há pouco mais de um ano atrás.  Antes de escrever código em python, lia bastante sobre a linguagem. Aprendi lendo o próprio site da linguagem e sempre que tinha alguma dúvida específica sobre alguma sintaxe, ia direto ler a gramática. Acho essa forma mais eficiente do que ler hello worlds por aí.

Em uma dessas pesquisas, estava tentando encontrar um framework web que fosse bem simples de entender, afinal eu estava começando a estudar a linguagem. Apesar de já ter experiência com sistemas web, conhecer sobre HTTP, requisições e etc. Web + python era, naquela época, algo novo.

Foi então que encontrei um framework chamado pyroutes. Pois bem, desde o início gostei da implementação pois ela faz uso dos decorators, que é uma coisa que acho fantástica na linguagem. Então comecei a estudar o código desse projeto, fiz meu fork no github e comecei a enviar pull requests. Comecei simples, apenas corrigindo erros triviais nos testes automatizados: 2d921fa9122a3211. Pouco depois, já estava corrigindo bugs e fazendo implementações menos triviais: 44d1708.

O que ganhei com tudo isso? Bastante experiência! Contato com pessoas de outras nacionalidades, conhecimento na linguagem que estava aprendendo e o mais importante: A oportunidade de outras pessoas me conhecerem e saberem das minhas habilidades e conhecimentos. Nesse projeto especificamente ganhei outra coisa também muito impotante: permissão de commit no repositório oficial!

A hora de começar meu próprio projeto

Depois de ter colaborado por algum tempo com esse projeto decidi que tinha chegado a hora de tentar uma nova empreitada: Tocar meu próprio projeto de código aberto. A idéia desse projeto apareceu ainda quando estava estudando sobre a linguagem. Como já disse aqui, acho muito importante ler código de outras pessoas e foi lendo o código do Trac que tive a idéia para o meu primeiro projeto: plugnplay.

O desenvolvimento desse projeto foi bem legal, foi meu primeiro código publicado que realmente tinha chance de ser útil para alguém além de mim, e isso é fantástico. Foi desenvolvido em apenas uma semana (de acordo com o histórico de commits).

O projeto é bem pequeno e fiquei bem feliz quando vi que ele já tinha 3 watchers!

O Segundo projeto

É claro que não parei por aí! Continuei com minhas pesquisas até que surgiu a idéia para o segundo projeto: wsgid. Essa idéia surgiu quando me deparei com um outro projeto: mongrel2. O objetivo do wsgid é me ajudar a ter uma infra-estrutura totalmente automatizada para fazer o deploy de minhas aplicações, e esse é o primeiro passo para que consiga chegar a esse objetivo.

Ao contráio do plugnplay, para esse projeto fiz um website, uma documentação completa e até comprei o domínio (wsgid.com), ou seja, coisa séria! =) E isso se mostrou muito importante. Querendo ou não, um projeto que apresenta um site oficial e uma documentação completa de suas funcionalidades atrai muito mais a atenção das pessoas, pois passa uma credibilidade maior. Uma coisa interessante é que o site oficial do wsgid roda usando o próprio wsgid!

A questão da documentação é especialmente importante pois temos que lembrar que nem todo mundo (mesmo desenvolvedores) terá curiosidade suficiente para ler o código-fonte para poder aprender a usar seu projeto, então ter uma forma fácil de começar a usar o projeto se mostra muito importante.

Visibilidade do projeto

O projeto wsgid teve uma visibilidade muito maior do que o plugnplay, e acho que isso se deve a alguns fatores. Em primeiro lugar ele é um projeto satélite de um projeto grande, o mongrel2. Só isso já te dá mais visibilidade. Outra coisa é que como eu estava participando da lista de desenvolvimento do mongrel2, mandei emails para essa lista divulgando o projeto e recebi feedbacks importantes. O fato da URL do site oficial estar na assinatura de todos os meus emails também ajuda. Novamente, isso só é possível pois o projeto possui um website.

Durante o desenvolvimento do projeto (até hoje, na verdade) ainda recebo notificações por email quando o projeto ganha mais um watcher em seu repositório. Hoje o projeto está com 13 watchers, o que é fantástico! Esse tipo de coisa te dá mais gás para continuar escrevendo o código, pois você vê que existem pessoas que acharam seu projeto interessante a ponto de decidirem acompanhar sua evolução. E isso é muito bom! Outra coisa ainda melhor é o número de forks que o projeto recebeu, até agora já são 5 em 6 meses de projeto.

Novamente, durante o desenvolvimento desse projeto tive a oportunidade de me comunicar com outras pessoas. Como já disse, entrei para a lista de desenvolveores do projeto mongrel2 e novamente comecei a submeter patches com pequenas correções. Depois, quando já estava com um domínio maior sobre o código já comecei a enviar códigos menos triviais, participei de várias discussões na lista até que, novamente, ganhei permissões de commit no repositório oficial. Essa é a lista de commits que fiz no repositório oficial, até o momento.

Conclusão

Minha conclusão disso tudo é que é muito divertido contribuir com algum projeto, melhor ainda é ter seus próprios e receber contribuições de outras pessoas  (já recebi um patch para o wsgid). Ter um side-project te dá mais conhecimento, faz com que as pessoas possam te conhecer (e isso é muito importante!) e te permite aprimorar suas habilidades.

Se você ainda não posui um projeto, comece um! Os dois que tenho surgiram para resolver problemas que eu tinha no dia-a-dia, tenho certeza que você também já viveu situações onde um programa poderia te ajudar ou até mesmo resolver seu problema. Pense que outras pessoas certamente já tiveram o mesmo problema e também poderiam ser ajudadas pelo seu projeto.

  1. #1 por carlopires em 06/07/2011 - 11:41

    Bom ler seu depoimento, cara. Eu também tenho larga experiência mas nunca me atirei a contribuir ativamente com algum projeto. Tenho usado o mongrel2 há muuuito tempo (acho q fui um dos primeiros). Espero poder contribuir mais ativamente e também fazer parte de algum projeto.

    • #2 por daltonmatos em 06/07/2011 - 11:56

      É isso aí! Tenho certeza que você não vai se arrepender de contribuir com um projeto de outra pessoa! Melhor ainda é quando contribuem com um projeto seu. Receber um patch corrigindo um bug dá um gás tremendo para podermos continuar com o desenvolvimento de nossos projetos!

      Significa que nosso projeto está sendo útil para alguém além de nós mesmos!

      Vi que vocẽ começou seu blog recentemente! Parabéns, é uma ótima iniciativa!

      Obrigado pela visita!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: