Arquivo de agosto \29\UTC 2007

Sobre grandes alterações pequenas

Qual é a granularidade das modificações que você envia ao seu sistema de controle de versão? Você se limita a modificações pequenas (que mudam o nome de uma varíavel ou outra, por exemplo) ou gosta das mas volumosas (como as que mudam o nome de uma rotina, introduzem um parâmetro novo e ainda corrigem um defeito em um pedaço do código que a chamava)?

Não é uma pergunta retórica. Pode responder. O espaço para comentários ali embaixo serve exatamente para isso.

Quando envio patches para algum projeto, tento torná-los tão pequenos e localizados quanto possível. Eu sei que não é uma experiência muito agradável revisar modificações monstruosas que afetam toda a base de código e tento poupar disso os mantenedores dos projetos para os quais colaboro. Eles são programadores, mas também são gente.

Não é tão raro que uma parte das modificações em um patch sejam aceitas e outras não. Caso o patch enviado seja muito extenso, o mantenedor vai ter um bocado de trabalho para separar as partes boas das ruins. Se ele tiver muitas outras preocupações no dia (o que não é nada incomum), pode ser que ele simplesmente recuse todo o patch, apesar de haver mudanças úteis, só para poupar o trabalho de filtragem. Para quem está contribuindo, certamente é melhor que as modificações sejam aceitas e um conjunto de patches pequenos torna as chances disso acontecer muito maiores do que um único patch grande. Nem todo patch que enviamos é aceito e precisamos conviver com isso. Modificações pequenas e localizadas ajudam muito quando algumas delas precisa ser rejeitadas.

Patches pequenos costumam ser mais ortogonais e fazem muito sentido no contexto colaborativo de um projeto de código aberto, principalmente com sistemas de controle de versão distribuídos. Mas ainda existem sistemas centralizados e — pior — cuja única solução para edição concorrente é usar travas para tentar tornar o desenvolvimento serializado e impedir toda e qualquer tentativa de paralelismo. Como se este cenário não fosse suficientemente ruim, alguns sistemas não suportam commits com múltiplas modificações e obrigam todo mundo a registrar alterações arquivo por arquivo, mesmo que toquem em muitos pontos. Para terminar imagine que a única forma de interação da equipe com a ferramenta de controle de versão seja um cliente gráfico com interface do século passado e dificilmente automatizável.

É serio mesmo, essas coisas ainda existem.

E tem gente que precisa usá-las.

Quando o mundo conspira contra você com tanta intensidade, fica mais difícil resistir à tentação de fazer uma modificação monstruosa com um comentário altamente descritivo como “Modificações do código”. Porém, mesmo quando estou em algum ambiente parecido com este, ainda tento fazer modificações pequenas. Não faço alterações tão pequenas como quando estou usando Darcs e vez ou outra combino duas ou três modificações em uma, mas sempre evito registrar uma alteração que resolva mais de um defeito ou melhoria.

Parece haver um certo conflito entre commits localizados e implementação de recursos. A renomeação de uma rotina, por exemplo, pode ser um dos passos que leva à inclusão de uma nova funcionalidade, mas com certeza não vai resolver a bronca sozinha. As funcionalidades precisam de modificações maiores, mas modificações menores são mais fáceis de entender, revisar e reverter. Será que este conflito real ou apenas um produto da nossa imaginação?

Twitter, eu me rendo

Twitter é um serviço para publicação de mensagens curtas. As pessoas usam todo tipo de aparelho eletrônico para responder a famigerada pergunta “O que você está fazendo?”. As mensagens precisam caber em 140 caracteres. Isso, além de possibilitar mensagens rápidas enviadas de aparelhos celulares, faz com que todo mundo se concentre em dar o recado com poucas palavras.

Quando tomei conhecimento do Twitter, minha reação inicial foi questionar porque diabos alguém iria querer saber o que eu estou fazendo. Eu definitivamente não estou nem aí para o que milhares de anônimos com acesso à Internet estão fazendo agora. Afinal de contas, esse é mais ou menos o mesmo propósito de um blog-diário, só que mais instantâneo.

Mas eu estou muito interessado em aprender com eles. Não importa quem sejam, se eles podem falar algo sobre um assunto que me interesse, quero pelo menos tentar escutar.

Eu tenho o hábito de compartilhar pensamentos rápidos com as pessoas através de mensagens curtas. Todo mundo que está na minha lista de contatos em alguma rede de mensagens instantâneas já deve ter recebido uma dessas (geralmente acompanhadas de um link). Este meio é muito bom para compartilhar estes estalos, momentos eureka e pequenas descobertas. Porém estas mensagens simplesmente querem ser públicas e não gostam de ficar confinadas entre duas pessoas apenas. Uma das maiores evidências que tenho disso é o fato das minhas mensagens nunca serem enviadas para uma pessoa só. Ao invés disso, quase todo mundo que está on-line no momento recebe uma cópia. Além disso, muitas vezes também tenho vontade de publicar as mensagens neste blog aqui, só não acho que seja a mídia mais apropriada.

Assim como aconteceu com os blogs, eu deixei minha impressão inicial de lado e descobri que um serviço de mensagens públicas não precisa ser usado para futilidades e pode ser muito útil para compartilhar estes pensamentos breves. Faz muito sentido tornar público aquilo que não se tem certeza a exatamente quem pode interessar. Assim as pessoas podem escolher por si mesmas o que ler. Por cima disso tudo, como uma cobertura especial, está o robô de mensagens instantâneas que me permite manter a mesma forma de publicação que usava antes. Ou seja, eu não preciso entrar em algum site especial para publicar minhas mensagens, posso usar meu serviço de mensagens instantâneas favorito como sempre fiz. Só que agora ao invés de mandar uma mensagem para uma ou duas pessoas que eu escolher, posso “falar” apenas com o robô e as pessoas podem escolher me dar um segundo da sua atenção ou não.

Portanto, quem quiser acompanhar alguns devaneios mais curtos do que normalmente encontra aqui neste blog, é só seguir para http://twitter.com/thiagoarrais e quem recebia minhas mensagens de vez em quando só vai ser importunado se quiser. Lá ninguém vai encontrar muita coisa sobre o que eu estou fazendo agora, mas pode ter uma idéia do que estou pensando.

P.S.: Não consegui achar um artigo na wikipedia em português sobre a palavra “Eureka”. Será que alguém tomaria o tempo para começar um?



Seguir

Obtenha todo post novo entregue na sua caixa de entrada.