Nos anos 2000, ainda era comum copiar músicas de CDs de áudio para ouvir em seus tocadores de áudio (aparelhos dedicados para ouvir música, veja você). O formato mais comum, como sabemos, é o MP3, mas uma alternativa para quem não quer perder qualidade é gravar as músicas no formato FLAC (Free Lossless Audio Codec).

FLAC, como o acrônimo diz, é um formato de áudio sem perdas, aonde você tem uma cópia “um para um” das informações de áudio do CD (ou de qualquer outra origem), sem perdas (lossless). Em contrapartida, arquivos MP3 são comprimidos com perdas (lossy), jogando fora informações que você supostamente não conseguiria ouvir — mas que fazem diferença. Comparando com arquivos de imagem, é como se os MP3 fossem arquivos JPEG, enquanto os FLAC são arquivos PNG.

O suporte para os arquivos FLAC é bem difundido (em MP3 players não-vagabundos), assim como aplicativos de smartphone e de computador… com uma exceção: os tocadores da Apple.

Em 2010, comprei um iPod touch, que não suporta (até hoje!) a reprodução de arquivos FLAC. Ao invés disso, utiliza um formato proprietário chamado ALAC (Apple Lossless Audio Codec). Como eles são arquivos lossless, é possível converter de FLAC para ALAC, e vice-versa, sem nenhuma perda de qualidade.

Na época, usava Linux (pois é. Porque fui comprar um iPod touch mesmo?) e não existiam ferramentas gráficas para fazer essa conversão. Por isso, escrevi um shell script (ferramenta de linha de comando) para realizar essa conversão de forma automática, e subi o código no meu Github com o sugestivo nome flac2alac.

Na época eu programava em português. Que vergonha.

O primeiro commit (publicação de código) foi em 18 de setembro de 2010. Tinha apenas 24 linhas de código, e acompanhava um arquivo de documentação de 26 linhas. Fiz mais algumas alterações, num total de 5 commits, e julguei que ele atendia as minhas necessidades.

Poucos dias depois, em outubro, o primeiro fork (duplicação do código por um terceiro): Jeffrey Paul, vulgo @sneak, de Berlim, Alemanha, começou a implantar uma série de melhorias:

Desde então, já não uso mais iPod touch, nem me preocupo com arquivos FLAC ou ALAC, mas o projeto tomou vida própria:

Um total de 14 pessoas propuseram melhorias, incluindo compatibilidade com Mac OS X e diversas correções de bugs, e até um desenvolvedor de sistemas embarcados passou a utilizar meu código em seus projetos com Cubie Board.

Contei essa história toda para ilustrar quatro pontos.

Primeiro: compartilhe seus códigos. Não tenha vergonha; a internet é um ambiente vasto, se algo é útil para você, é bastante provável que também seja para outra pessoa.

Segundo: Release Early, Release Often. Não espere o código ficar 100% pronto até compartilhá-lo. Acredite em atualizações incrementais, em pequenos passos. Compartilhe não só o produto pronto quanto também o processo. Eventualmente, alguém pode aparecer para te ajudar — e levar para caminhos que você nem considerou no princípio.

Terceiro: documente seu código. Um código solto, sem descrição, não ajuda muito se as pessoas não souberem do que se trata. E documentar não é só comentários no código em si, como também um bom arquivo README.

Por fim: Ao contrário do que eu fiz, escreva seu código em inglês. :)