Ninguém tem obrigação de aceitar seu código

Tem uma coisa que há algum tempo tem me incomodado um pouco. A ideia de que «qualquer coisa» serve como contribuição de software livre e a consequência disso que é uma galera achando que qualquer porcaria de pull request tem que ser aceito.

Programar dá trabalho

Como ouvi esses dias: «é triste, mas o óbvio tem que ser dito» e o óbvio aqui é que programar dá trabalho, mexer num projeto que você não conhece mais ainda. E o trabalho é dobrado porque além do trabalho de escrever o código alguém tem que verificar o que foi feito. Então o pr não é algo que chega de graça é trabalho dos dois lados.

E mais, pra chegar um pull request num repositório significa que o projeto já existe e tem utilidade pros outros. O trabalho já posto no projeto é muito maior que o trabalho posto no pr. Quando você manda um melhoria pra um projeto que já existe significa que alguém já pôs muito trabalho naquilo escrevendo, documentando, polindo. O seu pr é só uma gota no oceano. Sempre que alguém reclama que perdeu horas e teve o patch rejeitado eu lembro do Eric Idle dizendo: Oh, it took me hours.

O software é livre, o repo é meu

Quando você usa um programa ele tem uma licença, as de software livre em termos gerais dizem que você pode usar/alterar/distribuir da maneira que quiser não tem nada aí sobre o autor do software ser obrigado a usar código dos outros e um repositório não faz muita diferença, independente de onde o código estiver hospedado ainda vai dar pra usar. E tendo o seu fork do código ainda se pode colocar qualquer coisa, por mais super específica que for, que se fosse em um repositório compartilhado não caberia porque não interessa a mais ninguém, pode-se fazer experimentos sem quebrar nada, pode alterar tudo o que quiser. O direito de fork é a melhor coisa que tem.

Isso gera uma fragmentação da base de código, que geralmente é vista como ruim, mas no final das contas acaba tendo um bom resultado porque gera mais software útil, pra mais casos e quando as modificações do fork são importantes é capaz que o projeto original aproveite. Um repositório não deveria fazer diferença a não ser que a preocupação seja o nome.

Não me importo com seu marketing pessoal

E aqui é o que eu acho que mais estava me incomodando nessa coisa toda. Há um tempo eu já estava pensando em escrever algo sobre isso, mas esses dias vi um vídeo de um desses youtubers programadores que foi feio demais. Basicamente o cara teve um pr rejeitado e fez um vídeo choroso depois. Mas aí vamos ver qual foi a “contribuição” e a coisa pega. O que o cara fez foi tirar um comentário e alterar a variável que se usava em uma condição, uma mudança que por si só não melhora em nada o programa. O responsável pelo repo falou que uma mudança assim só seria aceita se viesse acompanhada de outras pra manter o padrão do projeto e fechou o pr. Aí veio o choro.

O cara aparentemente é alguém que já é profissional há anos, ele certamente sabe fazer mais que isso e sabe que o que fez não vai melhorar em nada o código. A única razão de fazer isso foi se promover, pra poder dizer «contribuo com open source» e pra gravar um vídeo pro youtube. Gravar o vídeo pro youtube rolou…

Eu não ligo que alguém queira se promover em cima do código que a pessoa fez, mas se quiser se promover faça algo decente, não vem com essa de alterar alguma besteira só pra depois ter seu nome nos colaboradores. Isso não ajuda o projeto em nada, só toma mais tempo dos envolvidos e isso pra um cara qualquer fazer sua propaganda.

O óbvio tem que ser dito e “comunidade” de software é feita principalmente em cima de software, a contribuição mais necessária é software. Quer fazer propaganda de si? Faz, mas faz direito.