نخستین تجربه عملی ورود به گیت‌هاب
راهنمای مبتدیان برای مشارکت‌ در جامعه متن ‌باز
نرم‌افزارهای متن باز اصطلاحاتی هستند که این روزها غالباً با آن مواجه می‌شویم و در محافل خبری مطالب متنوعی را در ارتباط با این مفاهیم می‌شنویم. با وجود این، هنوز هم ممکن است کاربرانی وجود داشته باشند که شناخت دقیقی از این مفهوم نداشته باشند. به‌ طور مثال متن ‌باز چیست؟ چگونه می‌توان در پروژه‌های متن ‌باز مشارکت کرد؟ واژه انجمن که غالباً در ارتباط با پروژه‌های متن ‌باز به آن‌ها اشاره می‌شود به چه معنا است؟

این مطلب یکی از مجموعه مقالات پرونده ویژه «نرم‌افزارهای متن‌باز» شماره 196 ماهنامه شبکه است. علاقه‌مندان می‌توانند کل این پرونده ویژه را از روی سایت شبکه دانلود کنند.


اولین سؤالی که ممکن است به ذهن بسیاری از کاربران به‌ویژه آن‌ها که تازه به دنیای برنامه‌نویسی قدم گذاشته‌اند خطور می‌کند این است: «کدنویسی چیزی است که در حال مشاهده آن هستم؟ فایل‌هایی با اندازه‌های حجیم که دستورات انگلیسی همراه با اعداد درون آن‌ها نوشته شده است که من چیزی از آن سر در نمی‌آورم؟
اگر صادق باشیم باید بگوییم برنامه‌نویسی متن ‌باز آن ‌گونه که بسیاری تصور می‌کنند ماهیت پیچیده‌ای ندارد. این ‌طور نیست که تمام نرم‌افزارهای متن ‌باز OSS (سرنام Open Source Software) را کدهای پایه‌ای احاطه کرده باشند که با استفاده از آن‌ها بتوان سطح اهرام‌ مصر را پوشاند. تقریباً هیچ‌کدام از کدهایی که امروزه در دنیای برنامه‌نویسی متن ‌باز به کار گرفته می‌شوند، به اندازه هیروگلیف رمزی و محرمانه نیستند. در واقع، قسمت اعظم نرم‌افزارهای متن باز شامل کدهای ساده و قابل فهمی هستند که توسط افراد مختلف از بچه مدرسه‌ای 12 ساله در روسیه گرفته تا برندگان 80 ساله جایزه نوبل یا در رده‌های سنی بین آن‌ها نوشته می‌شوند. اکثر شیفتگان دنیای متن ‌باز، برنامه‌نویسی را نوعی سرگرمی یا تفریح می‌پندارند، در حالی که این‌ کار را نوعی مشارکت در کار خیر نیز تفسیر می‌کنند. مشارکت‌ در جامعه متن باز محدود به کدنویسان نیست. در واقع، اگر دیگر متخصصان حوزه فناوری در کنار برنامه‌نویسان قرار نداشتند و به مستندسازی کدها که به جامعه در فهم بهتر کدها کمک می‌کند حضور نداشتند، نرم‌افزارهای متن باز مدت‌ها پیش به ‌طور کامل از میان رفته بودند. مورد دیگری که به همین اندازه حائز اهمیت است، افرادی هستند که وقتشان را برای پاسخ‌گویی به سؤالات مربوط به پروژه‌های متن ‌باز و پروژه‌های دیگر اختصاص می‌دهند و با اضافه کردن نمونه‌ها در واقع با دست‌اندرکاران پروژه به همکاری می‌پردازند تا مبتدیان بتوانند موارد به‌کارگیری نرم‌افزار را به‌راحتی درک کنند. افرادی هم هستند که در ازای یادگیری بیشتر، فهرست‌های پست‌سپاری الکترونیکی مربوط به پروژه را سرپرستی می‌کنند. این همکاری گروهی در قالب انجمن‌ها باعث شگفتی بسیاری از کارشناسان شده است، به‌ طوری که حتی شرکت‌های بزرگ نرم‌افزاری را سرانجام تسلیم کرد که باید به متن ‌باز ملحق شوند. در واقع، این ‌گونه به نظر می‌رسد که ایدئولوژی متن ‌باز به‌دنبال دستیابی به چنین سطحی از همکاری آن هم در مقیاس جهانی است. جالب‌تر آنکه افرادی هم هستند که با سازماندهی جلسات یا ویدئو کنفرانس‌ها درباره یک پروژه OSS خاص یا حتی فقط برای سرگرمی و دور هم بودن مشارکت می‌کنند. هرکس می‌تواند یک مشارکت‌کننده متن باز باشد، البته تا زمانی که به دیگران در هر استعداد و ظرفیتی کمک می‌کند و این می‌تواند یک فرآیند فوق‌العاده باارزش باشد، چیزی که درنهایت متوجه آن خواهید شد!

مطلب پیشنهادی

چگونه از نرم‌افزارهای متن ‌باز کسب درآمد کنیم؟
راهکارها و چالش‌های پیش ‌روی توسعه‌دهندگان

چرا باید در جامعه متن ‌باز مشارکت داشته باشم؟
دلایل مختلفی وجود دارند که می‌توانند به شما انگیزه دهند مشارکت جدی در جامعه متن باز داشته باشید. در حالی که تعدادی از توسعه‌دهندگان با هدف رفاه جامعه حاضر به مشارکت در جامعه متن ‌باز می‌شوند، در مقابل تعداد دیگری نیز به‌واسطه منافع شخصی خود ترجیح می‌دهند مشارکت داشته‌ باشند. به‌ طور مثال، تعدادی از توسعه‌دهندگان به دلایل زیر به جامعه متن ‌باز وارد می‌شوند.

ارتقای سطح کیفی
تعدادی از برنامه‌نویسان به‌دنبال آن هستند تا از طریق مشارکت سطح کیفی کدهایی که در دسترس سایر توسعه‌دهندگان قرار می‌گیرد را ارتقا و به توسعه‌دهندگان دیگر اجازه دهند در پروژه‌های خود بر این کدها تکیه کنند، به‌ طوری که دیگر اجباری به بازنویسی توابع از ابتدا وجود نداشته باشد و توسعه‌دهندگان به نرم‌افزار متن باز دسترسی رایگان پیدا کنند. 

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

احترام متقابل جامعه 
این توسعه‌دهندگان به‌خاطر مهارت‌هایشان و احترامی که جامعه متن باز برای آن‌ها قائل می‌شود، مورد تمجید قرار می‌گیرند. 

افزایش سطح مهارت‌ها
توسعه مهارت‌‌های فردی و درگیر شدن با افراد هم‌فکر از دیگر نکات مثبت این مشارکت است. هنگام مشارکت در جامعه متن باز، لازم است با افراد واقعاً دوست‌داشتنی و متبحر تعامل کنید. این کار می‌تواند واقعاً آموزنده باشد و تجربه سرگرم‌کننده‌‌ای را به وجود آورد. ضمن اینکه به شما کمک می‌کند تا ارتباط خود را گسترده کنید و مهم‌تر از آن سطح تعاملات اجتماعی خود را بهبود بخشید.

از کجا شروع کنیم؟
مراحل ساده و مستندی وجود دارند که به شما می‌گویند چگونه می‌توانید در جامعه متن ‌باز مشارکت داشته باشید. شکل 1 نمونه یک درخواست ارسال شده در گیت‌هاب را نشان می‌دهد.


شکل 1- همان ‌گونه که مشاهده می‌کنید مشارکت در پروژه متن باز همواره نرم‌افزاری نیست. به ‌طور مثال، پروژه فهرست JetBrains در ارتباط با دامنه‌های وب‌سایت دانشگاه برای تأیید ایمیل دانشجویان است.

در ابتدا بهتر است به سراغ مفاهیم اصلی برویم. به‌منظور مدیریت مجموعه‌ای از داده‌‌ها که توسط صدها مشارکت‌کننده اصلاح و تغییر داده شده است، باید سیستمی وجود داشته باشد که بتواند فرآیندهای زیر را به‌خوبی پوشش دهد:
1- انواع کپی‌های مختلف داده‌ها را مدیریت کند.
2- امکان ویرایش همان داده‌ها را از طریق چند فرد فراهم کند.
3- تمام کدها را پس از کامل شدن در یک تکه کد بزرگ‌تر ادغام کند. 
گیت‌هاب از جمله سایت‌هایی است که چنین سیستمی را عرضه کرده است. گیت‌هاب یک میزبانی رایگان برای نرم‌افزارها، فایل‌ها یا داده‌های متن باز است. در گیت‌هاب، نرم‌افزار در مخازن متفاوتی ذخیره می‌شود که در اصل شبیه فولدرهای مجزا (یا فضاهای کاری) برای هر پروژه‌ای هستند که ممکن است بخواهید میزبانی کنید. هر مخزن مجموعه مسائل، باگ‌ها، کدها، اسناد و جزئیات خاص خود را دارد. حال ببینیم چگونه مشارکت را با استفاده از مخزن JetBrains به‌عنوان نمونه آغاز کنیم. (شکل 2)

مطلب پیشنهادی

این توزیع لینوکسی چرخه عمر اسمارت‌فون‌ها را ده ساله می‌کند


شکل 2- مخزن JetBrains تحت عنوان Swot

همان طور که در شکل 2 مشاهده می‌کنید، این تصویر شامل تعدادی فایل است و فهم آن‌ها ممکن است دشوار باشد. بنابراین، ما فایل README را داریم که شامل اطلاعاتی درباره پروژه است و کمک می‌کند تا یک تازه‌وارد بفهمد پروژه درباره چیست. نگاهی به فایل JetBrains README.md داشته باشید. 


شکل 3- فایل README مربوط به مخزن  Swot

برای ساخت نسخه مخصوص خودمان از این مخزن (پروژه) باید یک حساب کاربری در گیت‌هاب بسازیم و سپس یک کپی از این پروژه را در مخزن خود منشعب (Fork) ‌کنیم. انشعاب دادن یک کپی مجزا از یک پروژه را برای مصرف شما می‌سازد. اغلب وقتی نرم‌افزار ویرایش می‌شود، شاخه اصلی دست‌نخورده باقی می‌ماند، در حالی که تغییرات در یک کپی منشعب شده (شاخه Development) پروژه آزمایش می‌شوند. پس از آنکه تأیید شد شاخه Development  تمام آزمایش‌‌ها را پشت سر گذاشته است، در شاخه اصلی یا مستر ادغام می‌شود.


شکل 4- منشعب کردن یک شاخه و ادغام آن

شکل 4 به شما نشان می‌دهد چگونه می‌توانید یک کپی از شاخه اصلی را منشعب و در ادامه شاخه(های) خود را ایجاد کنید و چگونه هنگامی که مشغول ویرایش شاخه(های) پروژه هستید، آن‌ها را در شاخه اصلی ادغام کنید.


شکل 5- منشعب کردن کپی مخزن خودتان

فرض کنید حساب ‌کاربر گیت‌هاب خود را ساخته‌اید. وارد آن شوید و مخزن JetBrains را بازدید کنید. روی دکمه Fork در بالا سمت راست صفحه کلیک و مخزن خود را به‌عنوان گزینه انتخاب کنید (اگر چند سازمان به‌عنوان گزینه دارید، نگران نباشید. فقط صفحه شخصی خود را انتخاب کنید). اگر صفحه شخصی نشان داده نشد، احتمالاً شما یک کپی از آن‌ را در صفحه خود منشعب کرده‌اید. (شکل 5) حالا کپی مخزن خود را ببینید و بر اساس دستورالعمل‌هایی که در فایل README.md آمده است، تغییرات را در کد اعمال کنید و نام دامنه مؤسسه خود را مطابق با ساختار فولدر توصیف شده اضافه کنید. از رابط کاربری برای ایجاد یک فایل جدید با نام مؤسسه خود استفاده کنید. (شکل 6) اکنون زمان آن است که این کد به روز شده را به شاخه اصلی بازگردانید. به بخش Pull Requests بروید.


شکل 6- کپی منشعب شده‌ای که ساخته‌اید

از آنجا که ما کد را منشعب کرده‌ایم، رویه ادغام آن تحت عنوان ساختن یک Pull Request شناخته می‌شود. اساساً ما از شاخه اصلی درخواست می‌کنیم تا تغییرات ما را به‌سمت خود بازیابی کند. شاخه اصلی از شما می‌خواهد تا توضیح و نامی را برای ویرایش یا تغییراتی که انجام می‌دهید بیافزایید. این توضیح و نام پس از ساخته شدن همانند edit /commit دیگر آنجا در مخزن JetBrains ظاهر می‌شود. (شکل 7)


شکل 7- Pull request ساخته شده

از آنجا که شما مالک JetBrains نیستید، لازم است منتظر ادمین‌ها بمانید تا درخواست بازیابی شما را بپذیرند. پس از آنکه ادغام صورت گرفت، ماهیت کاری که انجام داده‌اید همانند تصویری خواهد بود که در شکل 8 مشاهده می‌کنید. بله موفق شدید، تبریک می‌گوییم شما حالا یک شرکت‌کننده متن آزاد هستید. به‌خاطر شما تمام دانش‌آموزان مؤسسه می‌توانند مثلاً با استفاده از نشانی ایمیل دانشگاه خود درخواست تخفیف دانشجویی JetBrains را ارائه کنند.


شکل 8- Pull request ادغام شده

هم‌اکنون باید احساس خیلی خوبی داشته باشید، چون توانسته‌اید به دانشجویان کمک کنید. همچنین، می‌توانید با پرداختن به مسائل در مخازن مختلف، این مشارکت را بسط دهید و حضور فعال‌تری داشته باشید. اکثر این مخزن‌ها شامل موضوعات و مسائل ذخیره شده برای مبتدیان یا کسانی هستند که برچسب First-Timers Only دارند.

 

برچسب: