فورک در برنامه‌ نویسی به چه معنا است و گیت هاب چگونه مفهوم آن را تغییر داد؟

فورک در برنامه‌نویسی و دنیای متن‌باز به‌معنای در اختیار گرفتن یک کپی از برنامه‌ی اصلی و ایجاد تغییرات دلخواه در آن است.

عملکرد دکمه‌ی فورک (Fork) در گیت‌هاب کمی با مفهوم اصلی آن در دنیای برنامه‌نویسی تفاوت دارد. درواقع گیت‌هاب از عبارت فورک استفاده می‌کند تا فعالیت کاربران را در پلتفرم خود افزایش دهد. آن‌ها با تمرکز روی قابلیت پول ریکوئست پلتفرم خود، کارایی دکمه‌ی فورک را کمی تغییر دادند، اما به‌هرحال طراحی جدید تنها به نفع گیت هاب می‌شود و کاربران به‌محض خارج شدن از آن و کار در پروژه‌های دیگر در دنیای واقعی، به مشکلاتی در مفهوم‌شناسی بر می‌خورند. در این مطلب زومیت به بررسی مفهوم اصلی فرایند فورک و تفاوت آن با دکمه‌ی مشهور گیت‌هاب می‌پردازیم. با درک همین تفاوت‌ها، به مفهوم اصلی توزیع‌شده‌بودن سیستم گیت هم پی خواهیم برد.

مقاله‌های مرتبط:

در گیت‌هاب، فورک به‌معنای یک کپی از مخزن کد خواهد بود که یک مشارکت‌کننده، تغییرات مورد نظر را پیش از انتشار عمومی در آن اعمال می‌کند. پیش از گیت‌هاب، مخزن کپی‌شده با این روش را یک شاخه‌ی شخصی از مخزن می‌نامیدند. شاخه‌ی شخصی لزوما برای کاربردی بودن نیاز به انتشار عمومی ندارد. با استفاده از دستورهای گیت می‌توان شاخه‌ی شخصی را به‌صورت محلی و بدون نیاز به انتشار عمومی ایجاد کرد.

کاربران سیستم گیت (و نه گیت‌هاب) با استفاده از ایمیل می‌توانند تغییرات اعمال‌شده در مخزن شخصی و خصوصی خود را برای بررسی اعمال در کدهای اصلی به توسعه‌دهنده‌ها ارسال کنند. درواقع در خارج از اکوسیستم گیت‌هاب و سرویس‌های مشابه، اکثر مشارکت‌کننده‌ها در یک پروژه نیازی به ارائه‌ی آنلاین و عمومی نسخه‌ی مخزن کد خود ندارند. آن‌ها از این مرحله عبور می‌کنند و زمان قابل‌توجهی هم در روند توسعه‌ی پروژه  صرفه‌جویی می‌شود.

در برخی مواقع، انتشار آنلاین شاخه‌ی خصوصی کد مفید خواهد بود. چنین رویکردی، اغلب، مواقعی اجرا می‌شود که گروهی از افراد روی شاخه‌ای با عمر بالا کار می‌کنند تا بعدا به‌عنوان پروژه‌ی اصلی منتشر شود. به‌عنوان نمونه‌ای از این رویکرد می‌توان به شاخه‌های لینوکس توسعه‌یافته توسط گِرگ کورا هارتمن اشاره کرد که برای بررسی تغییرات آتی کرنل لینوکس از سوی کاربران عمومی در دسترس هستند. به‌جز کرنل‌های گرگ، صدها شاخه‌ی لینوکسی دیگر نیز طبق همین روند به‌صورت آنلاین منتشر می‌شوند.

شاخه‌های لینوکسی که به‌صورت عمومی منتشر می‌شوند، عموما فرصت‌های پیاده‌سازی تغییرات را فراهم می‌کنند که برای کارهای طولانی‌مدت استفاده می‌شود. به‌علاوه مسئولان نگه‌داری زیرسیستم‌‌های کرنل نیز از آن‌ها استفاده می‌کنند. تغییرات در مخازن مذکور، پس از اعمال به سمت مخزن اصلی یعنی torvalds/linux می‌روند. به‌بیان ساده‌تر، روند تغییرات در شاخه‌های شخصی به‌صورت مستقل انجام می‌شود، اما می‌توان از آن‌ها برای همکاری بیشتر با هدف توسعه‌ی پروژه‌ی اصلی نیز استفاده کرد.

فورک در دنیای خارج از گیت هاب با هدف همکاری هرچه بیشتر جامعه طراحی شد

با نگاهی به تعریف بالا، به مفهوم اصلی توزیع‌شده‌بودن گیت پی می‌بریم. مفهومی که براساس فعالیت‌های همه‌جانبه انجام می‌شود و همکاری را به‌عنوان ماهیت اصلی خود نشان می‌دهد. در مفهوم اصلی گیت، هر شاخه اهمیت خاص خود را دارد و هیچ جریانی، اولویت آن‌ها را تأیید یا رد نمی‌کند. درواقع مخازن خصوصی همگی در تلاش برای رفع مشکلات مخزن اصلی عمل می‌کنند و در مجموع، به بهبود پروژه کمک خواهند کرد.

مفهوم فورک در دنیای خارج از گیت‌هاب، منجر به توسعه‌ی بزرگ‌ترین پروژه‌های جهان شده است. گیت نیز با تمرکز روی همین رویکرد و ایده شکل گرفت. برخی افراد، مدل مذکور را به‌نام «بازار» تشریح می‌کنند، درحالی‌که مدل گیت‌هاب بیشتر به سازمانی با کنترل روی همه‌ی زیرمجموعه‌ها شباهت پیدا می‌کند. در مدل گیت‌هاب، هر پروژه یک مرکز اصلی با مدیریت متمرکز دارد که توسط چند نفر اداره می‌شود. مرکز اصلی هیچ نیاز یا وابستگی به مفاهیم فورک و پول ریکوئست در گیت‌هاب ندارد. درواقع می‌توان مخزن اصلی را با روش ایمیلی یا هر روش دیگری بدون دخالت دیگران ساخت و توسعه داد. درنتیجه می‌توان گفت که مفهوم مشارکی بازار در گیت‌هاب وجود ندارد. مدل گیت‌هاب را بیشتر می‌توان به کلیسای جامع تشبیه کرد.

گیت هاب

برای درک بهتر مفهوم فورک در گیت‌هاب، مثالی با درنظرگرفتن سیستم کلیسای جامع در مدیریت پروژه‌ها بررسی می‌کنیم. در پروژه‌ای که به این صورت مدیریت می‌شود، برخی مشارکت‌کننده‌ها می‌توانند کد را کپی کرده و شعبه‌ای جدید در جای دیگر تأسیس کنند. آن‌ها پرچم جدیدی برای شعبه‌ی خود نصب می‌کنند و نام آن را نیز تغییر می‌دهند. در ادامه توسعه‌دهنده‌های قدیمی و جدید به مشارکت در شعبه‌ی جدید تشویق شده و از پروژه‌ی اولیه خارج می‌شوند.

در مثال بالا پروژه‌‌ای کاملا مستقل ایجاد می‌شود و در اصطلاح گیت‌هاب، فورک رخ می‌دهد. چنین روندی یک رخداد فاجعه‌بار برای پروژه محسوب می‌شود و عواقب آن شاید تا سال‌ها ادامه داشته باشد. به‌هرحال گیت‌هاب با هدف متمرکزتر کردن قدرت، معنای فورک را تغییر داد. گیت‌هاب سرویسی با اهداف درآندزایی محسوب می‌شود و قطعا هدف نهایی آن‌ها، کسب سود حداکثری است.

مفهوم فورکی که از سوی گیت‌هاب ایجاد شد، کاربران را به حضور در این پلتفرم تشویق و حتی مجبور می‌کند. درنتیجه مدل کلیسای جامع بسیار بهتر از مدل بازار در خدمت گیت‌هاب خواهد بود. با وجود این اقدامات، نمی‌توان گیت‌هاب را به‌عنوان سرویسی مفید در جهت همکاری برنامه‌نویس‌ها در نظر نگرفت؛ آن‌ها نقش مهمی در شهرت مفهوم متن‌باز داشتند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

code