Fork
Origem: Wikipédia, a enciclopédia livre.
Em engenharia de software, um fork (traduzido do inglês para bifurcação ou ramificação) 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ários forks da língua inglesa na Wikipedia).
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 os forks 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 seu fork aMule).
Em um fork 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 fork.
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 um fork 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 fork é uma prática padrão em muitos projetos: fazer um fork estável ou de produção que será modificada apenas para correções de bugs, enquanto uma versão de desenvolvimento continua tendo novas características adicionadas. Isto é uma prática comum no kernel Linux, por exemplo, mas é comumente mal-interpretado na imprensa como o tipo mais problemático de fork. Veja um exemplo aqui
Em alguns casos, um fork pode voltar ao seu projeto original ou substituí-lo. O EGCS (Experimental/Enhanced GNU Compiler System) era um fork do GCC que era mais ativo que o projeto original e foi depois considerado o projeto GCC oficial.
[editar] Outros exemplos
- Enciclopedia Libre é um fork da Wikipedia em língua espanhola para escapar de possíveis propagandas.
- Pretty Good Privacy teve seu fork fora dos Estados Unidos para se ver livre das restritivas leis de exportação de software criptográfico.
- XEmacs é um fork 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 é um fork do jogo Rogue, mas seu código foi escrito independentemente).
- OpenBSD era originalmente um fork do NetBSD, nascido de conflitos de personalidade entre os desenvolvedores do NetBSD.
- OpenSSH foi um fork do SSH, que aconteceu porque 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, que foi a última a ter licença de software livre, sofreu um fork. Em alguns meses, quase todas as distribuições do Linux, versões do BSD e até mesmo alguns Unixes proprietários substituiram o SSH pelo OpenSSH.
- O X.Org X11 foi um fork do XFree86 por uma razão muito similar da que ocasionou o fork do SSH e OpenSSH. O desenvolvimento no X11 então acelerou bastante e a maioria das distribuições mudou.
- DragonflyBSD é um fork do FreeBSD, criado para ter uma abordagem técnica diferente daquela usada no FreeBSD 5.
- Inkscape é um fork do Sodipodi.
- aMule é um fork do xMule.
- Apple WebCore é um fork do KDE KHTML 3.1, esta tecnologia é usada em dois navegadores: Safari e Konqueror.