Fork – Definicja i Podział
Fork, czyli rozwidlenie projektu, to sytuacja, w której rozwój oprogramowania nie podąża już jedną ścieżką, lecz dzieli się na dwie lub więcej gałęzi. Istnieją różne powody powstawania forków, które można podzielić na trzy główne grupy.
Rodzaje Forków
- Podział ze względu na zasięg projektu: Niektóre projekty stają się zbyt duże i wymagają oddzielnych gałęzi. Przykładem jest GIMP, z którego powstał zbiór widżetów GTK+, a następnie od GTK+ odłączyły się GLib i Pango.
- Wersje współpracujące: Projekty rozwijane równolegle z główną gałęzią. Przykłady to różne wersje Apache, jądro Linuksa w dystrybucjach oraz CinePaint, który wyodrębnił się z GIMP-a.
- Konflikty rozwoju: Powstawanie gałęzi w wyniku niezgodności co do kierunku rozwoju. Często jedna gałąź zyskuje dominację, jak w przypadku EGCS, które przekształciło się w oficjalną wersję GCC. Inne gałęzie mogą istnieć równolegle przez długi czas, jak XEmacs i GNU Emacs.
Przykład z Compiz
W projekcie menedżera okien do Linuksa Compiz, powstała gałąź eksperymentalna Beryl. W 2007 roku, liderzy obu grup programistycznych zdecydowali się połączyć projekty w jeden, tworząc Compiz Fusion.
Rodzaje Projektów Pochodnych
Termin „fork” jest często używany w odniesieniu do innych typów projektów pochodnych. Według badań Gonzalesa i González-Barahony, można wyróżnić następujące kategorie:
- Klony: Projekty, które kopiują funkcjonalność innego projektu.
- Odgałęzienia: Skopiowanie kodu w celu rozwijania wybranych funkcji i testowania nowości.
- Rozwidlenia / forki: Niezależne rozpoczęcie nowego projektu, często z własną nazwą i atrybutami.
- Systemy pochodne: Systemy podobne i kompatybilne z pierwotnym, z widocznymi różnicami.
- Mod: Modyfikacje systemu, zazwyczaj tworzone przez entuzjastów, w celu rozszerzenia możliwości.
Forki stanowią ważny aspekt w rozwoju oprogramowania, umożliwiając różnorodność i innowacje w projektach technologicznych.