گیتهاب و نحوه ایجاد یک پروژه موفق در آن – به زبان ساده
«گیتهاب» (GitHub) یک سرویس میزبانی وب برای پروژههایی است که از «سیستم سورس کنترل» (Source Code Management که در اصطلاح به آن SCM هم گفته میشود) گیت استفاده میکنند. میتوان به شکل آنلاین از این نرمافزار استفاده کرد و پروژهها را به صورت گروهی گسترش داد. این سرویس هم دارای گزینه رایگان برای پروژههای متنباز و هم پولی برای پروژههای تجاری است. توسعهٔ پلت فرم گیتهاب در اکتبر ۲۰۰۷ آغاز شد. گیتهاب در سال ۲۰۰۸ توسط «تام پرستون» (Tom Preston)، «کریس ونسترت» (Chris Wanstrath) و «پی جی هیت» (PJ Hyett) پایهگذاری شد. در این مقاله ویژگیهای یک پروژه موفق در گیتهاب را باهم بررسی میکنیم.
یک پروژه موفق متنباز در گیتهاب از شش جز اساسی تشکیل شده است. بهکار گرفتن نکتههای بیان شده در ارائه یک پروژه موفق بسیار راهگشا خواهند بود. در ادامه، این اجزای کیفی را معرفی میکنیم.
جز اول - اسناد
مدارک یا اسناد در گیتهاب بهصورت کد هستند. «توسعهدهنده شخص ثالث» (Third-party developer) نحوه استفاده از این روش ارائه متن را درک میکند. بنابراین، شانس او برای گرفتن امتیاز بین همکاران و دنبال کنندگانش بیشتر میشود. در حال حاضر GitHub دستورالعملهایی را در مورد نحوه تهیه اسناد، تدوین کرده است.
جز دوم - کدها پاسخگوی نیاز عموم باشند
کدها لازم است مجدداً قابل استفاده باشند و مشکلی را رفع کنند که در بین عموم رایج است. برای مثال، تصور کنید در طی توسعهی یک اپلیکیشن اندرویدی در مبحثی خاص به مشکل برخوردهاید، این مشکل عمومیت دارد و البته کسی نیز راه حل اوپنسورس و رایگانی را برای آن فراهم نکرده است. اگر شما برای مسئلهی مذکور راهحلی پیادهسازی کنید و آن را روی گیتهاب در قالب یک کتابخانه در اختیار عموم بگذارید، به احتمال زیاد کتابخانهی شما بسیار سریع توسط سایر توسعهدهندگان شناخته شده، به محبوبیت رسیده و مرتباً در اپلیکیشنهای گوناگون مورد بهرهبرداری قرار خواهد گرفت.
جز سوم - تعداد باگها
کد بیعیب و نقص، رویای مشتریان و کابوس یک متخصص QC است. در زندگی واقعی، کد 100 درصد کاملی وجود ندارد. اگر تعداد باگهای کد نوشتهشده، کم باشد به احتمال زیاد مخاطب مناسب خود را به دست خواهید آورد. شرکتهای بزرگی که کاربر گیتهاب هستند از اینکه یک برنامهنویس بتواند در محصولشان اشکالی پیدا کند بسیار استقبال میکنند. شرکتهایی مانند گوگل (Google) فیسبوک (Facebook) و موزیلا (Mozilla) برای کسانی که باگهایشان را شناسایی کنند جایزه نقدی در نظر گرفتهاند.
معرفی متخصص QC: کارشناس کنترل کیفیت (Quality Control, QC) که جزئی از مديريت كيفيت است، بر برآورده نمودن و تكميل پروتکلهای كيفيت، تمركز و توجه دارد. کار اصلی یک متخصص QC اطمینان یافتن از کیفیت استاندارد یک خروجی است.
مفهوم باگ: باگ (Bug) در لغت به معنای حشره است. در برنامهنویسی به خطاهای کوچکی که در برنامه به وجود میآید، باگ میگویند. برای نخستین بار در سال ۱۹۴۵ در دانشگاه هاروارد (Harvard University) خانمی به نام گریس هاپر (Grace Hopper) نخستین مادر و مدرس برنامهنویسی، زمانی که در حال عیبیابی یک ماشینحساب به نام Mark II بود لغت باگ را بهکاربرد. گفته میشود که در آن زمان، ماشینحساب ازکارافتاده بود و خانم هاپر بعد از مدتی طولانی جستوجو متوجه میشود که یک سوسک بین قطعههای الکترونیکی ماشینحساب، گیرکرده است! و اینگونه «باگ» وارد دنیای برنامهنویسی شد. به فرایند پیدا کردن و حذف ایرادها از برنامه، دیباگ (Debug) گفته میشود.
جز چهارم - کیفیت یک کد
کیفیت یک کد با پارامترهای زیر مشخص میشود:
پارامتر اول - کد باید بهگونهای نوشته شود که نگهداری و گسترش آن در آینده، کار آسانی باشد.
پارامتر دوم - کد باید با استانداردهای پذیرفته شده در زبان برنامهنویسی مطابقت داشته باشد.
پارامتر سوم - کد باید قابل خواندن و ساختار یافته باشد. توصیه متخصصان، استفاده از الگوهای طراحی موجود است. زیرا این الگوها راهحلهایی را برای مواجه با موقعیتهای تکراری توسعهدهندگان ارائه میدهند. اگر برای کدهایی که در حال نوشتن آن هستید کتابخانههای شخص ثالثی وجود دارند، بهجای آزمون و خطا از آنها استفاده کنید.
پارامتر چهارم - کد با کیفیت کدی است که آزموده شده باشد یا به زبان دیگر قابل اعتماد باشد. هر چند عملکرد «رابط کاربری» (Interface) را میتوان به صورت دستی و انسانی کنترل کرد، ولی کدهای خام به صورت معمول توسط «تستهای واحدی» (Unit Tests) پوشش داده میشوند (کدهای خام مانند سایر کدهای معمول به نظر میرسند، ولی برنامهنویسان از طریق آنها بخش به بخش عملکرد اجزای برنامه خود را میسنجند). در حالت ایدهآل اگر بتوانیم ۱۰۰ درصد کدهای خام خود را تحت پوشش آزمونهای واحدی قرار دهیم، به یقین از هر باگ غیر منتظرهای در امان خواهیم بود. اما اگر انجام این حجم از تست هزینههای ما را سرسامآور میکند، شاید بهتر باشد حداقل بخشهای کلیدی و حیاتی کد خود را مشخص کرده و آنها را مورد آزمون قرار دهیم.
پارامتر پنجم - هنگام نوشتن کد، اصول DRY و KISS را به یاد داشته باشید. آنها به بهبود کد شما کمک خواهند کرد.
اصل DRY: خودت را تکرار نکن (Don't Repeat Yourself, DRY) اصلی در برنامهنویسی رایانهای است که بهوسیله عدم تکرار یک یا چند خط کد در مکانهای مختلف برنامه، رعایت میشود. درواقع با این کار برای اصلاح قسمتی از برنامه، نیازی به اصلاح قسمتهای مختلف کد وجود ندارد. این اصل میگوید که هر بخشی از برنامه باید یک نمود یکتا، نامبهم و معتبر داشته باشد. برنامهنویسان برای رعایت این اصل، کد خود را داخل یک تابع یا کلاس قرار میدهند و در موارد موردنیاز تابع را فراخوانی کرده یا یک شی جدید از کلاس میسازند. بر طبق این اصل، هر برنامهنویس دقایقی پس از نوشتن چند خط اول، مراحل نگهداری یا پشتیبانی از کد خود را آغاز میکند.
اصل KISS: آن را ساده و احمق نگهدار (Keep It Simple, Stupid, KISS) اصلی است که توسط کلی جانسون (Kelly Johnson) معرفی شد. این اصل بیان میکند که اگر سیستمها به دنبال سادهترین و بدیهیترین روشها برای انجام کارها باشند عملکرد بهتری خواهند داشت. بنابراین، سادگی باید هدف اصلی طراحی سیستمها باشد و از پیچیدگیهای بیهوده اجتناب کرد.
تروایس و یکپارچهسازی کدها
بسیاری از تستهای کیفیت کد را میتوان شامل اتوماسیون کرده تا به صورت خودکار انجام شوند. ناگفته نماند که کتابخانههایی نیز برای تستهای واحدی وجود دارند، که نوشتن و پیادهسازی آنها را به مراتب سادهتر میسازند. لازم است اشاره کنیم که پروژههای اوپن سورس سنجش کیفیت با سرورهای CI پیکربندی میشوند و وظیفهشان این است که تمامی چکها یا کنترلهای تعریف شده را در حین هر درخواست «Pull» به صورت خودکار اجرا کنند. حال میبایست به این نکته بپردازیم که چنانچه یکی از درخواستهای «Pull» با پاسخ صحیحی مواجه نشود کاربری که آن را ارسال کرده میبایست علت آن را بررسی کرده و پس از یافتن مشکل نسبت به رفعش اقدام نماید. بد نیست بدانید TravisCI محبوبترین سرور CI محسوب میشود و میتوانید آن را به رایگان به ریپازیتوری عمومی خود متصل کنید.
جز پنجم - پشتیبانی فعال
اگر یک راهحل جدید ارسال میکنید باید خود را برای دریافت پاسخهای دیگران آمادهسازید. شاید برخی از کاربران، مشکلهای موجود را بیان کنند، تغییر جدیدی را پیشنهاد دهند یا فقط پیگیر پروژه باشند. یک قانون خوب در گیتهاب این است که شما باید به فعالیتهای کاربران، پاسخ دهید. حمایت از پروژه، تصحیح سریع خطاها و البته باز بودن پروژه برای تغییر، کلید موفقیت شما است. توسعه نسخههای جدید یک پروژه، مزیت بزرگی در بانک اطلاعاتی شما به شمار میرود.
جز ششم- مجوز یا سطح دسترسی در گیتهاب
نرمافزارهای متنباز، نرمافزارهای رایگانی هستند. همه برنامهها و موارد موجود در Github را با یک اخطار کوچک و تا جایی که مجوزهای برنامه اجازه میدهند، میتوان بهصورت رایگان استفاده کرد. به دلیل تمایل زیادی که برای به اشتراکگذاری و باز کردن فایلهای متنباز در جهان وجود دارد، گیتهاب به کاربرانش امکان انتخاب یک نوع مجوز با دسترسی خاصی را میدهد. بهعنوانمثال:
مجوز Unlicense
مجوزی بدون شرط و بر اساس متنباز است. این مجوز زمانی صادر میشود که کد مالکیت، عمومی باشد. انجام چندین پروژه عملیاتی، اصلاح و افزودن، برای همه کاربران بدون استثنا در دسترس خواهد بود.
مجوز MIT
کاربران حق استفاده آزادانه از این کد را دارند و با آن قادر به ارائه پیشنهادهای خود هستند. بااینحال، کاربران باید حقوق کپیرایت را رعایت کنند. چنین مجوزی از jQuery، .NET، Core و Rails استفاده میکند.
مجوز Apache 2.0
علاوه بر MIT، مجوز ارائه اظهارنامه حق ثبت اختراع را به کاربرانش میدهد. این مجوز توسط اندروید (Android)، آپاچی (Apache) و سویفت (Swift) استفاده میشود.
مجوزهای اختصاصی بسته
در گیتهاب، پروژههایی با یک مجوز بسته وجود دارند. در پروژههایی با این مجوز، فقط یک شرکتکننده خاص، امکان دسترسی به دادهها را دارد.
صدرنشینان رتبهبندی مخازن گیتهاب
در رتبهبندی فعلی مخازن گیتهاب که برحسب زبان برنامهنویسی و تعداد ستارههای دریافتی انجامگرفته است به ترتیب جاوااسکریپت (JavaScript) سپس پیاچپی (PHP) و در انتها جاوا (Java) عنوانهای اول تا سوم این رتبهبندی را از آن خود کردهاند. به یاد داشته باشید در دنیای بیانتهای برنامهنویسی، گوی قدرت در دست کسانی است که بیتوجه به اصول و قانونهای دستوپا گیر، در فکر پیدا کردن راهی بهتر، سریعتر و سادهتر هستند. کسانی که در آینده از آنها به بزرگی یاد خواهد شد.
سلام ممنون میشم در مورد نحوه ی ثبت نام و اموزش کار با سایت گیت هاب مطلبی بنویسید همچیین چطوری باید از کدهای این سایت استفاده کرد متاسفانه مطلب فارسی در این زمینه در هیچ سایتی نیست ممنون میشم