ソフトウェア開発の現場では、既存の
ソフトウェアパッケージの
ソースコードから分岐し、新たに独立した
ソフトウェアを開発するプロセスが「フォーク」と呼ばれています。この手法は、特にフリー
ソフトウェアや
オープンソースソフトウェアの分野で広く利用されており、ライセンス上の要件により、原開発者の許可を得ることなく行うことが可能です。
フォークとブランチング
多くの
ソフトウェアプロジェクトでは、安定版やリリース版と、新機能を取り込む開発版を明確に分けるために「ブランチ」を作成します。これは
ソフトウェア工学における「ブランチング」に似た手法であり、フォークと同様に新たな開発の方向性を提示するものです。フォークという言葉にはしばしばネガティブなイメージが伴うため、ブランチングという用語が使われることがあります。
フリーソフトウェアにおけるフォークの動機
フォークが発生する背後には、開発チーム間の目標の違いや個人的な対立が存在します。フォークが起こると、異なる開発チームはほぼ同一のコードベースを使用しますが、元の
ソフトウェアの名前やユーザーコミュニティは、多くの場合、元の開発者が属するグループが引き継ぎます。この過程は、しばしば
ソフトウェアの評判に影響を及ぼし、フォークされたチーム間の関係性は良好な場合もあれば、対立する場合もあります。たとえば、UbuntuとDebianの関係は良好ですが、
X.Org Serverと
XFree86の間には対立がありました。
フォークの双刃の剣
フォークは、自由な
ソフトウェア開発の結果として肯定的に捉えられる一方、重複した開発や利用者がどちらを選ぶべきかの混乱などのデメリットも持ち合わせています。理想的には、各グループが協力してリソースを共有することが望ましいですが、フリー
ソフトウェアライセンスには明文化された規定がないため、合意の下でしか実行されないことが多いです。そのため、フォークを行った際には他のフォークとの違いを強調することが求められます。
成功と失敗のフォーク
フォークが成功する例もあれば、逆にすぐに活動を停止することもあります。例えば、GCCから派生したEGCSは、非常に活発な開発が行われた結果、後に正式なGCCプロジェクトとして認められました。逆に、GNOMEからフォークしたGoneMEは、一時的な注目を集めたものの、すぐに開発が中止されてしまいました。
プロプライエタリソフトウェアにおけるフォーク
プロプライエタリ
ソフトウェアの場合、著作権は通常、個々の開発者ではなく雇用者に帰属します。これにより複数のバージョンを開発することが可能となり、社内でのフォークの頻度が高まります。これらのフォークは、一般的にルックアンドフィールや
ソフトウェアの挙動を一貫性を持たせることを目指します。商業目的で行われることが多く、フォークによって生じた開発コストを取り戻す計画が立てられることもあります。
その他の有名なフォーク
Linuxディストリビューションのほとんどは、何らかの他のディストリビューションから派生しており、これにはDebianやRed Hatが含まれます。また、
Pretty Good Privacyはアメリカの暗号輸出規制のためにアメリカ国外でフォークされました。ゲーム「NetHack」も複数の変種が存在し、その一例がSlash'EMです。さらに、
OpenBSDやOpenSSHなども有名なフォークとして知られています。特にOpenSSHは、SSH 2.xのプロプライエタリ化に伴い、SSH 1.xからフォークされ、新たな自由なライセンスの下で急速に普及しました。
まとめ
ソフトウェアのフォークは、その自由度と独立した開発を促進する一方で、社会的な緊張やリソースの重複といった課題も有します。それでも、フォークは
ソフトウェア開発の進化を支えており、これからも重要な役割を果たすでしょう。