ソフトウエア開発における「フォーク」とは,あるプロジェクトの開発成果を利用して,別プロジェクトの開発が始まること。食事に使うフォークは根元が一つで,先端が複数に分かれている。これになぞらえ,ソフトウエアにおける過去の開発成果の分岐的な継承をフォークと呼ぶ。

 オープンソース・ソフトウエアにおいては特に,最初のプロジェクト(開発者)の許可なく,別のプロジェクトを開始できるため,フォークが起こりやすい。

 例えば,Linuxディストリビューションの歴史は,フォークの連続といえる。例えばDebian GNU/LinuxからKNOPPIXやUbuntuが,Red Hat LinuxからFedoraやVine Linux,Yellow Dog Linuxがフォークしている。いずれも基となるプロジェクトの開発成果を用いて新しいプロジェクトが分岐しており,基プロジェクトも何らかの形で継続している。

 アプリケーション・ソフトウエアでは,OpenOffice.orgからフォークしたNeoOffice(Mac OS Xに特化したもの)などの例がある。

 フォークの原因は二つに大別できる。ライセンスや主要機能について開発者間の意見の一致が見られないために開発が分岐したフォークと,通常の開発プロセスに含まれるフォークである。

 前者の例は,X Window System用のXサーバーの開発におけるXFree86と,X.Orgなどがある。この場合,一方に追加されたコードが他方に波及しにくくなる。

 後者の例は,オープンソースの開発プロジェクトにおいてごく自然に起きている。例えば,多くのオープンソース・ソフトウエアでは新しい機能を盛り込んだ開発版A’の開発が,安定版Aのフォークによって始まる。安定版Aの開発はしばらく継続するが次第に収束する。また,開発版A’は,動作の安定性が認められた段階で新たな安定版Bとなる。