segunda-feira, 19 de dezembro de 2011

Quando um fork traz bons resultados

No dia 18 de janeiro de 2011, um grupo de programadores insatisfeitos com a liderança de Michael Niedermayer tomou o controle do FFmpeg e mudou o repositório de endereço. A alegação dos insurgentes era que Niedermayer não estava cumprindo seu papel de líder e mantenedor do projeto, pois não possuía a diplomacia necessária para o trabalho e rejeitava patches por picuinhas e diferenças pessoais. No começo, se falava em "mudança de liderança", mas com o passar do tempo -- pelo menos com o que foi possível obter das discussões públicas sobre o acontecido -- o termo correto passou a ser golpe. A trama foi feita na surdina e Niedermayer sofreu uma rasteira. Por mais inepto que fosse para o cargo, tudo deveria ter sido público, até mesmo para dar legitimidade caso fosse realmente necessário tirá-lo na marra.

Só que os insurgentes não contavam que o dono do domínio ffmpeg.org (Fabrice Bellard, criador do projeto) devolveria o controle do mesmo para Michael Niedermayer, que junto com os demais programadores que ficaram ao seu lado foi obrigado a alugar novos servidores e migrar todo o conteúdo antes sequestrado. Isso não deixou outra alternativa aos insurgentes a não ser criar um fork propriamente dito: Libav.

Até antes do racha, o projeto andava num ritmo lento. Fazia quase ano que não era lançada uma nova versão. Depois do arranca-rabo, contudo, não demorou para os dois lados lançarem versões beta de código novo, com muitas melhorias frente ao antigo código da versão 0.6. Felizmente, houve preocupação com compatibilidade da API. Enquanto o código do Libav 0.7 quebrou a API em relação ao velho FFmpeg 0.6, Niedermayer incorporou todas as mudanças do fork ao FFmpeg 0.7, porém manteve a API antiga, compatível com a versão 0.6. Em paralelo, o FFmpeg 0.8 incorporava as mudanças na API.

E desde lá este tem sido o método adotado por Niedermayer: git merge direto do fork para o repositório do FFmpeg. Não dá para negar que o lado do fork ficou com pessoal fera, como Ronald Bultje e Jason Garrett-Glaser, que junto com os demais tem trabalhado em mudanças que vão desde reestruturação e limpeza até otimizações assembly. Do outro lado, Niedermayer (que é um baita programador) conta com muitos colaboradores também, afinal "FFmpeg" ainda é o projeto mais antigo, mais conhecido. O suporte aos dispositivos de entrada via DirectShow (cuja autoria é brasileira -- obrigado, Ramiro Polla!), por exemplo, foi incorporado ao repositório do FFmpeg e ainda não foi importado pelo pessoal do Libav. Outro exemplo é o suporte para decodificação de H.264 por hardware no Mac OS X (VDA), que foi incorportado primeiro ao FFmpeg.

Niedermayer pode ter sido um mau líder. Não duvido. Pelo menos depois do fork ele ficou muito mais amigável a colaborações, o que rende críticas do outro lado através da justificatva que assim a qualidade do código diminui.

Não tenho como dizer qual é o "melhor". Sei é que o racha fez o código do FFmpeg/Libav voltar a progredir. A melhorar. É o que vale para os usuários.

Nenhum comentário:

Postar um comentário