سیستم‌عامل و نرم‌افزار

فناوری اطلاعات

June 6, 2019
23:33 پنجشنبه، 16ام خردادماه 1398
کد خبر: 100055

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

 
فورک در برنامه‌نویسی و دنیای متن‌باز به‌معنای در اختیار گرفتن یک کپی از برنامه‌ی اصلی و ایجاد تغییرات دلخواه در آن است.
 
 
عملکرد دکمه‌ی فورک (Fork) در گیت‌هاب کمی با مفهوم اصلی آن در دنیای برنامه‌نویسی تفاوت دارد. درواقع گیت‌هاب از عبارت فورک استفاده می‌کند تا فعالیت کاربران را در پلتفرم خود افزایش دهد. آن‌ها با تمرکز روی قابلیت پول ریکوئست پلتفرم خود، کارایی دکمه‌ی فورک را کمی تغییر دادند، اما به‌هرحال طراحی جدید تنها به نفع گیت هاب می‌شود و کاربران به‌محض خارج شدن از آن و کار در پروژه‌های دیگر در دنیای واقعی، به مشکلاتی در مفهوم‌شناسی بر می‌خورند. در این مطلب زومیت به بررسی مفهوم اصلی فرایند فورک و تفاوت آن با دکمه‌ی مشهور گیت‌هاب می‌پردازیم. با درک همین تفاوت‌ها، به مفهوم اصلی توزیع‌شده‌بودن سیستم گیت هم پی خواهیم برد.
 
در گیت‌هاب، فورک به‌معنای یک کپی از مخزن کد خواهد بود که یک مشارکت‌کننده، تغییرات مورد نظر را پیش از انتشار عمومی در آن اعمال می‌کند. پیش از گیت‌هاب، مخزن کپی‌شده با این روش را یک شاخه‌ی شخصی از مخزن می‌نامیدند. شاخه‌ی شخصی لزوما برای کاربردی بودن نیاز به انتشار عمومی ندارد. با استفاده از دستورهای گیت می‌توان شاخه‌ی شخصی را به‌صورت محلی و بدون نیاز به انتشار عمومی ایجاد کرد.
 
کاربران سیستم گیت (و نه گیت‌هاب) با استفاده از ایمیل می‌توانند تغییرات اعمال‌شده در مخزن شخصی و خصوصی خود را برای بررسی اعمال در کدهای اصلی به توسعه‌دهنده‌ها ارسال کنند. درواقع در خارج از اکوسیستم گیت‌هاب و سرویس‌های مشابه، اکثر مشارکت‌کننده‌ها در یک پروژه نیازی به ارائه‌ی آنلاین و عمومی نسخه‌ی مخزن کد خود ندارند. آن‌ها از این مرحله عبور می‌کنند و زمان قابل‌توجهی هم در روند توسعه‌ی پروژه  صرفه‌جویی می‌شود.
 
در برخی مواقع، انتشار آنلاین شاخه‌ی خصوصی کد مفید خواهد بود. چنین رویکردی، اغلب، مواقعی اجرا می‌شود که گروهی از افراد روی شاخه‌ای با عمر بالا کار می‌کنند تا بعدا به‌عنوان پروژه‌ی اصلی منتشر شود. به‌عنوان نمونه‌ای از این رویکرد می‌توان به شاخه‌های لینوکس توسعه‌یافته توسط گِرگ کورا هارتمن اشاره کرد که برای بررسی تغییرات آتی کرنل لینوکس از سوی کاربران عمومی در دسترس هستند. به‌جز کرنل‌های گرگ، صدها شاخه‌ی لینوکسی دیگر نیز طبق همین روند به‌صورت آنلاین منتشر می‌شوند.
 
 
شاخه‌های لینوکسی که به‌صورت عمومی منتشر می‌شوند، عموما فرصت‌های پیاده‌سازی تغییرات را فراهم می‌کنند که برای کارهای طولانی‌مدت استفاده می‌شود. به‌علاوه مسئولان نگه‌داری زیرسیستم‌‌های کرنل نیز از آن‌ها استفاده می‌کنند. تغییرات در مخازن مذکور، پس از اعمال به سمت مخزن اصلی یعنی torvalds/linux می‌روند. به‌بیان ساده‌تر، روند تغییرات در شاخه‌های شخصی به‌صورت مستقل انجام می‌شود، اما می‌توان از آن‌ها برای همکاری بیشتر با هدف توسعه‌ی پروژه‌ی اصلی نیز استفاده کرد.
 
فورک در دنیای خارج از گیت هاب با هدف همکاری هرچه بیشتر جامعه طراحی شد
با نگاهی به تعریف بالا، به مفهوم اصلی توزیع‌شده‌بودن گیت پی می‌بریم. مفهومی که براساس فعالیت‌های همه‌جانبه انجام می‌شود و همکاری را به‌عنوان ماهیت اصلی خود نشان می‌دهد. در مفهوم اصلی گیت، هر شاخه اهمیت خاص خود را دارد و هیچ جریانی، اولویت آن‌ها را تأیید یا رد نمی‌کند. درواقع مخازن خصوصی همگی در تلاش برای رفع مشکلات مخزن اصلی عمل می‌کنند و در مجموع، به بهبود پروژه کمک خواهند کرد.
 
کلیسای جامع و بازار
دو اصطلاح «کلیسای جامع» (Cathedral) و «بازار» (Bazaar) برای اشاره به دو مدل کاملا متفاوت توسعه‌ی پروژه‌های متن باز، اولین‌بار در سال ۱۹۹۹ توسط اریک ریموند، در کتاب «کلیسای جامع و بازار» معرفی شدند.
 
بنا به تعریف ریموند، کلیسای جامع مدلی مرکزگرا است که در آن گروه مشخصی از توسعه‌دهنده‌ها (یا حتی یک توسعه‌دهنده) نرم‌افزاری را بدون کمک خارجی توسعه می‌دهند. در این مدل ایده‌ها، پیشنهادها و پچ‌های ارائه‌شده از خارج گروه مرکزی نادیده گرفته می‌شود. اگرچه معمولا نرم‌افزارهای تجاری از این مدل توسعه استفاده می‌کنند؛ اما می‌توان نمونه‌هایی از پروژه‌های متن باز غیر تجاری که با مدل کلیسای جامع توسعه داده شده و می‌شوند را نیز یافت. 
 
از سوی دیگر در مدل بازار فرایند توسعه کاملا باز است و افراد متعددی آزادانه و بدون دخالت قدرتی مرکزی، کد منبع را تغییر می‌دهند. در عمل در بسیاری از پروژه‌های متن باز از ترکیبی از این دو مدل توسعه استفاده می‌شود و نمی‌توان آن‌ها را به‌صورت کامل در یکی از این دو دسته‌بندی قرار داد.
 
مدل گیت‌هاب
مفهوم فورک در دنیای خارج از گیت‌هاب، منجر به توسعه‌ی بزرگ‌ترین پروژه‌های جهان شده است. گیت نیز با تمرکز روی همین رویکرد و ایده شکل گرفت. برخی افراد، مدل مذکور را به «بازار» تشریح می‌کنند، درحالی‌که مدل گیت‌هاب بیشتر به سازمانی با کنترل روی همه‌ی زیرمجموعه‌ها شباهت پیدا می‌کند. در مدل گیت‌هاب، هر پروژه یک مرکز اصلی با مدیریت متمرکز دارد که توسط چند نفر اداره می‌شود. مرکز اصلی هیچ نیاز یا وابستگی به مفاهیم فورک و پول ریکوئست در گیت‌هاب ندارد. درواقع می‌توان مخزن اصلی را با روش ایمیلی یا هر روش دیگری بدون دخالت دیگران ساخت و توسعه داد. درنتیجه می‌توان گفت که مفهوم مشارکی بازار در گیت‌هاب وجود ندارد. مدل گیت‌هاب را بیشتر می‌توان به کلیسای جامع تشبیه کرد.
 
 
برای درک بهتر مفهوم فورک در گیت‌هاب، مثالی با درنظرگرفتن سیستم کلیسای جامع در مدیریت پروژه‌ها بررسی می‌کنیم. در پروژه‌ای که به این صورت مدیریت می‌شود، برخی مشارکت‌کننده‌ها می‌توانند کد را کپی کرده و شعبه‌ای جدید در جای دیگر تأسیس کنند. آن‌ها پرچم جدیدی برای شعبه‌ی خود نصب می‌کنند و نام آن را نیز تغییر می‌دهند. در ادامه توسعه‌دهنده‌های قدیمی و جدید به مشارکت در شعبه‌ی جدید تشویق شده و از پروژه‌ی اولیه خارج می‌شوند.
 
در مثال بالا پروژه‌‌ای کاملا مستقل ایجاد می‌شود و در اصطلاح گیت‌هاب، فورک رخ می‌دهد. چنین روندی یک رخداد فاجعه‌بار برای پروژه محسوب می‌شود و عواقب آن شاید تا سال‌ها ادامه داشته باشد. به‌هرحال گیت‌هاب با هدف متمرکزتر کردن قدرت، معنای فورک را تغییر داد. گیت‌هاب سرویسی با اهداف درآمدزایی محسوب می‌شود و قطعا هدف نهایی آن‌ها، کسب سود حداکثری است.
 
ساختار مدل فورک و پول ریکوئست در گیت‌هاب، بیشتر شبیه به مدل کلیسای جامعی است که کاربران را در پلتفرم نگه‌می‌دارد؛ کاری که گیت‌هاب با استفاده از مدل بازار قادر به انجام آن نبود. اما ازطرفی سیستم غیر متمرکزی همچون گیت که روی پروتکل‌های غیرمتمرکزی چون ایمیل ساخته‌شده است را نمی‌توان با سرویسی متمرکز و مدل کلیسای جامع مدیریت کرد؛ بنابراین گیت‌هاب مجبور شد مدل خاص خودش را (که نه می‌توان آن را به مدل کلیسای جامع تشبیه کرد و نه به مدل بازار شباهت دارد) طراحی کند.
 
هدف از آنچه در این مقاله گفته‌شد محکوم کردن سرویسی خاص و ستایش از سرویس دیگر نیست؛ چرا که گیت‌هاب نقش بسیار مهمی در به‌شهرت رساندن پروژه‌های متن‌باز داشته‌است. هدف اصلی این مقاله آشنایی با ساختار و ماهیت گیت‌هاب و دست‌یافتن به درکی بهتر از انگیزه‌های اصلی پشت این سرویس تجاری است.
  • مشترک شوید!

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

    با عضویت در خبرنامه پیامکی آژانس خبری فناوری اطلاعات و ارتباطات (ایستنا) به طور روزانه آخرین اخبار، گزارشها و تحلیل های حوزه فناوری اطلاعات و ارتباطات را در هر لحظه و هر کجا از طریق پیام کوتاه دریافت خواهید کرد. برای عضویت در این خبرنامه، مشترکین سیمکارت های همراه اول لازم است عبارت 150 را به شماره 201464 و مشترکین سیمکارت های ایرانسل عبارت ozv ictn را به شماره ۸۲۸۲ ارسال کنند. دریافت موفق هر بسته خبری که محتوی پیامکی با حجم ۵پیامک بوده و ۴ تا ۶ عنوان خبری را شامل میشود، ۳۵۰ ریال برای مشترک هزینه در بردارد که در صورتحساب ارسالی از سوی اپراتور مربوطه محاسبه و از اعتبار موجود در حساب مشترکین سیمکارت های دائمی کسر میشود. بخشی از این درآمد این سرویس از سوی اپراتور میزبان شما به ایستنا پرداخت میشود. مشترکین در هر لحظه براساس دستورالعمل اعلامی در پایان هر بسته خبری قادر خواهند بود اشتراک خود را در این سرویس لغو کنند. هزینه دریافت هر بسته خبری برای مشترکین صرفا ۳۵۰ ریال خواهد بود و این هزینه برای مشترکین در حال استفاده از خدمات رومینگ بین الملل اپراتورهای همراه اول و ایرانسل هم هزینه اضافه ای در بر نخواهد داشت.