Bifurcação (desenvolvimento de software)

 Nota: Para outros significados de Fork, veja Fork (desambiguação).
Ilustraçao de Bifurcação (desenvolvimento de software) tomando como base o UNIX no início da década de 70, que originou inúmeros sistemas operacionais.

Em engenharia de software, uma bifurcação ou ramificação (em inglês: fork) acontece quando um desenvolvedor (ou um grupo de desenvolvedores) inicia um projeto independente com base no código de um projeto já existente, ou seja, quando um software é desenvolvido com base em outro, já existente, sem a descontinuidade deste último. O termo é também usado para outras separações de qualquer tipo de trabalho (por exemplo, há várias bifurcações da língua inglesa na Wikipédia).

O termo é particularmente usado no software livre ou de código aberto, quando uma divisão ocorre por causa de diferentes objetivos ou brigas de personalidade. Alguns vêem as bifurcações como uma fraqueza no software livre, mas outros acreditam que eles demonstram a adaptabilidade do modelo. A relação entre os times pode ser cordial ou muito dura (ver xMule e sua bifurcação aMule).

Em uma bifurcação deste tipo, ambos os lados herdam propriedade intelectual idêntica, mas tipicamente apenas o maior grupo, ou aquele que contém o arquiteto original, irá manter o nome original e o seu capital social associado. Então, existe uma penalidade na reputação associada com o bifurcação.

Isto pode acontecer no software de código fechado também, se os direitos ao código comum forem compartilhados; mas este é mais raro, como há, em geral, regras estritas sobre a propriedade do código. É mais comum no software de código fechado um desenvolvedor fazer uma bifurcação do seu próprio projeto, para desenvolver duas versões, como uma versão em janelas e outra em linha de comando.

Outro tipo de bifurcação é uma prática padrão em muitos projetos: fazer uma bifurcação estável ou de produção que será modificada apenas para correções de defeitos, enquanto uma versão de desenvolvimento continua tendo novas características adicionadas. Isto é uma prática comum no núcleo Linux, por exemplo, mas é comumente mal-interpretado na imprensa como o tipo mais problemático de bifurcação. Veja um exemplo aqui

Em alguns casos, um bifurcação pode voltar ao seu projeto original ou substituí-lo. O EGCS (Experimental/Enhanced GNU Compiler System) era um bifurcação do GCC que era mais ativo que o projeto original e foi depois considerado o projeto GCC oficial.

Outros exemplos

  • Enciclopedia Libre é um bifurcação da Wikipédia hispanófona para escapar de possíveis propagandas;
  • Pretty Good Privacy teve sua bifurcação fora dos Estados Unidos para livrar-se das restritivas leis de exportação de software criptográfico;
  • XEmacs é uma bifurcação do Emacs para suportar o ambiente Energize;
  • A divisão do BSD do AT&T UNIX;
  • As muitas variações proprietárias do UNIX — todas derivadas do AT&T UNIX e todas chamadas "UNIX", mas cada vez mais mutuamente incompatíveis. Veja guerras do UNIX;
  • O desenvolvimento do sistema de arquivos NTFS pela Microsoft foi baseado em trabalhos anteriores no HPFS que foi deixado para IBM;
  • O jogo Nethack tem muitas variantes usando o código original (dizem que o Nethack é uma bifurcação do jogo Rogue, mas seu código foi escrito independentemente);
  • OpenBSD era originalmente uma bifurcação do NetBSD, nascido de conflitos de personalidade entre os desenvolvedores do NetBSD;
  • OpenSSH foi uma bifurcação do SSH devido a licença do SSH 2.x era "não-livre" (mesmo estando seu código disponível), então, uma versão antiga do SSH 1.x, a última com licença de software livre, sofreu uma bifurcação e rapidamente quase todas as distribuições do Linux, versões do BSD e alguns Unixes proprietários substituíram o SSH pelo OpenSSH;
  • O X.Org X11 foi uma bifurcação do XFree86 por uma razão semelhante a bifurcação SSH/OpenSSH, resultando no desenvolvimento acelerado do X11 e na alta aceitação nas distribuições;
  • DragonflyBSD é uma bifurcação do FreeBSD, criado para ter uma abordagem técnica diferente da usada no FreeBSD 5;
  • Inkscape é uma bifurcação do Sodipodi;
  • aMule é uma bifurcação do xMule;
  • Mep Installer é uma bifurcação do Inno Setup;
  • Apple Inc. WebCore é uma bifurcação do KDE KHTML 3.1, esta tecnologia é usada em dois navegadores: Safari e Konqueror;
  • Mageia é uma bifurcação do Mandriva Linux;
  • Cinnamon é uma bifurcação do Gnome 3;
  • MATE é uma bifurcação do Gnome 2;
  • Namecoin ( ou NMC) é a primeira bifurcação da criptomoeda bitcoin;
  • Litecoin (Ł ou LTC) é uma bifurcação (ou altcoin, criptomoeda alternativa) mais conhecida da criptomoeda bitcoin.
  • LibreOffice é uma bifurcação de OpenOffice.org.

Ligações externas