اختصاصی «تابناک با تو» - گیتهاب (به انگلیسی: GitHub) یک سرویس میزبانی وب برای پروژههایی است که از سیستم سورس کنترل گیت استفاده میکنند. گیتهاب با استفاده از روبی آن ریلز و ارلنگ ساخته شدهاست. این سرویس هم دارای گزینه رایگان برای پروژههای متنباز و هم پولی برای پروژههای تجاری است. توسعهٔ پلت فرم گیتهاب در اکتبر ۲۰۰۷، آغاز شد. گیتهاب در سال ۲۰۰۸ توسط تام پرستون، کریس ونسترت و پی جی هیت پایهگذاری گردید و بر اساس گزارشی در ژوئن ۲۰۱۱، این سرویس محبوبترین سرویس ارائهدهنده گیت است.
این سایت عملکردهای یک جامعهٔ مجازی شامل: فید، دنبالکننده و گراف شبکه برای نمایش دادن توسعه دهندگانی که بر یک نسخهٔ مرجع (مخزن) کار میکنند، را به کاربرانش ارائه میدهد.
در ژوئیه ۲۰۱۲ این شرکت با صد میلیون دلار آمریکا در سری A سرمایهداران اصلی، از طرف اندرسون هورویتز ردهبندی شد.
گیتهاب قابلیت توزیع کنترل نسخه و مدیریت کد منبع(SCM) از گیت و همچنین اضافه کردن ویژگیهای خاص آن را عرضه میکند.
در قلب GitHub یک پروژه متنباز که توسط Linus Torvalds (خالق لینوکس) ایجاد شدهاست به نام Git وجود دارد. در واقع Git یک سیستم کنترل نسخهٔ نرمافزار است. Matthew McCullough یکی از اعضای GitHub میگوید: Git مانند دیگر سیستمهای کنترل نسخه، نسخههای نرمافزار را ذخیره، مدیریت و فراخوانی میکند؛ که البته بیشتر برای کدها استفاده میشود اما Git میتواند برای هر نوع فایل دیگری مانند یک فایل Word یا TXT نیز استفاده شود.
گیت هاب چیست؟
اولین کار برای درک هرچیز این است که یک تعریف کلی از آن داشته باشیم. برای گیت هاب تعاریف متعددی در سرتاسر وب وجود دارد. تعریف کاملی که ما خدمتتان ارائه میکنیم، ترکیبی از همه تعاریف قبلی است: گیت هاب یک شبکه اجتماعی در فضای ابری برای برنامهنویسان و یک پلتفورم همکاری برای توسعهدهندگان است که بزرگترین فضای ذخیرهسازی برای کارهای اشتراکی و توزیعیافته دنیا به شمار میرود. گیت هاب بهعنوان بزرگترین هاست برای میزبانی پروژههایی ایجاد شده که از سیستم کنترل ورژن گیت استفاده میکنند. به زبان سادهتر، گیت هاب یک سیستم مدیریت پروژه و نسخهبندیِ کد و همچنین یک شبکه اجتماعی برای توسعهدهندگان و برنامهنویسان است که بزرگترین منبع موجود برای ذخیرهسازی کارهایی است که بهصورت مشترک ایجاد شدهاند.
کلمه گیت هاب از دو قسمت تشکیل شده است. گیت (Git) و هاب (Hub) که باید برای یادگرفتن گیت هاب، هر دو جزء این کلمه را درک کنیم؛ پس از آن لیست واژگان و مفاهیم مهمی را که برای تعریف کامل گیت هاب به زبان ساده نیاز داریم، ارائه میکنیم. یک مثال هم برای نحوه استفاده از گیت هاب برای درک بیشتر آوردهایم.
گیت چیست؟
معنی گیت هابگیت (Git) اولین بخش کلمه گیت هاب است. گیت یک سیستم کنترل ورژن منبع باز است که Linus Trovalds آن را ابداع کرده است. اما کنترل ورژن چیست؟ وقتی که برنامهنویسان (برای مثال) یک برنامه میسازند، پس از اولین نسخه منتشر شده تغییرات زیادی در کد انجام میدهند. کنترل ورژن این تغییرات را ساده میکند، و تمام اصلاحات را در یک انبار (repository) ذخیره میکند. این قابلیت به برنامهنویسان و همچنین اعضای تیم برنامهنویسی کمک میکند تا بهراحتی نسخه جدید نرمافزار را دانلود کرده، در آن تغییرات ایجاد کنند و آخرین بازبینی را دوباره بهروزرسانی کنند.
برای مثال پروژه عظیم وردپرس را در نظر بگیرید. اگر هر برنامهنویسی بخواهد بر روی بخشی از کد وردپرس کار کند، نمیتوان با اطمینان کامل منبع کد اصلیِ رسمی را در اختیار وی قرار داد تا هر تغییری که میخواهد اعمال کند. به جای آن، کنترل ورژن به توسعه دهندگان اجازه میدهد بر روی یک شاخهی موازی از پروژه کار کرده و سپس تغییرات را ادغام کنند (که در ادامه در مورد آن توضیح داده شده است).
از طرف دیگر، افرادی که اصلاً به توسعهی پروژه ارتباطی ندارند نیز میتوانند این فایلها را دانلود کرده و از آن استفاده کنند. از مزایای گیت نسبت به سایر روشهای کنترل ورژن این است که فایلهای تغییرات را با بهره بیشتر ذخیره میکند و از یکپارچگیِ فایل مطمئن میشود.
هاب چیست؟
بخش دوم کلمه گیت هاب، هاب (Hub) است. کلمهی هاب را ممکن است در جاهای دیگری هم شنیده باشید. معنیِ آن کم و بیش در تمام کلمات و عبارتها یکسان است. در حالت کلی، طبق تعریف فرهنگ لغت آکسفورد، بهصورت خلاصه هاب یعنی مرکز یک فعالیت، منطقه و یا یک شبکه. برای مثال USB Hub را در نظر بگیرید، در اینجا هاب یعنی یک مرکز برای ارتباطات USB. به عبارت دیگر مرکزی که تمام فعالیتها حول محور آن رخ میدهد. بنابراین، گیت هاب یعنی یک مرکز برای گیت، مکانی که تمام فعالیتهای مربوط به گیت حول محور آن رخ خواهد داد. همان تعریفی که در بالا برای گیت هاب ارائه کردیم.
در ادامه، بعضی از مفاهیم مهمی را که برای پاسخ به سوال گیت هاب چیست با آن روبرو میشویم، ارائه کردهایم. در واقع میتوان گفت که این مفاهیم هستند که گیت هاب را اینقدر خاص و محبوب کردهاند.
مثالی از نحوه استفاده از گیت هاب
مثال گیت هاببرای درک بهتر تعریف گیت هاب که در بالا به آن اشاره کردیم، به مثال زیر توجه کنید: چهار برنامهنویس به نامهای سام، داوود، ملینا و مایک را در نظر بگیرید که روی نرمافزارهای هوشمند کشاورزی و بهویژه تراکتورهای هوشمند کار میکنند. همه این برنامهنویسها روی پروژههای مشترک کار میکنند، اما محل زندگیِ آنها از هم دور است. یک نفر دیگر، ادیب را نیز مد نظر داشته باشید که با یک تراکتور پیشرفته و پُر از سنسور و پردازنده کار میکند. ادیب یک ایده در سر دارد، که با استفاده از آن کشاورزان میتوانند دادههای خود را به اشتراک گذاشته و برداشتهایشان را بهبود دهند.
برای این کار، ادیب در سایت گیت هاب یک موضوع (Issue) ایجاد میکند، امکانی که توسط آن کاربران میتوانند گزارش باگ، درخواست ویژگی، پرسشهای متنوع و یا بحثهای کلی را در سایت گیت هاب ایجاد کنند. سام اولین کسی است که این موضوع را در سایت میبیند، و برای آغاز این کار داوود را مناسب میبیند و او را در آن موضوع فرا میخواند. داوود کار پروژه را روی یک تراکتور شروع کرده و آن را تست میکند. برای این کار یک شاخه (Branch) از کد ایجاد کرده و روی آن کار میکند. در طول فرآیند کار، گیت هاب تاریخچه تغییرات داوود را ذخیره میکند. پس از اینکه داوود کار خود را به اتمام رساند، یک درخواست Pull (یا Pull Request) ایجاد کرده و برای آن درخواست نظرخواهی میکند. سپس همتیمیهای داوود تغییرات را بررسی کرده و در صورت امکان آنها را بهبود میدهند. البته ناگفته نماند که در این فرآیند تمام اعضای تیم یک نسخه از برنامه و تغییرات را دارند، پس اگر تغییر و پیشنهادی از سایر اعضای تیم وجود داشته باشد، میتوانند بهراحتی این تغییرات را در این شاخه اعمال کنند، که تمام این تغییرات و درخواستهای Pull به صورت تاریخچهوار در گیت هاب ذخیره میشوند.
پس از اتمام تغییرات و تأیید نهایی تمام اعضای تیم، داوود این درخواست یا تغییرات را روی پروژه پیشین به اصطلاح Merge یا ادغام میکند. پس از ادغام این ویژگی در اختیار همه قرار میگیرد و تمام کشاورزان میتوانند از این ایده ادیب لذت ببرند.
سایر کاربردهای گیت هاب
جالب است بدانید که گیت هاب تنها مختص به برنامهنویسان و توسعهدهندگان نیست. هر کسی که میخواهد پروژه خود را بهصورتی بهینه مدیریت کند و بهطور اشتراکی با سایر اعضای تیمش کار کند، میتواند از گیت هاب استفاده کند.
برای مثال اگر تیم شما روی پروژه ترجمه یک کتاب کار میکند که نیازمند بهروزرسانیهای مداومی در روند کار است، میتوانید از گیت هاب استفاده کنید. این ابزار سوابق تغییرات را حفظ و ذخیره میکند و حتی به شما نشان میدهد که چه کسی این تغییرات را انجام داده است.
ارسال درخواست و به اشتراکگذاری
اگر دوست داشتید تغییراتی را که در پروژه اعمال کردید به گوش توسعهدهندگان اصلی برسانید، بهراحتی میتوانید با استفاده از گزینهی Pull Request، درخواست خود را برای آنها ارسال کنید. آنها هم پس از بررسی کار شما در صورت تمایل، تغییرات مدنظرتان را به نسخهی اصلی اضافه خواهند کرد. گیتهاب با این ویژگی، پل ارتباطی شما و توسعهدهندگان اصلی پروژه خواهد بود.
برقرارای ارتباطات اجتماعی (Social Networking)
یکی از ویژگیهای قدرتمند گیتهاب، شبکهی اجتماعی آن است که بیشتر از دیگر ویژگیهای آن، به پیشروی پروژهها کمک میکند. در گیتهاب، هر کاربر پروفایل شخصی خود را دارد که بهعنوان رزومهی آن کاربر محسوب میشود. تمام فعالیتهای شما ازجمله مشارکت در دیگر پروژهها از طریق ارسال درخواست به توسعهدهندگان اصلی هر پروژه در این شبکه مشخص است که به معرفی شما و کیفیت کارتان کمک بسیاری خواهد کرد.
با استفاده از گیتهاب میتوان پروژهها را بهصورت عمومی بازنگری و تصحیح کرد و ادامه داد. از این طریق افراد خبره نیز میتوانند اطلاعات و دانش خود را برای پیشروی بهتر پروژه با صاحبان آن به اشتراک بگذارند. قبل از اختراع گیتهاب اگر توسعهدهندگان مشتاق به همکاری در پروژهای بودند، باید از طریق ایمیل و یا راههای ارتباطی دیگر با توسعهدهندگان اصلی تماس برقرار میکردند ولی این پایان کار نبود؛ چراکه بهسختی میتوانستند اعتماد آنها را نسبت به خود و کیفیت کارشان جلب کنند.
لاگ تغییرات (Changelogs)
بررسی تکتک تغییراتی که بر روی هر پروژه اعمال میشود بسیار دشوار است. بهسختی میتوان متوجه شد که چه کسی در چه زمانی چه تغییراتی را انجام داده است و البته محل ذخیرهی این تغییرات کجاست. از طرفی با وجود گیتهاب تمام این مشکلات برطرف شده؛ چراکه لاگ تمامی فعالیتها بر روی مخزن بهراحتی قابلدسترس است.
گیتهاب فقط برای برنامهنویسان نیست!
نکتهی جالبتوجه اینجاست که تنها این توسعهدهندگانِ وب نیستند که از سیستم گیتهاب استفاده میکنند. هر تیمی که در حال اعمال تغییرات بر روی پروژهای است میتواند با امکاناتی که گیتهاب در اختیارش میگذارد به پیشروی پروژهی خود کمک کند. اگر در تیم خود، دائماً در فایلهای ورد خود تغییر ایجاد میکنید، میتوانید از گیتهاب بهعنوان سیستم کنترل ورژن استفاده کنید. البته این راهکار چندان هم رایج نیست؛ چراکه در اغلب مواقع جایگزینهای بهتری هم وجود دارند، اما بهتر است که گیتهاب را هم به خاطر بسپرید.
گیتهاب برای توسعهدهندههای ایرانیها باز شد
بهزودی دسترسی آزاد به GitHub برای همه توسعهدهندهها در سراسر دنیا
چند ماه پیش (دقیقا تابستان امسال) بود که سرویس گیتهاب متعلق به مایکروسافت که یکی از منبعهای اصلی روی وب رای توسعهدهندههای نرمافزاری دنیا است؛ امکان دسترسی ایرانیها را قطع کرد و علت آن را وضع تحریمهای ایالات متحده عنوان کرد.
امروز گیتها به طور رسمی و در اعلامیهای گفت به دلیل دریافت مجوز و تغییراتی که در معافیتهای دفتر Foreign Assets Control یا OFAC رخ داده است؛ میتوانند میزبان توسعهدهندههای ایرانی باشند. OFAC بازوی اجرایی تحریمها در وزارت خزنهداری ایالات متحده است.
«نات فریدمن»، مدیرعامل گیتهاب درباره این موفقیت میگوید: «ما مجوز باز کردن GitHub را برای توسعهدهندههای ایرانی از دولت ایالات متحده دریافت کردیم. این شامل همه خدمات ما به افراد شخصی و حقوقی یا سازمانی و دولتی میشود. این خدمات رایگان یا با هزینه خواهد بود.»
او در بخش دیگری از صحبتهایش اشاره میکند گیتهاب در دو سال اخیر پیشرفتهای بسیاری خوبی در زمینه همکاری توسعهدهندهها در سراسر جهان با یکدیگر به صورت آزاد داشته است و آنها اکنون میتوانند بدون تاثیرپذیری از سیاستهای بینالمللی یا ایالات متحده در یک جریان آزاد اطلاعاتی مشارکت داشته باشند و حتی آن را ارتقا دهند.
گیتهاب که یک مخزن کدهای منبع رایگان روی وب است و اکنون به تصاحب مایکروسافت درآمده است؛ از سال ۲۰۱۹ دسترسیهای ایرانیها را محدود کرده و فقط یک سری مخازن کدهای عمومی باز بودند. گیتهاب برای دولتهای سوریه و کریمه نیز محدود شده بود.
اما مدیران گیتهاب در تلاش هستند کلیه محدودیتهای اعمال شده از سوی دولت ایالات متحده را برای کشورهای مختلف بردارند. آنها در صدد هستند توسعهدهندههای کشورهای سوریه و کریمه نیز بتوانند به همه مخازن کدهای برنامهنویسی روی گیتهاب دسترسی آزاد و کامل داشته باشند.
مدیران گیتهاب چندین ماه با اداره خزانهداری امریکا مکاتبه کرده و در پی یافتن راهحلی برای دسترسی آزاد به GitHub بودند. برخی از کارشناسان، تغییر دولت در ایالات متحده را علت صدور مجوز OFAC برای دسترسی توسعهدهندههای ایرانی به سرویسهایی مانند گیتهاب عنوان کردند.