برای یافتن چیزی، هر چیزی، یک حقیقت عالی یا یک جفت عینک گمشده، ابتدا باید اعتقاد داشته باشید که در پیدا کردن آن مزیتی وجود دارد.
راهنمای انجام اولین مشارکت در متن باز
پروژه های متن باز یک راه عالی برای توسعه مهارت ها، با فعال بودن و همکاری با برنامه نویسان دیگه است. در این نوشته سعی میکنیم راه شروع مشارکت در پروژه های اوپن سورس را بررسی میکنیم.
همچنین در این بین به طور خلاصه GitHub رو معرفی و به برخی از قابلیت هاش می پردازیم. اما نیاز داریم که شما کنجکاو باشید. کمی برنامهنویسی بلد باشید و با Git آشنایی داشته باشید و بتونید با انگلیسی مبتدی (و حتی کمک مترجم گوگل😄) کارتان را راه بندازید.
مقدمه ای بر Open Source
هنگامی که یک پروژه منبع باز (یا متن باز) است، به این معنی میباشد که هرکسی هرگونه که دوست دارد میتواند آن را استفاده، مطالعه، ویرایش و توزیع کند. این مجوزها از طریق یک لایسنس منبع باز اجرا می شوند.
بسیاری از توسعهدهندگان علاقهمند به پروژههای منبع باز هستند، و دلیل خوبی برای این علاقه دارند: آنها هر روز برای افزایش سرعت کار خود از آنها استفاده میکنند. مثالهای موفقی از نرمافزار های منبع باز وجود دارد، مانند سیستم عامل لینوکس، وب سرور آپاچی یا کتابخانه جاوااسکریپتی ریاکت. تصور دنیایی بدون منبع باز دشوار است. منبع باز در همه جا وجود دارد. در واقع منبع باز همان چیزی است که به اینترنت قدرت میبخشد.
کد های متن باز معمولا کیفیت بیشتری دارند. یک نرمافزاری که توسط چند نفر ساخته شده کیفیت پایینتری نسبت به آن که هزاران نفر از سراسر دنیا با مهارت های مختلف ساختهاند دارد. و باگ ها و خطا ها و نقص های امنیتی سریعا تشخیص داده میشوند.
سازمان هایی در حمایت از اپن سورس
سیستمعامل گنو در سال 1984 با هدف ایجاد یک سیستمعامل کامل و آزاد بهوسیله ریچارد استالمن پایهگذاری شد. یک سال بعد او بیانیه گنو را نوشت و درخواست حمایت در توسعه سیستمعامل گنو را کرد. او همچنین بنیاد نرمافزار آزاد (FSF) را تاسیس کرد، یک سازمان غیرانتفاعی که هدف آن ترویج آزادی در استفاده از رایانه بود.
در همان دهه استالمن لایسنس GNU General Public License (GPL) را ساخت و تمام سیستمعامل گنو تحت این لایسنس منتشر شد. امروزه، GPL امکان اشتراک گذاری و تغییر تمامی نسخه های برنامه را فراهم می کند و تضمین می کند که برای همه کاربران در دسترس باقی می مانند.
دیگر سازمان های منبع باز مهم عبارتند از Open Source Initiative (OSI) که در سال 1998 تأسیس شد، اصطلاح منبع باز را در مخالفت با جنبش نرمافزار آزاد ابداع کرد. در حالی که "نرمافزار رایگان" همان "نرمافزار منبعباز" است، OSI ترجیح داد یک مورد عملی و تجاری پسند برای نرمافزار منبعباز ایجاد کند. در نهایت، OSI شروع به تمرکز بر مجوزها کرد و "لایسنسهای تایید شده توسط OSI" را منتشر کرد.
روش های مختلف مشارکت در اپن سورس
مشارکت اشکال مختلفی دارد، از چیزهایی که مستقیماً بر کد تأثیر میگذارند (مانند نوشتن و بررسی patchها) تا مواردی مانند طراحی، آزمایش و گزارشهای باگ که به خوبی نوشته شده باشند.
- مشارکت در کد: نوشتن، اصلاح یا بهینهسازی کد. این می تواند از رفع اشکالات و افزودن ویژگی ها تا ریفکتور کد برای عملکرد بهتر باشد.
- مستندات: نوشتن یا بهبود داکیومنت مانند راهنمای کاربر، فایلهای README، اسناد API و آموزشها. مستندات واضح و جامع برای کاربران و توسعه دهندگان برای درک و استفاده مؤثر از نرمافزار بسیار مهم است.
- تست و گزارش: تست نرمافزار، شناسایی باگ ها و گزارش آنها. تضمین کیفیت به حفظ قابلیت اطمینان و ثبات نرمافزار کمک می کند.
- ترجمه: ترجمه رابطهای نرمافزار، داکیومنتها و سایر مطالب به زبانهای مختلف. برای دسترسی پذیری بیشتر کاربران از سراسر جهان.
- پشتیبانی انجمن: کمک به سایر کاربران و توسعه دهندگان با پاسخ دادن به سؤالات، ارائه پشتیبانی در انجمن ها یا کانال های چت، و مشارکت در بحث های انجمن.
- طراحی و تجربه کاربری (UX): بهبود طراحی بصری، رابط کاربری (UI) و تجربه کاربری کلی نرمافزار. این شامل ایجاد مدلها، طراحی آیکونها و پیشنهاد بهبودهای UX است.
- مدیریت پروژه: کمک به وظایف مدیریت پروژه مانند الویت بندی مسائل، سازماندهی وظایف، هماهنگی انتشار و کمک به حفظ نقشه راه پروژه.
ویژگیهای GitHub و نحوه استفاده جامعه متن باز از آنها
گیتهاب یک پلتفرم بسیار محبوب برای همکاری و مشارکت در پروژههای منبع باز است. در اینجا به طور ساده و مختصر به چند ویژگی مهم GitHub و نحوه استفاده جامعه منبع باز از آنها میپردازیم:
اکشنها (Actions)
GitHub Actions ابزاری برای خودکارسازی فرآیندهای مختلف مانند ساخت، تست و استقرار کد است. جامعه منبع باز از Actions برای اجرای خودکار تستها و بررسی کیفیت کدها استفاده میکند. این کار به بهبود کیفیت پروژهها و سرعت بخشیدن به فرآیند توسعه کمک میکند.
ارائه درخواست (Pull Requests)
Pull Requests به توسعهدهندگان اجازه میدهد تغییرات خود را برای بررسی و ادغام به مخزن اصلی ارسال کنند. در جامعه منبع باز، افراد ابتدا یک نسخه کپی (fork) از پروژه ایجاد میکنند، تغییرات خود را اعمال میکنند و سپس یک Pull Request ایجاد میکنند. مدیران پروژه این تغییرات را بررسی میکنند و در صورت تایید، آنها را به کد اصلی اضافه میکنند.
فورک (Fork)
Fork به شما اجازه میدهد یک نسخه کپی از یک مخزن اصلی را در حساب خود ایجاد کنید. جامعه منبع باز از Fork برای اعمال تغییرات و پیشنهاد بهبودها استفاده میکند. این ویژگی به توسعهدهندگان امکان میدهد بدون ایجاد اختلال در مخزن اصلی، تغییرات خود را آزمایش و اعمال کنند.
مسائل (Issues)
Issues جایی است که کاربران میتوانند مشکلات و باگها را گزارش کرده و ویژگیهای جدید را درخواست کنند. جامعه منبع باز از Issues برای مدیریت و پیگیری مشکلات و بهبودهای پروژه استفاده میکند. هر کسی میتواند یک Issue ایجاد کند و تیم توسعه میتواند آنها را بررسی و حل نماید.
بحثها (Discussions)
Discussions فضایی برای گفتگو و تبادل نظر در مورد موضوعات مختلف مربوط به پروژه است. جامعه منبع باز از Discussions برای بحث در مورد ایدهها، پیشنهادات و سوالات استفاده میکند. این بخش به کاربران امکان میدهد تا با دیگران در مورد پروژهها گفتگو کنند و نظرات خود را به اشتراک بگذارند.
ویکی (Wiki)
Wiki یک بخش مستندات داخلی در GitHub است که به کاربران اجازه میدهد اطلاعات و راهنماهای مربوط به پروژه را به صورت سازمانیافته نگهداری و به اشتراک بگذارند. جامعه منبع باز از Wiki برای ایجاد مستندات جامع و راهنماهای کاربردی استفاده میکند تا کاربران جدید بتوانند به راحتی با پروژه آشنا شوند.
پروژهها (Projects)
Projects ابزاری برای مدیریت و سازماندهی کارها و وظایف پروژه است. جامعه منبع باز از Projects برای ایجاد تابلوهای کانبان و ردیابی پیشرفت پروژه استفاده میکند. این ابزار به تیمها کمک میکند تا وظایف مختلف را سازماندهی کرده و برنامهریزی بهتری داشته باشند.
نحوه استفاده جامعه منبع باز از این ویژگیها
- GitHub Actions: اجرای خودکار کارها، تستها و بررسی کیفیت کدها برای اطمینان از سلامت پروژه و صرفه جویی در زمان.
- Pull Requests: ارائه تغییرات و بهبودها برای بررسی و ادغام در مخزن اصلی.
- Fork: ایجاد نسخه کپی برای اعمال تغییرات بدون ایجاد اختلال در مخزن اصلی.
- Issues: گزارش و پیگیری مشکلات، باگها و درخواست ویژگی.
- Discussions: تبادل نظر و بحث در مورد موضوعات مختلف پروژه.
- Wiki: ایجاد و نگهداری مستندات و راهنماهای پروژه.
- Projects: مدیریت و سازماندهی وظایف و پیگیری پیشرفت پروژه.
استفاده از این ویژگیهای GitHub به کاربران و تیمها کمک میکند تا به صورت موثرتر و سازمانیافتهتر همکاری کنند و پروژهها را بهبود دهند. این ویژگیها باعث میشود مدیریت و پیگیری کارها آسانتر شده و فرآیندهای توسعه بهبود یابند.
اولین مشارکت در پروژه های متن باز
مشارکت در پروژههای متن باز میتواند برای تازهکاران ترسناک به نظر برسد، اما ابزارها و منابع زیادی وجود دارد که این فرآیند را آسانتر میکند. یکی از بهترین مکانها برای شروع، پروژه First Contributions است.
First Contributions یک پروژه متن باز است که به کاربران جدید کمک میکند تا اولین مشارکت خود را در GitHub انجام دهند. هدف این پروژه این است که شما را با فرآیند ایجاد یک Pull Request آشنا کند و به شما اعتماد به نفس لازم برای مشارکت در پروژههای دیگر را بدهد.
از آنجایی که داکیومنت این پروژه به زبان فارسی نیز در دسترس است، نیازی به توضیحات بیشتر در اینجا نمیباشد.
لیست سایت هایی که برای شروع، پروژه های واقعی در اختیار شما قرار می دهند
up-for-grabs.net سایتی است که پروژه هایی را که به طور فعال به کمک نیاز دارند جمعآوری می کند (جمع می کند و کاوش را آسان می کند). آنها به این پروژهها برچسبهایی مانند «up-for-grabs»، «jump-in» یا «help wanted» میزنند.
GoodFirstIssues.com سایتی است که آخرین مشکلات را با برچسب "Good First Issue" جمعآوری می کند، که یک ویژگی GitHub برای یافتن مشکلات آسان برای حل کردن است (ببینید چگونه ساخته شده). goodfirstissues.com به مشارکتکنندگانی که برای اولین بار کمک میکنند این امکان را میدهد تا مسائلی را که میخواهند حل کنند، بیابند و انتخاب کنند.
GoodFirstIssue.dev موارد آسان از پروژه های منبع باز محبوب را انتخاب می کند و به شما کمک می کند اولین مشارکت خود را در منبع باز داشته باشید.
CodeTriage به شما کمک می کند در پروژه های منبع باز مورد علاقه خود مشترک شوید و هر روز یک issue باز و جدید از آنها در ایمیل خود دریافت کنید.
مشارکت در وردپرس
وردپرس یک سیستم مدیریت محتوای متن باز است که به کاربران امکان میدهد به راحتی وبسایت ایجاد و مدیریت کنند. یکی از نقاط قوت وردپرس، جامعه بزرگ و فعال آن است که به طور مداوم در حال بهبود و توسعه این پلتفرم هستند.
مشارکت در وردپرس به دلیل بزرگی آن شاید بسیار ساده نباشد. اما هر کسی میتواند به راحتی یک مشکل یا باگ را گزارش دهد، یک ویژگی جدید پیشنهاد کند یا در نوشتن و ترجمه مستندات کمک کند. برای این کار میتوانید به راهنمای مشارکت کنندگان در وردپرس مراجعه کنید.
تجربه گزارش یک باگ
اگر تا به حال سعی کرده باشید کد HTML در ویرایشگر بلوکی یا حتی ویرایشگر کلاسیک وردپرس بنویسید، احتمالاً با مشکل نمایش راستچین HTML مواجه شدهاید.
این باگ مدتها وجود داشت و با نوشتن یک گزارش ساده، مشارکتکننده ای به این مسئله پرداخت و آن را برطرف کرد. این نشان میدهد که چگونه یک گزارش باگ ساده میتواند به بهبود تجربه کاربری همه کمک کند. تجربه شما نیز میتواند به همان اندازه مفید باشد. پس از مواجهه با هر گونه مشکل، به راحتی میتوانید آن را گزارش دهید و شاید شما هم شاهد برطرف شدن آن توسط یکی از مشارکتکنندگان باشید.
نکاتی برای نوشتن گزارش باگ مؤثر
مشارکتکنندگان در پروژههای منبع باز به صورت داوطلبانه و رایگان کار میکنند، بنابراین همیشه به یاد داشته باشید که قدردان زحمات داوطلبانه مشارکتکنندگان باشید. و طلبکارانه گزارشی ننویسید، چرا که آنها چیزی به شما بدهکار نیستند. در اینجا چند نکته مهم برای نوشتن یک گزارش باگ مؤثر آورده شده است:
- جستجو قبل از نوشتن: قبل از ایجاد یک گزارش، مطمئن شوید که مشکل شما قبلاً گزارش نشده باشد. این کار باعث میشود تا از تکراری بودن گزارشها جلوگیری شود.
- توضیح دقیق: شرح کامل و دقیق از مشکلی که با آن مواجه شدهاید را ارائه دهید. جزئیات بیشتر به توسعهدهندگان کمک میکند تا مشکل را بهتر درک کنند.
- مراحل بازتولید: مراحل دقیق برای بازتولید باگ را توضیح دهید تا دیگران بتوانند به راحتی مشکل را مشاهده و بررسی کنند.
- محیط کاری: اطلاعاتی در مورد محیط کاری خود مانند نسخه برنامه، مرورگر و سیستم عامل را ارائه دهید. این اطلاعات میتواند به پیدا کردن علت مشکل کمک کند.
- اسکرینشاتها و ویدیوها: در صورت امکان، از مسئله اسکرینشات یا ویدیو تهیه کنید تا بهتر بتوانید آن را توضیح دهید.
با رعایت این نکات، گزارش باگ شما موثرتر خواهد بود و احتمال برطرف شدن آن افزایش مییابد.
اگر به هر نوعی این مطلب مفید بود یا موردی وجود داشت، حتما برایم توی نظرات بنویسید. ❤️
برای زمانی که گذاشتید سپاس گذارم 🌹
مطلبی دیگر از این انتشارات
تفاوت بین Processو Threadچیست؟
مطلبی دیگر از این انتشارات
چی شد که این شد!
مطلبی دیگر از این انتشارات
ساخت Snapp food Clone 🍔 _ بخش اول