Fork (desenvolvimento de software)

Um fork (termo em inglês que significa "fork", "bifurcação", "branch") designa na linguagem cotidiana, um novo software criado a partir do código-fonte de um software existente (não deve ser confundido com um fork , conjunto de dados associado a um sistema de arquivos objeto, nem com a chamada de sistema fork , que permite a um processo criar um novo). A sua existência decorre de uma escolha política proveniente de diferentes visões do projeto dos diferentes atores que dele participam, um ator que decide então criar a bifurcação para lhe impor as ideias que não poderia submeter ao projeto anterior, uma forma de cisma .

Os garfos são comuns no campo do software livre , incluindo licenças que permitem o uso, modificação e redistribuição do código-fonte. O Office québécois de la langue française recomenda os termos fork ou branch  ; as expressões "ramificação de software" e "ramificação de software" também são usadas.

Uma bifurcação pode ser benéfica para um determinado projeto quando sua governança atual leva a um impasse, sua aquisição por um novo grupo pode relançá-lo. Também pode ser prejudicial ao causar dispersão de recursos.

Um fork pode surgir como resultado de pontos de vista ou objetivos divergentes entre os desenvolvedores, ou mesmo como resultado de conflitos pessoais (Ex: Iceweasel no Debian é um fork do Mozilla Firefox ). Projetos pais e dissidentes podem ter relacionamentos amigáveis ​​( fork amigável) ou relacionamentos conflitantes ( fork hostil). Qualquer que seja a relação entre os dois projetos, as licenças de software livre permitem o empréstimo de código de um projeto para o outro. Assim, os diferentes BSDs regularmente emprestam código uns dos outros, porque compartilham a mesma licença.

Uma ilustração da regulamentação de projetos livres por este meio é o aparecimento de pelo menos três garfos livres para o projeto SourceForge no final do "desvio do SourceForge":

Spork

Existe outra categoria de garfo , que é chamada de " garfo " . Esse tipo de bifurcação é criado como resultado de problemas de relacionamento com o mantenedor (o mantenedor) de um pacote de software que se recusa a seguir a função tradicional de mantenedor. Por exemplo, ele se recusa a integrar correções totalmente válidas ou novos recursos sem fornecer o motivo. O spork consiste em pegar o código fonte do projeto no upstream e aplicar nele os patches legítimos rejeitados por este.

Um spork permite compartilhar o esforço de manutenção a jusante do projeto. Em vez de cada distribuição manter independentemente um conjunto de patches para aplicar ao projeto upstream, eles podem compartilhar o esforço criando um projeto intermediário que reúna os patches comuns, então tudo que as distribuições precisam fazer é gerenciar os patches específicos. .

Este foi particularmente o caso com projetos como:

O general inglês, spork ( colher-garfo ), é uma maleta criada a partir de colher (colher) e garfo (escala). Devido à dualidade de função do objeto, a analogia foi mantida com as ramificações do computador que mantêm ambas as funções existentes e adicionam novas.

Exemplos de garfos

Exemplos de "fusões"

Ao contrário dos forks , alguns projetos de software livre decidem fundir sua base de código porque compartilham objetivos semelhantes ou conseguem conciliar seus pontos de vista.

Exemplos de fusões de software livre:

Notas e referências

  1. Artigo fork , em wordreference.com
  2. "  fork  " , Le Grand Dictionnaire terminologique , Office québécois de la langue française (acesso em 30 de agosto de 2020 ) .
  3. "  Ramificação (Wikcionário, ciência da computação)  " .
  4. SourceForge Drift , da Free Software Foundation Europe
  5. Debian substitui glibc por eglibc , por Victor Stinner em linuxfr.org , 8 de maio de 2009.
  6. go-oo.org
  7. Mambo se torna Joomla , por Linuxfr.org em 7 de setembro de 2005.
  8. [1] , por Clubic.com em 4 de abril de 2013.
  9. Pylons e repoze.bfg fundem-se em Pyramid , por linuxfr.org , 17 de dezembro de 2010.