تعامل کلید پیشرفت است! مخصوصاً در حوزه برنامهنویسی! استفاده از تجارب دیگران و دیدن نمونه کارها، نقش بسیار مهمی در حرکت روبهجلو دارند. موضوع این مقاله، گیت هاب است.
اگر جزو برنامهنویسان تازهکار هستید، یا میخواهید برنامهنویس شوید، لازم است که بدانید گیت هاب چیست. GitGub یک شبکۀ جهانی برای برنامهنویسان است که ویژگیهای منحصربهفرد خودش را دارد.
در این مقاله گیت هاب را برایتان تعریف میکنم، رقبای آن را با هم بررسی میکنیم و البته راجع به ویژگیها و مزایای آن نسبت به دیگر رقبا صحبت خواهم کرد.
گیت هاب از ترکیب دو کلمه Git و Hub تشکیل شده است. برای اینکه بدانیم GitHub چیست، ابتدا باید با مفهوم Git آشنا شویم.
گیت (Git) چیست؟
Git یک سیستم Version Control (از اینجا به بعد آن را VC خواهیم نوشت!) است که توسط خالق لینوکس، یعنی Linus Torvalds در سال 2005 میلادی، اختراع شد. Git هم درست مثل لینوکس، متنباز است.
منظور از VS چیست؟
به تعریف ویکیپدیا، منظور از VC در علم مهندسی نرمافزار، سیستمی است که مدیریت تغییر در برنامههای مختلف کامپیوتری را برعهده دارد. بگذارید مثال بزنم:
وردپرس را در نظر بگیرید. نزدیک به 20 سال قبل، هسته اصلی این برنامه نوشته شد و در اختیار عموم قرار گرفت؛ اما همانطور که میدانید، طی 2 دهه گذشته، این برنامه دستخوش تغییرات بسیاری شده است. برای اینکه این تغییرات بدون آسیب به هسته اصلی انجام شوند، به یک VC یا Version Control نیاز خواهیم داشت. مثل Git!
انجام این تغییرات با استفاده از Branching و Merging صورت میپذیرد.
Branching و Merging چیست؟
Branch به معنی شاخه است. با کمک Branching کد اصلی برنامه مذکور کپی میشود و برنامهنویس میتواند تغییراتی که میخواهد را در آن پیادهسازی کند.
بعد از اینکه این تغییرات لحاظ شدند و همهچیز آماده بهرهبرداری بود، کدهای جدید با کد اصلی هسته Merge یا ترکیب میشود. حالا برنامه جدیدی پیشِ رویتان قرار دارد!
Commit چیست؟
با هر تغییری در مخزن یک Commit ایجاد میشود. کامیتها اسنادی هستند که تاریخچه مخزن، یا بهتر بگوییم، مسیری را که طی کرده تا به حالت فعلی دربیاید را نشان میدهند. Commit ها به شما میگویند که این تغییرات چه بودهاند و توسط چه کسی انجام شدهاند.
گیت هاب چیست؟
اگر بگویم بهشت برنامهنویسها، دروغ نگفتهام. صحبت از پلتفرمی است که استفاده از آن کمک بسیار زیادی به توسعهدهندگان خواهد کرد. بهنوعی بزرگترین میزبان کدها در فضای شلوغ اینترنت!
همانطور که گفتیم، دسترسی به Git از طریق خط فرمان ممکن میشود و شاید استفاده از آن برای همه آسان نباشد؛ اما Github یک ساختار ابری مبتنی بر Git است که بهره بردن از این VC را برای عموم راحتتر کرده.
رابط کاربری این سایت بهقدری خوب است که حتی تازهکارها هم میتوانند بهراحتی از آن استفاده کنند. البته دسترسی مستقیم به Git کمی مهارت و تخصص لازم دارد.
ماهیت و هدف نهایی این پلتفرم، پیشرفت امور و بهتر شدن خروجیها است. چگونه؟ خواهیم گفت.
برنامهنویسها میتوانند کدهایی که نوشتهاند را داخل پروفایلشان در github قرار دهند. این کدها در معرض دید عموم قرار دارند و هرکس که بخواهد میتواند در آنها تغییرات ایجاد کند. در واقع نوعی همفکری از جنس مشارکت درست میشود که در نهایت منجر به بهبود خروجی نهایی و رفع ایرادات میشود.
همچنین توسعهدهندگان میتوانند کدهای برنامههای موجود در این سایت را ببینند و بهعنوان Best Practice و در جهت کسب دانش از آنها استفاده کنند. حتی میتوانند برای بهبود آنها اقداماتی را انجام دهند و به این ترتیب، برند شخصیشان را تقویت کنند. جالب است بدانید که افراد بسیاری از گیت هاب استفاده میکنند، عددی نزدیک به 90 درصد از کل توسعهدهندگان.
اگر بخواهیم ادعای خود سایت را ملاک قرار دهیم:
- بیش از 65 میلیون برنامهنویس
- بیش از 3 میلیون ارگان کوچک و بزرگ
- 72 درصد از شرکتهای لیست Fortune 500
اگر از حضور گسترده شرکتهای بزرگ در این سایت شوکه شدید، باید بگویم منبع درآمدی این سایت همین شرکتها هستند. به این صورت که آنها فضایی را برای میزبانی از کدهای مهم و محرمانهشان از گیتهاب اجاره میکنند و دسترسی به این فضا را فقط در اختیار اعضای تیمشان قرار میدهند.
نکته: Git از طریق دستور خط فرمان قابل دسترسی است، اما گیت هاب یک Git با ساختار ابری است که استفاده از آن را برای اشخاص و تیمها آسانتر کرده.
بیایید برویم سراغ برخی ویژگیهای سایت گیتهاب.
گیت هاب چه ویژگیهایی دارد؟
در کنار خصوصیاتی که در بخش قبلی مختصراً به آنها پرداختیم، گیت هاب ویژگیهای متنوع دیگری هم دارد. ویژگیهایی که بیشتر آنها مربوط به 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 موجود نیست و گیت هاب رقبایی هم دارد، اجازه دهید اول برخی از این رقبا را معرفی کنیم و بعد سراغ مزیتهای گیت هاب نسبت به آنها برویم.
کدام پلتفرمها رقیب گیت هاب هستند؟
اینکه توقع داشته باشیم در سال 2021، آن هم در زمینه تکنولوژی، کمپانی یا پلتفرمی بدون رقیب باشد، تصور بسیار باطل و بیهودهای است! گیت هاب هم از این قاعده مستثنی نیست.
در ادامه 4 رقیب اصلی این سایت که سرزمین موعود برنامهنویسها است را معرفی خواهیم کرد. البته که تعداد VCها بیشتر از این حرفها است:
- Gitlab
- Attlassian
- Amazon
اگر به سایت Comparably سر بزنید، مقایسه گیت هاب با رقبایش را مشاهده خواهید کرد. حتی در برخی از موارد، این رقبا نمرات بهتری نسبت به Github دریافت کردهاند. مثلاً این سایت برای سنجش عملکرد مدیرعامل هرکدام از این شرکتها، در بین کارکنانشان نظرسنجیای انجام داد.
جالب است بدانید که Nat Friedman مدیرعامل گیت هاب، در رقابت با مدیرعامل 4 سرویس دیگر، رتبه آخر را کسب کرده است!!
اما خب از طرفی دیگر، این پلتفرم در رتبهبندی کیفیت محصول بیشترین امتیاز را به دست آورده و در جایگاه اول قرار دارد.
حالا میخواهیم ببینیم گیت هاب چه مزیتهایی دارد؟ چه چیزی باعث شده تا این پلتفرم انقدر محبوب شود و توسعهدهندگان زیادی را به خود جذب کند؟!
گیت هاب چه مزیتهایی دارد؟
هیچچیزی بدون دلیل مورد استقبال اکثریت قرار نمیگیرد. البته اینطور نیست که هر چیز محبوبی بدون نقص باشد، اما خب قطعاً نکات مثبتی هم دارد. در این قسمت میخواهیم راجع به 5 مزیت اصلی گیت هاب یا همان نکات مثبتش صحبت کنیم.
1) مدیریت آسان و موثر پروژهها
وقتی صحبت از یک پروژه برنامهنویسی باشد، یعنی پای کلی کد و البته اختلاف نظر در میان است. گیت هاب فضایی است که مدیر پروژه میتواند توسعهدهندگان را دور هم جمع کند تا در کنار هم راجع به بخشهای مختلف کار تبادل نظر کنند.
استفاده از چنین سازوکاری، قطعاً در مدیریت کل پروژه هم کمککننده خواهد بود. هم درجه سختی کار کاهش پیدا میکند و هم میزان اثرگذاری مدیریت!
2) افزایش امنیت با استفاده از پکیج شخصی
نظر شخصی من این است که هیچچیزی در اینترنت امنیت 100 درصدی ندارد! گواه ادعایم اخبار ریزودرشتی که هر روز از هک شدن کمپانیهای بسیار بزرگ میشنویم؛ اما در وبلاگ ایرانسرور بر اساس شواهد و ادعاهای حقیقی صحبت میکنیم و تا حد ممکن نظر شخصیمان را دخیل نمیکنیم.
همانطور که بالاتر هم گفتیم، گیت هاب ماهیت متنباز دارد. به همین خاطر است که کدها میتوانند در دسترس عموم باشند و راجع به آن بحثوتبادل شکل بگیرد؛ اما هیچ اجباری هم در کار نیست.
اگر تمایل داشته باشید، میتوانید از گیت هاب Repository خصوصی بخرید. اینکار مخصوصاً بهدرد ارگانهایی میخورد که قصد اجرای پروژه جدید دارند و میخواهند در فضایی ایمن و دور از دسترس عموم، از کدهایشان نگهداری میکنند.
تنها افرادی به Repositoryهای شخصی دسترسی دارند که توسط ایجادکننده پروژه مجوز داشته باشند.
3) پیشرفت مهارتهای برنامهنویسی و کدنویسی
مهمترین خاصیت تعامل و تبادلنظر، بهبود مهارتها و تواناییها است. مثلاً با کمک قابلیت Pull Request، برنامهنویسها میتوانند ایرادات کارشان را پیدا کنند و برنامههای بهتری بنویسند.
شرکت در بحثها و استفاده از تجارب دیگران هم در رسیدن به این دستاورد مفید است. یادتان باشد فرقی نمیکند در چه جایگاهی هستید و چقدر دانش دارید، همیشه چیزهای جدیدی برای آموختن وجود دارند.
4) اطمینان از عدم مخرب بودن کدها
گیت هاب ابزارها و برنامههایی دارد که کدها را از جهت مخرب بودن بررسی میکنند. مسلماً که چنین سایتی با چنین قابلیتی باید هم حساسیت زیادی نسبت به سلامت کدها داشته باشد. در غیر اینصورت، هکرهای بد میتوانند بهراحتی باجافزارها و بدافزارهایشان را بهصورت گسترده تکثیر کنند.
5) میزبانی مناسب از همه کدها و برنامهها
میلیونهای Repo در گیت هاب وجود دارد. هرکدام از آنها، ابزارهای لازم را برای میزبانی و حتی انتشار کدها، در اختیار توسعهدهندگان قرار میدهند. به این ترتیب، مسئله نگهداری از کدها در جای مناسب حل میشود.
چگونه از گیت هاب استفاده کنیم؟
اگر به دنبال منبعی برای نگهداری و به اشتراک گذاشتن کدهایتان هستید، Git را نصب کنید و بعد یک حساب رایگان در GitHub بسازید. در ادامه نحوه شروع به کار در گیت هاب را توضیح میدهیم.
وارد لینک Git شده و طبق دستورالعملها، گیت را دانلود و نصب کنید. دقت کنید که باید بر اساس سیستمعاملتان به بخش مورد نظر رفته و روی لینک دانلود کلیک کنید.
حالا باید یک حساب در گیت هاب بسازید. بد نیست بدانید که حساب رایگان، یک سری محدودیتها دارد؛ اما همچنان به مخزنهای خصوصی و عمومی دسترسی خواهید داشت.
برای ساختن اکانت رایگان وارد سایت گیت هاب شوید و پس از وارد کردن نام کاربری، رمز عبور، ایمیل و حل کردن کپچا، Creat Account را بزنید.
حالا روی Create a repository کلیک و یک مخزن ایجاد کنید.
در همین صفحهای، با کلیک کردن روی Start Learning میتوانید شروع به یادگیری گیت هاب کنید.
حرف آخر
گیت هاب تنها Version Control بازار نیست، اما میتوان ادعا کرد که پرطرفدارترین و حتی کاربردیترین آنها است.
یک شبکه اجتماعی تخصصی برای برنامهنویسها که هرکس میتواند در آن پروفایل خودش را داشته باشد. پروفایلی که بهعنوان رزومه هم بسیار خوب عمل میکند. البته که افراد غیرمتخصص هم میتوانند از این سایت استفاده و برنامه موردنیازشان را دانلود کنند.
در تهیه این مقاله از مطالب سایتهای How-To-Geek، Kinsta و Simplilearn استفاده کردم.
هر سوال یا نظری در رابطه با گیت هاب دارید، میتوانید آن را در قسمت نظرها با ما مطرح کنید.
ما از شما یاد میگیریم و سعی میکنیم سوالاتتان را پاسخ دهیم.
2 دیدگاه. دیدگاه تازه ای بنویسید
سلام و درود
مقاله بسیار خوب و عالی هست.
یه سوال داشتم اونم این هست که؛ فونت استفاده شده در این نوشته چیست؟
سلام و تشکر از لطفتون
فونت کل نوشتهها Iransans هست.