
عامل کلید پیشرفت است! مخصوصاً در حوزه برنامهنویسی! استفاده از تجارب دیگران و دیدن نمونه کارها، نقش بسیار مهمی در حرکت روبهجلو دارند. موضوع این مقاله، گیت هاب است.
اگر جزو برنامهنویسان تازهکار هستید، یا میخواهید برنامهنویس شوید، لازم است که بدانید گیت هاب چیست. GitGub یک شبکۀ جهانی برای برنامهنویسان است که ویژگیهای منحصربهفرد خودش را دارد.
در این مقاله گیت هاب را برایتان تعریف میکنم، رقبای آنزبان های برنامه نویسی را با هم بررسی میکنیم و البته راجع به ویژگیها و مزایای آن نسبت به دیگر رقبا صحبت خواهم کرد.
گیت هاب از ترکیب دو کلمه Git و Hub تشکیل شده است. برای اینکه بدانیم GitHub چیست، ابتدا باید با مفهوم Git آشنا شویم.
گیت (Git) چیست؟
Git یک سیستم Version Control (از اینجا به بعد آن را VC خواهیم نوشت!) است که توسط خالق لینوکس، یعنی Linus Torvalds در سال ۲۰۰۵ میلادی، اختراع شد. Git هم درست مثل لینوکس، متنباز است.
به تعریف ویکیپدیا، منظور از VC در علم مهندسی نرمافزار، سیستمی است که مدیریت تغییر در برنامههای مختلف کامپیوتری را برعهده دارد. بگذارید مثال بزنم:
وردپرس را در نظر بگیرید. نزدیک به ۲۰ سال قبل، هسته اصلی این برنامه نوشته شد و در اختیار عموم قرار گرفت؛ اما همانطور که میدانید، طی ۲ دهه گذشته، این برنامه دستخوش تغییرات بسیاری شده است. برای اینکه این تغییرات بدون آسیب به هسته اصلی انجام شوند، به یک VC یا Version Control نیاز خواهیم داشت. مثل Git!
انجام این تغییرات با استفاده از Branching و Merging صورت میپذیرد. به این ترتیب که هنگام اعمال تغییرات مدنظر، با کمک Branching کد اصلی برنامه مذکور کپی میشود و برنامهنویس میتواند تغییراتی که میخواهد را در آن پیادهسازی کند.
بعد از اینکه این تغییرات لحاظ شدند و همهچیز آماده بهرهبرداری بود، کدهای جدید با کد اصلی هسته Merge یا ترکیب میشود. حالا برنامه جدیدی پیشِ رویتان قرار دارد!
توسعه برنامه ها با استفاده از گیت
Git از طریق دستور خط فرمان قابل دسترسی است، اما گیت هاب یک Git با ساختار ابری است که استفاده از آن را برای اشخاص و تیمها آسانتر کرده.
گیت هاب چیست؟
اگر بگویم بهشت برنامهنویسها، دروغ نگفتهام. صحبت از پلتفرمی است که استفاده از آن کمک بسیار زیادی به توسعهدهندگان خواهد کرد. بهنوعی بزرگترین میزبان کدها در فضای بیپایان اینترنت!
همانطور که گفتیم، دسترسی به Git از طریق خط فرمان ممکن میشود و شاید استفاده از آن برای همه آسان نباشد؛ اما Github یک ساختار ابری مبتنی بر Git است که بهره بردن از این VC را برای عموم راحتتر کرده.
رابط کاربری این سایت بهقدری خوب است که حتی تازهکارها هم میتوانند بهراحتی از آن استفاده کنند. درصورتی که دسترسی مستقیم به Git کمی مهارت و تخصص لازم دارد.
حتما بخوانید: چهارمین همایش یلدای کارآفرینان استارتاپی ایران برگزار میشود
ماهیت و هدف نهایی این پلتفرم، پیشرفت امور و بهتر شدن خروجیها است. چگونه؟ خواهیم گفت.
برنامهنویسها میتوانند کدهایی که نوشتهاند را داخل پروفایلشان در github قرار دهند. این کدها در معرض دید عموم قرار دارند و هرکس که بخواهد میتواند در آنها تغییرات ایجاد کند. در واقع نوعی همفکری از جنس مشارکت درست میشود که در نهایت منجر به بهبود خروجی نهایی و رفع ایرادات میشود.
همچنین توسعهدهندگان میتوانند کدهای برنامههای موجود در این سایت را ببینند و بهعنوان Best Practice و در جهت کسب دانش از آنها استفاده کنند. حتی میتوانند برای بهبود آنها اقداماتی را انجام دهند و به این ترتیب، برند شخصیشان را تقویت کنند. جالب است بدانید که افراد بسیاری از گیت هاب استفاده میکنند، عددی نزدیک به ۹۰ درصد از کل توسعهدهندگان.
اگر بخواهیم ادعای خود سایت را ملاک قرار دهیم:
بیش از ۶۵ میلیون برنامهنویس
بیش از ۳ میلیون ارگان کوچک و بزرگ
۷۲ درصد از شرکتهای لیست Fortune 500
اگر از حضور گسترده شرکتهای بزرگ در این سایت شوکه شدید، باید بگویم منبع درآمدی این سایت همین شرکتها هستند. به این صورت که آنها فضایی را برای میزبانی از کدهای مهم و محرمانهشان از گیتهاب اجاره میکنند و دسترسی به این فضا را فقط در اختیار اعضای تیمشان قرار میدهند.
بیایید برویم سراغ برخی ویژگیهای سایت گیتهاب.
برنامه نویس
گیت هاب چه ویژگیهایی دارد؟
در کنار خصوصیاتی که در بخش قبلی مختصراً به آنها پرداختیم، گیت هاب ویژگیهای متنوع دیگری هم دارد. ویژگیهایی که بیشتر آنها مربوط به Git هستند و برخی از آنها هم مختص گیت هاب! ویژگیهایی که این VC را از دیگر رقبایش متمایز میکند.
Repository
وقتی پروژهای (بخوانید برنامهای) طراحی میشود، تمام کدهای مربوط به آن در یک Repository یا Repo قرار میگیرند. از همان اول کار که شالوده اصلی کار شکل میگیرد تا تمام تغییرات و آپدیتها در Repo هر برنامه قابل مشاهده هستند.
همچنین Repo مربوط به هر پروژه، یک URL منحصربهفرد دارد که دسترسی به آن را ممکن میکند.
Forking a Repo
همانطور که احتمالاً میدانید، Forking معنای انشعاب یا چندشاخه شدن را میدهد. انشعاب Repo؟! خب این چه مفهومی دارد؟
فرض کنید در گیت هاب پروژهای را میبینید که کلی از آن خوشتان میآید؛ اما ناگهان احساس میکنید که میتوانید تغییراتی را در قسمتی از کدهای آن اعمال کنید! این قابلیت در چنین حالتی کاربرد دارد.
با کمک Forking a Repo، میتوانید در یک Repository جداگانه، تغییرات مدنظرتان را روی برنامهای که انتخاب کردهاید اعمال کنید.
حتی وقتی در Repository اصلی تغییری ایجاد شود، بهطور خودکار (البته با تکه کدی که از قبل اضافه کردید) تغییرات لازم در Repo جدید حاصل از Fork هم ایجاد خواهد شد.
در واقع این قابلیت، ابزاری است که توسعه برنامههای قدیمی را ممکن میکند. حتی اگر بگویم پیشرفت در دنیای برنامهنویسی، تا حد زیادی میتواند مدیون این قابلیت باشد، بیراه نگفتهام.
اگر نگاهی به گذشته بشر داشته باشید هم این موضوع را متوجه خواهید شد. هر دستاوردی، مقدمه و پلهای شد برای رسیدن به دستاوردهای بزرگتر و مهمتر.
یک نکته بسیار جالب اینکه: وردپرس حاصل یک Forking a Repo است!
Pull Request
بعد از اینکه یک برنامه یا مجموعهای از کدها را اصلاح و یک Repo جدید برای آن تعریف کردید، شاید بخواهید سازندگان برنامه اصلی را هم مطلع کنید. این امر هم به شناختهشدن خودتان و برنامهتان کمک میکند و هم ممکن است آنها را متقاعد کند تا شما را هم به تیمشان بیفزایند.
قابلیت Pull Request برای چنین شرایطی است. بعد از اینکه یک برنامه را Fork کردید، سراغ آن بروید تا گیت هاب یک رسانه تعاملی کارآمد بین شما و سازندگان اصلی ایجاد کند. آنها از خلق برنامه جدید در Repo جداگانه مطلع میشوند و در صورت نیاز میتوانند سوالاتشان را هم با شما مطرح کنند.
البته فراموش نکنید که تصمیمگیری نهایی هم با آنها است؛ یعنی لزوماً قرار نیست چون برنامه آنها را تغییر دادهاید، بتوانید نظر مثبتشان را هم جلب کنید.
برنامه نویس خوشحال
Social Networking
یکی از مهمترین آوردههای گیت هاب برای جامعه برنامهنویسها، تشکیل یک شبکه اجتماعی از متخصصهای این حوزه است. اعدادی که بالاتر گفتم را به یاد دارید؟ آنها نشاندهنده عظمت این شبکه هستند.
تمام کدها میتوانند بهصورت عمومی نمایش داده شوند و مورد بحث قرار بگیرند. کاربلدها با تازهکارها تبادل نظر میکنند و هر دو طرف بیشتر یاد میگیرند. واقعاً چه چیزی بهتر از این؟!
تا قبل از ارائه گیت هاب، ارتباط گرفتن با این افراد بهخودی خود یک معضل بود. مثلاً اگر به روشهای مختلف در برنامهای تغییری ایجاد میکردید و میخواستید سازندگان اصلی را مطلع کنید، موثرترین راه ارتباط ایمیل بود. مسلماً ایمیل حداقل در مقایسه به پلتفرم کنونی گیت هاب، کارایی بسیار پایینتری خواهد داشت.
اما Git تنها VC موجود نیست و گیت هاب رقبایی هم دارد، اجازه دهید اول برخی از این رقبا را معرفی کنیم و بعد سراغ مزیتهای گیت هاب نسبت به آنها برویم.
گیت هاب چه مزیتهایی دارد؟
هیچچیزی بدون دلیل مورد استقبال اکثریت قرار نمیگیرد. البته اینطور نیست که هر چیز محبوبی بدون نقص باشد، اما خب قطعاً نکات مثبتی هم دارد. در این قسمت میخواهیم راجع به ۵ مزیت اصلی گیت هاب یا همان نکات مثبتش صحبت کنیم.
۱) مدیریت آسان و موثر پروژهها
وقتی صحبت از یک پروژه برنامهنویسی باشد، یعنی پای کلی کد و البته اختلاف نظر در میان است. گیت هاب فضایی است که مدیر پروژه میتواندمدیریت آسان پروژه ها با کمک گیت هاب توسعهدهندگان را دور هم جمع کند تا در کنار هم راجع به بخشهای مختلف کار تبادل نظر کنند.
استفاده از چنین سازوکاری، قطعاً در مدیریت کل پروژه هم کمککننده خواهد بود. هم درجه سختی کار کاهش پیدا میکند و هم میزان اثرگذاری مدیریت!
۲) افزایش امنیت با استفاده از پکیج شخصی
نظر شخصی من این است که هیچچیزی در اینترنت امنیت ۱۰۰ درصدی ندارد! گواه ادعایم اخبار ریزودرشتی که هر روز از هک شدن کمپانیهای بسیار بزرگ میشنویم؛ اما در وبلاگ ایرانسرورپکیج های شخصی در گیت هاب امنیت را تامین میکنند بر اساس شواهد و ادعاهای حقیقی صحبت میکنیم و تا حد ممکن نظر شخصیمان را دخیل نمیکنیم.
همانطور که بالاتر هم گفتیم، گیت هاب ماهیت متنباز دارد. به همین خاطر است که کدها میتوانند در دسترس عموم باشند و راجع به آن بحثوتبادل شکل بگیرد؛ اما هیچ اجباری هم در کار نیست.
اگر تمایل داشته باشید، میتوانید از گیت هاب Repository خصوصی بخرید. اینکار مخصوصاً بهدرد ارگانهایی میخورد که قصد اجرای پروژه جدید دارند و میخواهند در فضایی ایمن و دور از دسترس عموم، از کدهایشان نگهداری میکنند.
تنها افرادی به Repositoryهای شخصی دسترسی دارند که توسط ایجادکننده پروژه مجوز داشته باشند.
۳) پیشرفت مهارتهای برنامهنویسی و کدنویسی
مهمترین خاصیت تعامل و تبادلنظر، بهبود مهارتها و تواناییها است. مثلاً با کمک قابلیت Pull Request، برنامهنویسها میتوانند ایرادات کارشانبا استفاده از گیت هاب در برنامه نویسی رشد خواهید کرد را پیدا کنند و برنامههای بهتری بنویسند.
شرکت در بحثها و استفاده از تجارب دیگران هم در رسیدن به این دستاورد مفید است. یادتان باشد فرقی نمیکند در چه جایگاهی هستید و چقدر دانش دارید، همیشه چیزهای جدیدی برای آموختن وجود دارند.
۴) اطمینان از عدم مخرب بودن کدها
گیت هاب ابزارها و برنامههایی دارد که کدها را از جهت مخرب بودن بررسی میکنند. مسلماً که چنین سایتی با چنین قابلیتی باید هم حساسیت زیادی نسبت به سلامت کدها داشتهاطمینان از ایمن بودن کدها در گیت هاب باشد. در غیر اینصورت، هکرهای بد میتوانند بهراحتی باجافزارها و بدافزارهایشان را بهصورت گسترده تکثیر کنند.
۵) میزبانی مناسب از همه کدها و برنامهها
میلیونهای Repo در گیت هاب وجود دارد. هرکدام از آنها، ابزارهای لازم را برای میزبانی و حتی انتشار کدها، در اختیار توسعهدهندگان قرار میدهند. به این ترتیب، مسئله نگهداری از کدها در جای مناسب حل میشود.
حرف آخر
گیت هاب تنها Version Control بازار نیست، اما میتوان ادعا کرد که پرطرفدارترین و حتی کاربردیترین آنها است.
یک شبکه اجتماعی تخصصی برای برنامهنویسها که هرکس میتواند در آن پروفایل خودش را داشته باشد. پروفایلی که بهعنوان رزومه هم بسیار خوب عمل میکند. البته که افراد غیرمتخصص هم میتوانند از این سایت استفاده و برنامه موردنیازشان را دانلود کنند.