Fork (po ang. rozwidlenie) – sytuacja, w której rozwój projektu nie prowadzi już jedną drogą, ale rozwidla się na dwie lub więcej gałęzi.

Przykład Forku: Oś czasu rozwoju systemu Unix.

Podział forków ze względu na powód, dla którego powstały:

  • Jedna grupa forków dotyczy projektów, których zasięg stał się z praktycznego punktu widzenia za duży. Przykładowo na potrzeby projektu GIMP powstał zbiór widżetów, który został oddzielony od GIMP-a i przeniesiony do GTK+. GTK+ ulegało potem dalszym podziałom, odłączyły się od niego m.in. GLib i Pango.
  • Inną grupą są specjalne wersje projektu, rozwijane jednak we współpracy z „główną gałęzią”, np. wersje Apache, jądra Linuksa używane w różnych dystrybucjach, czy też CinePaint (dawniej Film Gimp), który odłączył się od GIMP-a.
  • Trzecią grupę stanowią sytuacje, kiedy wskutek konfliktów, co do właściwego kierunku rozwoju projektu powstaje kilka różnych gałęzi. Zwykle jedna z gałęzi powstałych po rozpadzie szybko ginie, np. EGCS odłączyło się od GCC, po czym stało się jedyną oficjalną wersją, gdyż programiści GCC przeszli do projektu EGCS (który od tego czasu ponownie nosi nazwę GCC). Czasem różne gałęzie istnieją obok siebie przez bardzo długi czas, pozostając ze sobą w różnych stosunkach. Tak jak np. XEmacs i GNU Emacs, czy różne wersje systemu BSDFreeBSD, OpenBSD, NetBSD itp.

Termin „fork” nie jest stosowany konsekwentnie i bywa często używany w stosunku do innych rodzajów projektów pochodnych (które w sensie ścisłym forkami nie są). I tak, według pracy Gonzalesa i González-Barahony[1] można wyróżnić następujące rodzaje takich projektów pochodnych lub powiązanych w pewien sposób:

  • klony (ang. clones) – projekty, w których „skopiowany” jest inny projekt pod kątem jego funkcjonalności;
  • odgałęzienia (ang. branches) – skopiowanie kodu i następujący po tym rozwój wybranych funkcji projektu, często w celu dołączenia i przetestowania nowych funkcji;
  • rozwidlenia / forki (ang. forks) – rozpoczęcie zupełnie niezależnego (od gałęzi pierwotnej) projektu, która często występuje pod własną nazwą i charakteryzuje się innymi „atrybutami niezależności”;
  • system pochodny (ang. derivation) – system, który jest w dużej mierze podobny i kompatybilny z systemem pierwotnym, lecz widoczne też są wyraźne różnice;
  • mod (ang. mod) – modyfikacja systemu polegająca na rozszerzeniu możliwości systemu (np. dodaniu nowych poziomów do gry), robiona głównie przez entuzjastów systemu.

Zobacz też

edytuj

Przypisy

edytuj
  1. Gregorio Robles, Jesús González-Barahona, Imed Hammouda, Björn Lundell, Tommi Mikkonen: A Comprehensive Study of Software Forks: Dates, Reasons and Outcomes. T. Open Source Systems: Long-Term Sustainability. Springer Berlin Heidelberg, 2012, s. 1–14. (ang.).