هنگامی که من در سال 2019 به مشارکت در پروژههای متن باز شروع کردم، به یاد میآورم که از انجام هر کاری میترسیدم، زیرا گمان میکردم که ممکن است اشتباه باشد. من نمیخواستم به عنوان تازه کار شناخته شوم. سوالات زیادی وجود داشت که مجبور شدم جواب آنها را پیدا کنم:
- به چه مهارتهایی نیاز دارم تا بتوانم با موفقیت کار کنم؟
- چگونه کارهایی که به من سپرده شده است را به درستی انجام دهم؟
- Forking و upstream چیست؟
اگرچه مقالات و نکات و ترفندهایی در وب وجود داشت، اما جمع آوری همه اطلاعات و یادگیری آنها امری دشوار بود.
بعد از مدتی که به طور منظم در پروژههای متن باز مشارکت داشتم و با گردش کار احساس راحتی کردم، تصمیم گرفتم دانش خود را با شما در میان بگذارم تا شما مانند من از صفر شروع نکنید.
علاوه بر این، انگیزه من این است افرادی را که در شروع مشارکت در پروژههای متن باز تردید دارند، راهنمایی کنم تا اولین قدم را بردارند. توسعه دهندگانی که به پروژههای متن باز کمک میکنند منجر به کیفیت بهتر کد، اسناد بیشتر و سرعت توسعه سریعتر میشود که برای همه ما سودمند است.
چرا باید در پروژههای متن باز سهیم باشید
- مهارتهای کد نویسی خود را ارتقا میدهید. کار با پایگاههای کد مختلف راهی عالی برای بهتر شدن در کد نویسی است. برخلاف محیط کار که ممکن است برای مدت طولانیتری روی یک پروژه کار کنید، با پروژههای متن باز میتوانید هر زمان که خواستید به پروژه دیگری بروید و با ابزارها و تنظیمات مختلف آشنا شوید.
- به جامعه برنامه نویسی کمک میکنید. شما احتمالا روزانه از منابع مختلف زیادی به صورت رایگان استفاده میکنید و این فرصت مناسبی برای شماست که به عنوان راهی برای تشکر از امکانات استفاده شده باشد.
- اعتبار خود را ارتقا میدهید. استخدام شما با درخواستهای انجام شده برای پروژههای شناخته شده آسانتر خواهد بود و یا حتی ممکن است در یک پروژه خاص به یک مدیر تبدیل شوید.
- با تیمهای مختلف کار میکنید و آشنا میشوید. هر ریپازیتوری همکاران و قراردادهای برنامه نویسی متفاوتی دارد که باید با آنها سازگار شوید.
- مشکلات مختلف را حل میکنید. یافتن راهحل برای مشکلات پیچیده میتواند رضایت بخش و سرگرم کننده باشد. همچنین میتوانید انتخاب کنید که میخواهید روی چه موضوعاتی کار کنید.
اگر فکر میکنید که تجربه کافی برای مشارکت در پروژههای این چنینی را ندارید، نگران نباشید. همیشه میتوانید با بهبود اسناد، پاسخگویی به مسائل یا بین المللی شدن یک پروژه هر زمان که احساس آمادگی کنید، مشارکت و همکاری داشته باشید.
برخی از مشارکتهای من
برای اینکه به شما مختصری از پروژههایی را که میتوانید روی آنها کار کنید، ارائه دهم، در اینجا چند منبع آورده شده است که من روی آنها کار کردم:
- sveltejs/svelte: دسترسی را اضافه کنید
- sindresorhus/eslint-plugin-unicorn: lint را اضافه کنید
- microsoft/webtemplatestudio: کد انگولار تولید شده و ریاکت را ارتقا دهید و تستهای e2e را برطرف کنید
- react-boilerplate/react-boilerplate: تغییرات وابستگی و ارتقای آنها
- ethereum/ethereum-org-website: رفع باگ setTimeout و رفع مشکل دسترسی
- foundry376/mailspring: گزینه تنظیمات را اضافه کنید
همانطور که مشاهده میکنید، بخشهای مورد علاقه من در توسعه وب شامل کار بر روی بهبود کیفیت کد مانند lint و قابلیت دسترسی و همچنین ارتقای وابستگیهاست.
یکی از نکات جالب در مورد مشارکتهای متن باز این است که شما میتوانید هر کدام از موضوعات مورد نظر خود را انتخاب کنید.
جریان مشارکت
قبل از شروع به کار بر روی مشارکتهای متن باز، لازم است بدانید که جریان کار معمول به چه صورت است.
مروری سطح بالا از جریان گام به گام که مشارکتهای متن باز را دنبال میکنند.
اگرچه اکثر درخواستهای pull میتوانند در همان روز ایجاد، بررسی و ادغام شوند، اما غیر معمول نیست که درخواستها حتی از چندین ماه از ابتدا تا انتها طول میکشد. من درخواستهایی دارم که بیش از یک سال باز هستند و هنوز ادغام نشدهاند، زیرا پروژه به طور نامنظم نگهداری میشود یا تمرکز پروژه از آن موضوع دور شده است.
چگونه میتوان پروژهای برای مشارکت پیدا کرد
- گیت هاب: یک صفحه جستجو وجود دارد که گیت هاب ریپازیتوریها را براساس علایق و مشارکتهای قبلی شما پیشنهاد میدهد.
- کار: شما به طور فعال از یک ریپازیتوری برای پروژه در محل کار خود استفاده میکنید. شما میتوانید یک مشکل را برطرف کنید یا یک ویژگی جدید اضافه کنید که برای پیشرفت در کار لازم است یا میتوانید به عنوان راهی برای بازگرداندن پروژه کمک کنید.
- ارتباطات: از همکاران یا دوستانتان درباره ریپازیتوریهای مورد علاقتان بپرسید و میتوانید بخشی از آنها باشید.
- بازار سهام: بارزترین روش نیست، اما میتوانید در یک شرکت سرمایه گذاری کنید و بخواهید آن را توسعه دهید.
طبیعتا اگر ایده خوبی دارید، شروع یک پروژه متن باز نیز خود یک گزینه است.
برنامههای Bug Bounty
متأسفانه مشارکت در اکثر پروژههای متن باز داوطلبانه است و در نتیجه پولی در ازای آن به شما پرداخت نمیشود، اما وبسایتهایی وجود دارند که میتوانید موضوعاتی را با پاداشهای پولی در آنها پیدا کنید:
- Issuehunt: من در اینجا مبلغی تا 100 دلار برای مسائل جمعآوری کردم و سایت مرتبا به روز میشود، بنابراین به شما توصیه میکنم حتما آن را بررسی کنید.
- Gitcoin: بیشتر مسائل در اینجا مختص توسعه بلاکچین است و بازپرداخت آن با ارز دیجیتال انجام میشود.
- Bugcrowd
- HackerOne
- Bountysource
ابتدا چه کاری باید انجام داد
بیایید فرض کنیم که شما پروژهای مطابق میل خود پیدا کردهاید، در اینجا چند روش وجود دارد که میتوانید بفهمید آیا شروع کار بر روی آن ریپازیتوری یک ایده هوشمندانه است:
تسلط به زبان برنامه نویسی مورد استفاده
مهم نیست که پروژه چقدر عالی به نظر برسد، اگر تجربه قبلی با زبان برنامه نویسی استفاده شده ندارید، برای این کار به مشکل میخورید.
محبوبیت پروژه را بررسی کنید
من توصیه میکنم به سراغ پروژهای بروید که هنوز خیلی محبوب نیست. زیرا همه مسائل خوب خیلی زود برطرف میشوند. اما احتمال اینکه پروژه بتواند در دورهای حفظ نشده باشد زیاد است. گرفتن ستاره در گیت هاب بین 1000 تا 50000 معمولا شرط خوبی است، اما موارد استثنایی هم وجود دارد.
آخرین تغییرات را در شاخه اصلی بررسی کنید
اگر میبینید که بیش از دو ماه هیچ کامیتی برای مستر اضافه نشده است، به ریپازیتوری کمک نکنید. این میتواند نشانه یک پروژه خالی از سکنه باشد. وقتی در مورد توسعه مداوم پروژه تردید دارید، از برخی از مشارکت کنندگان بپرسید یا موضوع جدیدی را باز کنید.
به تعداد درخواستهای pull باز نگاهی بیندازید
آیا تعداد زیادی درخواست باز وجود دارد؟ اگر یک پروژه بسیار محبوب نیست، این میتواند یک شاخص واضح باشد که ریپازیتوری نمیتواند نگه دارد و اعضای کافی برای انجام بررسیها ندارد. متناوبا ممکن است که مسائل سازمانی وجود داشته باشد که منجر به تصمیم گیری کند میشود یا جهتگیری پروژه اشتباه است.
موارد جالب را به منظور کار بر روی آنها بررسی کنید
ریپازیتوریهای منظم و مرتب معمولا دارای برچسبهای موضوعی مانند "اولین ایده خوب"، "درخواست راهنمایی" یا "مستندات" هستند. اینها میتوانند آغازی بهینه برای شناخت ریپازیتوری باشند. وقتی مسئله مناسبی پیدا کردید، مطمئن شوید که هنوز توسط شخص دیگری برده نشده است. اگر یک مسئله قدیمی است، یک نظر بنویسید تا بفهمید آیا هنوز تقاضای راهحلی برای کار روی آن وجود دارد یا دیگر مورد نظر نیست و با تغییرات دیگر جایگزین نمیشود.
رهنمودهای مربوط به مشارکت را پیدا کنید
با این که شما همیشه میتوانید نحوه راهاندازی و اجرای محلی یک پروژه را خودتان بیابید، معمولا یک پروژه خوب اطلاعاتی را برای مشارکت کنندگان در فایل README.md یا در یک فایل اختصاصی CONTRIBUTING.md دارد.
مقدمات قبل از کار روی یک پروژه
در حال حاضر شما یک پروژه را انتخاب کردهاید که تمام معیارهای خوب شما را برآورده میکند و به طور مداوم نگهداری میشود. سعی کنید برای شروع کار مهارت کافی داشته باشید.
اطمینان حاصل کنید که یک کلید SSH به حساب گیت هاب خود اضافه کردهاید (اختیاری)
در گیت هاب میتوانید ریپازیتوری را با HTTPS یا SSH شبیه سازی کنید. بحثهای مختلفی وجود دارد که کدام یک بهتر است. من SSH را به HTTPS ترجیح میدهم و آن را توصیه میکنم، زیرا لازم نیست هر بار که از عملیاتی مانند push در گیت استفاده میکنید، گذرواژه گیت هاب خود را دوباره وارد کنید.
اگر درباره نحوه تولید کلید SSH و قرار دادن آن در حساب گیت هاب خود مطمئن نیستید، در اینجا راهنمای خوبی ارائه شده است: اتصال به GitHub با SSH.
برای کامیتهای تأیید شده یک کلید GPG اضافه کنید (اختیاری)
اگرچه بدون تأیید کامیت خود میتوانید به ریپازیتوری وارد شوید، اما من به این سه دلیل توصیه میکنم یک کلید GPG تنظیم کنید:
- کامیت شما برچسب سبز "تأیید شده" دریافت میکند که به آن اصالت بیشتری میبخشد.
- شما به سایر افراد درگیر در پروژه نشان میدهید که این کامیت از یک منبع معتبر حاصل میشود.
- دیگران میتوانند مطمئن باشند که هیچ کس در حساب شما جعل نکرده است.
بیشتر کامیتهای موجود در ریپازیتوری ریاکت توسط کلید GPG تأیید میشود.
هنگامی که کلید GPG خود را تولید و در گیتهاب تنظیم کردید، اجرای این دستورات برای امضای خودکار هر کامیت میتواند مفید باشد:
git config --global user.signingkey <publickey>
git config --global commit.gpgsign true
آماده برای کلون کردن
فرض کنیم شما میخواهید در ریاکت مشارکت کنید، پس دستور کپی کردن پروژه در دیسک محلی شما به این شکل خواهد بود:
# ssh
git clone git@github.com:facebook/react.git
# https
git clone https://github.com/facebook/react.git
پس از اینکه پروژه با موفقیت در دیسک محلی شما کلون شد، میتوانید ریپازیتوری موجود در مسیر فایلی را که هنگام کلون کردن در آن قرار داشتید، پیدا کنید.
شاخه مورد استفاده را برای توسعه پیدا کنید
قبل از کار بر روی پروژه و شروع به اصلاح فایلها، بهتر است شاخههای موجود در نسخه گیت هاب را بررسی کنید. اگرچه بیشتر اوقات از شاخه اصلی جدا میشوید، ریپازیتوریهایی وجود دارد که از یک شاخه یا توسعه جداگانه استفاده میکنند. این شاخههای متوسط برای درخواستهای کشش استفاده میشوند و هنگام تصمیمگیری در مورد push کردن نسخه جدید، به طور منظم در مستر ادغام میشوند.
با پروژه آشنا شوید
بسته به اندازه پروژه، تشخیص اینکه کدام فایلها برای ارائه یک رفع اشکال یا ویژگی نیاز به تغییر دارند، کاملا چالش برانگیز است. سعی کنید حداقل قبل از استفاده از جستجو در IDE خود برای تعیین محل تغییر کد، ساختار فایل را اسکن کنید.
دلسرد نشوید
شروع با یک پروژه بزرگ در ابتدا میتواند طاقت فرسا باشد. شما مجبور میشوید از موضوعات صرف نظر کنید تا بعدا راهحل ایدهآل را پیدا کنید.
با این وجود، با پروژههایی روبه رو خواهید شد - به ویژه پروژههای قدیمیتر- که میتوانند از تجربه بد توسعه دهنده رنج ببرند. وقتی میفهمید که برای راهاندازی پروژه یا آزمایشها مدت زمان زیادی طول میکشد، تمرکز بر روی یک ریپازیتوری دیگر ممکن است ایده بهتری باشد.
ادامه مقاله را در بخش دوم مطالعه کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید