Uma abordagem para atualização de forks frente ao projeto original
Evolução de software. Atualização de fork. Conflitos de mesclagem.
Diversos projetos de software se iniciam a partir de um projeto já existente. Essa prática, no ecossistema de Sistemas de Controle de Versão (VCS), é denominada fork. Por exemplo, o projeto Bootstrap, inicialmente desenvolvido no Twitter, possui hoje mais de 68 mil forks, o que indica que vários projetos se iniciaram a partir do código-fonte do Bootstrap em um certo instante e estão sendo customizados. O problema se dá quando tais projetos customizados querem obter as atualizações do projeto original, i.e., novas features, correção de bugs, etc. Essa mesclagem do código-fonte do projeto original com o projeto customizado normalmente gera conflitos que necessitam de intervenção humana para resolução. Mais importante, a resolução desses conflitos pode não ser trivial e representar uma tarefa árdua para desenvolvedores. Esta dissertação de mestrado, portanto, propõe uma abordagem para atualização de forks frente ao projeto original onde features são modularizadas, documentadas, rastreáveis e podem ser reutilizadas. Afirma-se que essa tarefa não pode mais ser realizada de uma forma ad hoc. De forma sucinta, ao invés de alterar o corpo de um método foo do projeto original, o desenvolvedor o implementa localmente e especifica, por meio de uma das dez instruções de uma DSL (Linguagem de Domínio Específico) proposta, algo como “substitua o método foo pela implementação local”. Uma ferramenta que automatiza a abordagem proposta foi desenvolvida para conduzir uma avaliação real em um projeto de software de grande porte frequentemente atualizado frente ao seu projeto original. Por meio dessa avaliação constatou-se que a abordagem aplica-se a cenários reais e evita conflitos de mesclagem. Avaliou-se também a perspectiva de desenvolvedores desse projeto quanto à abordagem proposta, que se mostrou positiva e contribuiu no planejamento de trabalhos futuros.