مقدمه: به دنیای متنباز خوش آمدید!
ورود به دنیای متنباز میتواند هیجانانگیز و در عین حال کمی دلهرهآور باشد. بسیاری از مبتدیان با موانعی مانند ندانستن نقطه شروع، ترس از اشتباه، یا احساس intimidated شدن توسط کدهای پیچیده مواجه میشوند. این راهنما دقیقاً برای شما طراحی شده است؛ یک راهنمای گامبهگام برای شکستن این موانع و همراهی شما در برداشتن اولین قدم برای تبدیل شدن به یک مشارکتکننده فعال در جامعه جهانی متنباز.
۱. متنباز چیست و چرا باید مشارکت کنیم؟
این بخش انگیزه و زمینه لازم را برای شروع به شما میدهد.
۱.۱. تعریف متنباز
نرمافزار متنباز (Open-source software) به نرمافزاری گفته میشود که کد منبع آن به صورت عمومی در دسترس است و هر کسی میتواند آن را مشاهده، استفاده، اصلاح و توزیع کند. این رویکرد، بر پایهی فلسفهی همکاری، شفافیت، شمولپذیری و بهروزرسانیهای عمومی و مشارکتی استوار است. برخلاف نرمافزارهای مالکیتی که کد منبع آنها محدود است، دنیای متنباز یک اکوسیستم پویا و مشارکتی برای توسعه فناوری است.
۱.۲. سه مزیت کلیدی مشارکت برای شما
مشارکت در پروژههای متنباز فقط به نفع جامعه نیست، بلکه یک فرصت عالی برای رشد شخصی و حرفهای شماست.
1. تقویت مهارتها: شما با سبکهای کدنویسی متنوع، بهترین شیوهها (best practices) و پروژههای واقعی در مقیاس بزرگ آشنا میشوید. این یک راه عالی برای یادگیری عملی است.
2. ساخت پورتفولیو (نمونه کار): هر مشارکت شما یک مدرک ملموس از تواناییهایتان است که میتوانید به کارفرمایان آینده نشان دهید. این موضوع فقط تئوری نیست؛ همانطور که توسعهدهندگان در جوامع برنامهنویسی میگویند، یک پورتفولیو از مشارکتهای معنادار در دنیای متنباز میتواند تأثیرگذارتر از یک رزومه سنتی باشد، زیرا نمایشی زنده از مهارتها، توانایی همکاری و اشتیاق شما برای یادگیری است.
3. شبکهسازی و ارتباط با جامعه: شما با توسعهدهندگان همفکر از سراسر جهان ارتباط برقرار میکنید. این شبکهسازی میتواند به فرصتهای شغلی، مشاوره (mentorship) و دوستیهای پایدار منجر شود.
۱.۳. مشارکت فقط کدنویسی نیست!
یک تصور غلط رایج این است که برای مشارکت در پروژههای متنباز حتماً باید یک کدنویس حرفهای باشید. این تصور کاملاً اشتباه است! راههای ارزشمند زیادی برای کمک وجود دارد که نیازی به کدنویسی ندارند.
* بهبود مستندات: بسیاری از پروژهها از مستندات ضعیف یا ناقص رنج میبرند. شما میتوانید با نوشتن راهنما، بهبود توضیحات یا ترجمه مستندات کمک بزرگی کنید.
* رفع غلطهای املایی و نگارشی: اصلاح اشتباهات تایپی و گرامری در فایلهای README یا مستندات، یک راه ساده اما بسیار ارزشمند برای اولین مشارکت است.
* نوشتن آموزش و مقالات: اگر در استفاده از یک ابزار متنباز مهارت پیدا کردهاید، میتوانید با نوشتن یک مقاله آموزشی یا ضبط یک ویدیو، به دیگران کمک کنید تا آن را یاد بگیرند.
* گزارش باگ و تست نرمافزار: استفاده از نرمافزار و گزارش دقیق باگها به توسعهدهندگان کمک میکند تا مشکلات را سریعتر رفع کنند.
اصلاح قالببندی، سبک و دستور زبان/املای فایلهای راهنما و مستندات، هیچ دانش برنامهنویسی نیاز ندارد، راهی عالی برای یادگیری هدف کد است و معمولاً نادیدهگرفتهشدهترین بخش یک پروژه است، بنابراین نسبت ارزش به تلاش بالایی دارد.
— نظر کاربر dorsalus در Reddit
حالا که با فلسفه و انگیزههای لازم آشنا شدید، بیایید با هم ابزارهای سفرمان را آماده کنیم.
۲. پیشنیازها: آمادهسازی برای اولین گام
قبل از شیرجه زدن در دنیای متنباز، باید ابزارهای اساسی را آماده کنید و با مفاهیم اولیه آشنا شوید.
۲.۱. آشنایی با ابزارهای اساسی
برای شروع، به دو ابزار اصلی نیاز دارید:
* ویرایشگر کد (Code Editor): یک محیط برای نوشتن و ویرایش کد. گزینههای محبوب و رایگان زیادی مانند Visual Studio Code، Sublime Text یا IDEs شرکت JetBrains وجود دارد. یکی را که با آن راحت هستید انتخاب کنید.
* گیت (Git): گیت یک سیستم کنترل نسخه (Version Control System) است که به طور گسترده در پروژههای متنباز استفاده میشود. یادگیری اصول اولیه آن برای هر نوع مشارکتی (حتی غیر از کدنویسی) ضروری است.
۲.۲. مفاهیم کلیدی گیت که باید بدانید
اجازه ندهید این اصطلاحات شما را بترسانند. به آنها به عنوان پنج کلمه اساسی در واژگان همکاری در هر پروژهای فکر کنید. بیایید آنها را با هم مرور کنیم:
مفهوم تعریف ساده و کاربردی
Repository (ریپازیتوری) پوشه پروژه که شامل تمام فایلها و تاریخچه تغییرات است. به آن «repo» هم میگویند.
Clone (کلون) ایجاد یک کپی محلی (روی کامپیوتر خودتان) از یک ریپازیتوری راه دور.
Branch (شاخه) یک خط توسعه جداگانه برای کار روی یک ویژگی جدید یا رفع یک باگ، بدون تأثیر بر کد اصلی.
Commit (کامیت) ذخیره تغییرات اعمال شده در ریپازیتوری محلی شما با یک پیام توضیحی.
Pull Request (PR) پیشنهادی برای ادغام تغییرات شما (از شاخه خودتان) در شاخه اصلی پروژه. این قلب مشارکت است.
با این ابزارها و دانش اولیه، شما آمادهاید تا پروژه مناسب خود را برای اولین مشارکت پیدا کنید.
۳. چگونه پروژه مناسب خود را پیدا کنیم؟
پیدا کردن پروژه مناسب، کلید یک تجربه موفق در اولین مشارکت است.
۳.۱. از علایق خود شروع کنید
بهترین نقطه شروع، نرمافزارهایی است که خودتان از آنها استفاده میکنید یا به حوزه آنها علاقهمند هستید. وقتی به یک پروژه علاقه دارید، انگیزه بیشتری برای درک آن و کمک به بهبودش خواهید داشت. این کار باعث میشود از فرآیند مشارکت لذت ببرید و مستقیماً از نتایج آن بهرهمند شوید.
۳.۲. پلتفرمها و منابع برای یافتن پروژه
خوشبختانه منابع زیادی برای کمک به مبتدیان وجود دارد:
* برچسب #good-first-issue در گیتهاب: این بهترین نقطه شروع است. نگهدارندگان پروژه از این برچسب برای مشخص کردن وظایفی استفاده میکنند که برای تازهواردها مناسب هستند.
* وبسایت First Timers Only: این وبسایت آموزشهایی برای اولین مشارکت ارائه میدهد و لیستی از ایشوهای مناسب برای مبتدیان را از پروژههای مختلف جمعآوری میکند.
* ابزار Git Begin: این ابزار که توسط یکی از اعضای فعال جامعه متنباز ساخته شده، فرآیند جستجو برای "good first issue" را با فیلتر کردن بر اساس زبان برنامهنویسی مورد علاقه شما، سادهتر میکند.
* پروژه Job Scraper: به عنوان یک زمین تمرین پیشنهادی، این پروژه یک محیط واقعی و حمایتی است که توسط همان توسعهدهنده برای کمک به مبتدیان طراحی شده تا اولین مشارکت خود را در فضایی دوستانه انجام دهند.
شما یک پروژه پیدا کردهاید که هیجانزدهتان میکند! حالا، قبل از اینکه به سراغ کد بروید، وقت آن است که به یک شهروند خوب در جامعه آن پروژه تبدیل شوید. هر پروژه بزرگی فرهنگ و قوانین تعامل خود را دارد؛ یادگیری آنها گام حیاتی بعدی شماست.
۴. گام به گام تا اولین Pull Request
این مراحل بعدی فقط یک سری دستور نیستند؛ اینها روشی هستند که شما با آن به گفتگوی جهانی توسعه نرمافزار میپیوندید. هر گام، بخشی از انتقال واضح و محترمانه ایدههای شما به نگهدارندگان پروژه است.
۴.۱. مرحله اول: قوانین بازی را بخوانید
تقریباً تمام پروژههای متنباز، فایلهایی دارند که قوانین و راهنمای مشارکت را مشخص میکنند. قبل از هر کاری، این دو فایل را به دقت بخوانید:
* CONTRIBUTING.md: این فایل نقشه راه شماست. در آن اطلاعاتی در مورد روند ارسال مشارکت، استانداردهای کدنویسی، نحوه راهاندازی پروژه و کانالهای ارتباطی پیدا میکنید.
* CODE_OF_CONDUCT.md: این سند، قوانین رفتاری جامعه را مشخص میکند و محیطی امن و محترمانه را برای همه تضمین میکند.
۴.۲. مرحله دوم: یک Issue را انتخاب و اعلام آمادگی کنید
یک ایشو با برچسب "good first issue" یا "beginner-friendly" پیدا کنید. قبل از شروع به کار، حتماً یک کامنت روی آن ایشو بگذارید و اعلام کنید که علاقهمند به کار روی آن هستید. این کار از انجام کار تکراری توسط دیگران جلوگیری میکند و به نگهدارندگان پروژه اطلاع میدهد که کسی مسئولیت آن را بر عهده گرفته است.
سلام! من در دنیای متنباز تازهکار هستم و دوست دارم روی این ایشو کار کنم. آیا هنوز در دسترس است؟ فکر میکنم میتوانم با اصلاح event listener در کامپوننت ویرایشگر این مشکل را حل کنم. به نظر شما رویکرد خوبی است؟
۴.۳. مرحله سوم: فرآیند فنی مشارکت
حالا نوبت به کار فنی میرسد. این مراحل را به ترتیب دنبال کنید:
1. Fork کردن ریپازیتوری: با کلیک روی دکمه "Fork" در گیتهاب، یک کپی شخصی از پروژه در حساب کاربری خودتان ایجاد کنید.
2. Clone کردن پروژه: پروژهای را که Fork کردهاید، روی کامپیوتر خود Clone کنید تا یک نسخه محلی داشته باشید.
3. ایجاد یک شاخه (Branch) جدید: همیشه تغییرات خود را در یک شاخه جدید اعمال کنید. نام شاخه باید توصیفی باشد.
4. اعمال تغییرات و Commit کردن: تغییرات لازم را در کد یا مستندات ایجاد کنید. سپس آنها را با یک پیام کامیت واضح ذخیره کنید. این شانس شماست که داستان تغییر خود را تعریف کنید. یک پیام کامیت واضح، هدیهای به خودتان در آینده و به نگهدارندگان پروژه است. در ادامه یاد میگیریم چطور یک پیام عالی بنویسیم.
5. Push کردن تغییرات: شاخه جدید خود را به ریپازیتوری Fork شده در گیتهاب Push کنید.
۴.۴. مرحله چهارم: ارسال Pull Request (PR)
به صفحه ریپازیتوری اصلی در گیتهاب بروید. گیتهاب به طور خودکار تشخیص میدهد که شما یک شاخه جدید Push کردهاید و دکمه "New pull request" را به شما نمایش میدهد. روی آن کلیک کنید. قالب PR را با دقت پر کنید و به وضوح توضیح دهید که چه تغییری ایجاد کردهاید و چرا. اگر PR شما یک ایشو خاص را حل میکند، آن را با عبارتی مانند Fixes #123 به ایشو متصل کنید.
ارسال PR پایان راه نیست. در واقع، اینجاست که همکاری واقعی شروع میشود.
۵. بهترین شیوههای ارتباطی و همکاری
برای اینکه یک مشارکتکننده خوب باشید، باید به نحوه ارتباط خود نیز توجه کنید.
۵.۱. نوشتن پیامهای Commit واضح
پیامهای کامیت خوب، به نگهدارندگان کمک میکنند تا تاریخچه پروژه را بهتر درک کنند. این سه قانون را رعایت کنید:
* از حالت امری استفاده کنید: به جای "Fixed the bug" بنویسید "Fix the bug".
* عنوان را کوتاه نگه دارید: عنوان پیام را به حدود ۵۰ کاراکتر محدود کنید.
* در بدنه پیام، "چه" و "چرا" را توضیح دهید: اگر تغییر پیچیده است، در بدنه کامیت توضیح دهید که چرا این تغییر ضروری بوده است، نه اینکه چگونه آن را انجام دادهاید.
۵.۲. بازخورد را با آغوش باز بپذیرید: این یک هدیه است، نه انتقاد
پس از ارسال PR، نگهدارندگان پروژه ممکن است آن را بررسی کرده و درخواست تغییراتی کنند. این یک بخش طبیعی و حیاتی از فرآیند متنباز است. دریافت بازخورد نشان میدهد که نگهدارندگان برای کار شما ارزش قائل هستند و زمان خود را برای کمک به شما سرمایهگذاری میکنند. آن را به عنوان فرصتی برای یادگیری و رشد ببینید.
* سریع و مؤدبانه پاسخ دهید: حتی اگر فقط برای تأیید دریافت بازخورد باشد.
* پیشنهادات را بپذیرید: به یاد داشته باشید که آنها با پروژه آشناتر هستند. اگر با پیشنهادی مخالفید، دلیل خود را با احترام توضیح دهید.
* تغییرات درخواستی را اعمال کنید: پس از اعمال تغییرات، PR خود را بهروز کنید.
۵.۳. صبور باشید
نگهدارندگان پروژههای متنباز اغلب داوطلبانی هستند که در زمان آزاد خود کار میکنند. ممکن است بررسی PR شما کمی طول بکشد. دلسرد نشوید و صبور باشید. این یک ماراتن است، نه یک مسابقه سرعت. اگر بعد از مدتی پاسخی دریافت نکردید، میتوانید با یک پیام یادآوری مؤدبانه، موضوع را پیگیری کنید.
۶. مسیر خود را ادامه دهید
تبریک میگویم! شما اولین مشارکت خود را انجام دادید. این یک نقطه عطف بزرگ و شروع یک سفر هیجانانگیز است. حالا میتوانید با مشارکت منظم در همین پروژه یا کشف پروژههای جدید، به یادگیری ادامه دهید. با کسب تجربه، میتوانید وظایف پیچیدهتری را بر عهده بگیرید و حتی به دیگر تازهواردها کمک کنید. به عضو فعالی از این جامعه جهانی و پویا تبدیل شوید و از تأثیری که میگذارید لذت ببرید.
منابع مفید
در اینجا لیستی از منابعی که در این راهنما به آنها اشاره شد، برای دسترسی آسا
ن شما گردآوری شده است:
* Git Begin
* Job Scraper Project
* First Timers Only
* GitHub Explore
* CodeTriage
* Up For Grabs
* Open Source Guides
نظر خود را بنویسید