O caminho para sua primeira contribuição Open Source



A primeira coisa que precisamos pensar é: sabemos definir o que é Open Source?
Mesmo após tanto tempo de existência, ainda temos um pouco de dificuldade de encontrar uma boa definição. Para encontrar uma definição, precisamos entender um pouquinho da história por trás da definição…
Em 1985 nasceu a Free Software Foundation
A fundação foi criada por Richard Stallman com a premissa de promover a liberdade dos usuários de computador e defender os direitos deles. Essa é a definição do próprio site da fundação.
Richard traz consigo questões filosóficas de liberdade, inclusive a fundação sugere que você pense no software livre como questão de liberdade e não de preço, e o software proprietário fere essas questões, e por conta disso ele viu a necessidade de criar um espaço que defenda essas liberdades, daí o nascimento da FSF.
A FSF tem o pensamento voltado para as “4 liberdades”. São elas:
0 — Executar o programa para qualquer propósito
1 — Estudar como o programa funciona e adaptá-lo as suas necessidades
2 — Redistribuir cópias de modo que você possa ajudar ao seu próximo
3 — Aperfeiçoar o programa e liberar o seu aperfeiçoamento de forma que a comunidade se beneficie dele
Em 1998 nasce a Open Source Initiative
Os fundadores da OSI(Open Source Initiative) pensavam no software livre de forma muito mais prática do que propriamente filosófica e tinham a intenção de se aproximar das empresas, mostrar que software livre pode ser economicamente eficiente e ter uma ótima qualidade ao mesmo tempo.
Dito tudo isso, podemos pensar que software livre e open source são diferentes do ponto de vista de princípios. Software livre: filosofia, liberdade. Open Source: vantagens tecnológicas e econômicas.
Você precisa Contribuir?
Existem muitas pessoas que atrelam desenvolvimento profissional a contribuição em projetos open source, e de fato, contribuir nesse tipo de projeto vai te fazer crescer em alguns aspectos: trabalho em equipe, visibilidade, se for um projeto com alcance internacional talvez te ajude em aprender outros idiomas, do ponto de vista de código também ajuda, mas não necessariamente vai te tornar um profissional melhor do que uma pessoa que não contribui com open source. Se você ajuda um colega de trabalho, já é uma forma de contribuição, se você fornecesse feedback para as empresas responsáveis pelas tecnologias que você usa no dia-a-dia, também é uma forma de contribuir, entre diversas outras coisas do cotidiano que você pode fazer.
Então, não! Para ser um bom desenvolvedor, não necessariamente você precisa estar em um projeto open source.
Apache Software Foundation
A ASF(Apache Software Foundation) é uma das fundações mais importantes para o movimento open source, inclusive é afiliada a OSI(Open Source Initiative), foi criada em 1999(exatamente um ano após a OSI) por diversos desenvolvedores, a princípio focada no Apache HTTP Server que já vinha sendo desenvolvido bem antes da fundação se formar de fato e que posteriormente se tornaria um lugar para acolher todo tipo de projeto de código aberto, hoje são mais de 230 projetos sob o nome “Apache”.
Apache TomEE
Hoje vamos focar no projeto Apache TomEE…
O projeto TomEE é a versão JavaEE do Tomcat(Tomcat + JavaEE = TomEE) criado juntando diversos componentes open source, tais como: Tomcat, OpenEJB, OpenWebBeans, OpenJPA, Geronimo, MyFaces, ActiveMQ, CXF, Derby e etc. O anúncio do projeto foi realizado no JavaOne de 2011 e em Abril de 2012 a versão 1.0.0 foi lançada.
Workflow de contribuição
Em primeiro lugar, temos que nos inscrever na lista de discussão, para isso mandamos um e-mail para: dev-subscribe@tomee.apache.org, após isso você receberá um e-mail de confirmação semelhante a esse:

após responder esse e-mail, você receberá um outro e-mail de boas-vindas:

Você está incluso na lista de discussão, agora a comunidade precisa te conhecer, então você deve enviar um e-mail para: dev@tomee.apache.org com o assunto: “ How can I help?”, e no corpo uma breve apresentação sobre você e suas experiências:

"Hi, my name is Marco and i'm from São Paulo, Brazil. I'm developer with 3 years of experience and i never contributed for a open source project. I read about the TomEE and i liked of the idea and i would of contribute..."
Três observações:
1 — A comunicação é em inglês, pois é um projeto de alcance global, então tem pessoas de diversos lugares do mundo trabalhando nele.
2 — Você não precisa ser fluente em inglês para participar, a comunidade é extremamente receptiva e te ajudarão mesmo que você escreva errado, então não tenha medo.
3 — O meu inglês é ruim, mas estou na luta para melhorar… Após se apresentar, as pessoas vão te orientar:
Uma dica: independente do projeto open source que você for contribuir, uma excelente maneira de começar é fazendo coisas que geralmente desenvolvedores não gostam muito: documentações, traduções, testes(no caso dos testes a mentalidade das pessoas vem mudando bastante, mas ainda existe resistência a cultura de testes).
Para governança do projeto é utilizada a ferramenta JIRA, então é necessário que você crie uma conta e após criar, você deve logar aqui:
Muito bem, agora vamos ao fluxo prático:
Criar ticket no JIRA;
Fork do projeto no repositório apache/tomee no Github
Criação da branch com a identificação do que será feito
OBS: No caso de traduções e documentações, não é necessária uma prévia discussão, mas se a sua contribuição for de código, antes de trabalhar na feature você deve abrir a discussão com a comunidade através da lista de discussão no e-mail dev@tomee.apache.org, na Apache existe o “Apache Way” que é como se fosse um lema que diz: “se não aconteceu na lista de discussão, então não aconteceu”.
Após trabalhar na feature, o título do seu pull request deve referenciar o número do ticket do JIRA
Após realizar o pull request, você deve enviar um e-mail para que todos saibam no que você trabalhou e assim alguém possa revisar o seu pull request
Após revisado e aprovado, a sua contribuição foi realizada, agora você deve mudar o status do seu ticket no JIRA
UFA! Até que enfim acabou… Sua primeira contribuição está feita! Até a próxima =)
Referências:
Free Software Foundation - Wikipedia
Free Software Foundation - FSF