چگونه به پروژههای متنباز کمک کنیم؟
آیا تابهحال به کلمهٔ متنباز یا Open Source برخورد کردهاید؟ اصطلاح Open Source به شکل ساده، به برنامههایی گفته میشود که کد آنها به صورت عمومی در اینترنت قرار دارد و افراد مختلف از همهٔ نقاط دنیا میتوانند به توسعه و بهبود آن کمک کنند. حتی اگر بهطور مستقیم با ابزارهای متنباز در پروژههای خود کار نکرده باشید، قطعاً بهطور غیرمستقیم در زندگی شما نقش داشتهاند. بهعنوان مثال بخش عمدهٔ مرورگرهای امروزی بر پایهٔ Chromium هستند که توسط گوگل به عنوان یک پروژه متنباز ایجاد شده و افراد زیادی از سراسر دنیا به مقدار کم یا زیاد در توسعهٔ آن نقش داشتهاند.
چرا متنباز؟
شاید برایتان سوال باشد که اصلاً چرا یک گروه باید پروژهٔ خود را به صورت متنباز ایجاد کند، درحالیکه اگر کد آن را تنها برای خود نگه دارد، احتمالاً به دلیل انحصار میتواند سود بیشتری ببرد؟ دلیل این موضوع این است که هرچند پروژههای متنبستهClosed Source به دلیل انحصار میتوانند در زمینهای، سودآوری بیشتری داشته باشند، اما پروژههای متنباز نیز میتوانند مزایای چشمگیری برای سازندگان آن به ارمغان آورند. یکی از مهمترین مسائل، این است که افراد زیادی کد شما را میبینند و میتوانند مشکلات امنیتی و دیگر مشکلات آن را برطرف کنند. این موضوع میتواند باعث ایجاد جامعهایCommunity از علاقهمندان به آن محصول شوند که ممکن است در آینده، بدنهٔ اصلی توسعهدهندگان آن محصول را تشکیل دهند و حتی به شرکت تولیدکنندهٔ آن بپیوندند. عموماً به دلیل همین شفافیت، اعتماد به پروژههای متنباز بسیار بیشتر است. به علاوه، توسعهدهندگان کوچک و همچنین برنامهنویسان میتوانند از طریق به اشتراک گذاشتن پروژههای خود به صورت متنباز، بدون نیاز به تشکیل یک شرکت بزرگ، از مزایای کمکهای دیگران بهرهمند شوند.
از سوی دیگر، سوالی که مطرح میشود این است که کمک به پروژههای متنباز چه سودی برای افراد دارد، یا به بیان بهتر، من چرا باید به این پروژهها کمک کنم؟ برای این سوال جوابهای متعددی وجود دارد. اولین مورد این است که با کمک به برنامههای متنباز، عملاً میتوانید به بهبود برنامههایی که خودتان از آنها استفاده میکنید کمک کنید. علاوهبر این، مهارتهای شما در زمینههای فنی نیز تقویت میشود و میتوانید دانش خود را گسترش دهید. همچنین، در خلال این کار و در حین بحث با دیگر افرادی که به پروژههای یکسانی کمک میکنند، میتوانید با افرادی با علائق مشترک آشنا شده و در پروژههای دیگر هم با آنها همکاری داشته باشید. در کنار اینها کمک به پروژههای متنباز و ساخت این نوع پروژهها میتواند بهمرورزمان باعث شناختهتر شدن شما در این جوامع و عملاً ساخت یک رزومهٔ عملی از مهارتهای شما بشود که میتواند در فرایند استخدام در شرکتهای بزرگ، بهشدت کمککننده باشد؛ علیالخصوص که بسیاری از شرکتهای مشهور نیز پروژههای بزرگی را به صورت متنباز مدیریت میکنند.
چگونه کمک کنیم؟
حال این سوال مطرح میشود که به چه شکلهایی میتوان به پروژههای متنباز کمک کرد؟ با توجه به اینکه شمایی که این متن را میخوانید، احتمالاً در حوزهٔ علوم یا مهندسی کامپیوتر تحصیل یا فعالیت میکنید، اولین موردی که به ذهن میرسد این است که مشکلات کدهایی که وجود دارند و گزارش شدهاند را برطرف کنید یا اقدام به پیادهسازی قابلیتهای درخواستی برای یک پروژهٔ متنباز بکنید. این کمک بهصورت برنامهنویسی، میتواند در حد برطرف کردن باگهای جزئی که خودتان یا دیگران کشف کردهاید تا کارهای بزرگی نظیر بازنویسی بخشهای مهمی از پروژه، باشد. بااینحال تنها راه کمک به پروژههای متنباز، کدنویسی نیست و راههای متعدد دیگری برای این مسئله وجود دارد.
یکی از راههای دیگر برای کمک به پروژههای متنباز، بررسی مستندات، تکمیل، اصلاح و ویراستاری آنها است. سازندگان اصلی پروژه، عموماً وقت بیشتری را روی خود کد میگذراند اما بخشهای جانبی، نظیر مستندات در بسیاری از مواقع نادیده گرفته میشود؛ درحالیکه مستندات بخش بسیار مهمی هستند که در طول زمان حتی اهمیتی بیشتر از خود کد پیدا میکنند.
ازطرفدیگر، میتوان به بررسی خود برنامهها و رفع ایرادات جزئی در برنامه، نظیر غلطهای نگارشی و املایی و یا به مشکلاتی که در ترجمه از زبانهای مختلف ایجاد میشود، پرداخت. علاوهبر آن، میتوان به افرادی که در بخش Issues پروژهها سوال پرسیدهاند کمک کرد. حتی در ابعاد گستردهتر گاهی شاهد برگزاری رویدادهایی توسط طرفداران جامعهٔ متنباز در جهت گسترش این فرهنگ و کمک به آن بودهایم.
علاوهبر اینها، نیاز نیست که حتماً به پروژههایی که از پیش وجود دارند کمک کنید. میتوانید خودتان پروژههای مفید یا جدیدی را شروع کنید و یا پروژههای قبلی خود را به صورت متنباز قرار دهید. حتی نیازی نیست که پروژهٔ شما لزوماً یک پروژهٔ نرمافزاری یا فنی باشد. بسیاری از پروژههای متنباز، راهنماها و یا لیستهای تجمیعیِ مفید از مطالب مختلف هستند که میتواند در یک موضوع خاص کمککننده باشد و همهٔ اینها میتوانند در دستهٔ کمک به جامعهٔ متنباز در نظر گرفته شوند.
چطور باید شروع کنم؟
-
برای شروع کمک به پروژههای متنباز، بهترین کار استفاده از سایت معروف گیتهاب (Github) است. سایت گیتهاب، معروفترین سایت برای پروژههای متنباز است و براساس سیستم مدیریتپروژهٔ گیتGit کار میکند؛ که خود پروژهای متنباز است. یادگرفتن گیت به شکل مقدماتی برای کمک به جامعهٔ متنباز ضروری است ولی خوشبختانه منابع زیادی برای یادگرفتن آن وجود دارد و یادگرفتن مفاهیم آن به شکل ابتدایی بسیار ساده است.
-
بعد از ساخت یک حساب کاربری در سایت گیتهاب، میتوانید هم پروژههای خود را به صورت عمومی قرار دهید و هم به پروژههای دیگران کمک کنید. مشکلات و درخواستهایی که برای پروژههای مختلف وجود دارند، عموماً تحتعنوان Issue در گیتهاب قرار میگیرند. برای پیدا کردن Issueهای مناسب برای شروع، میتوان از قابلیتهای جستوجوی گیتهاب به خوبی بهره برد. گیتهاب هم امکان جستوجو براساس زبانهای برنامهنویسیِ مورد استفاده در پروژه را برای کاربران مهیا میکند، هم اینکه میتوان با برچسبهایی که روی Issueها قرار میگیرد، Issueهای مناسب را پیدا کرد. معمولاً Issueهایی که برای شروع مناسب هستند، برچسب "good first issue" را دارند. همینطور برچسبهایی نظیر Documentation برای Issueهایی که نیاز به کد زدن ندارند، استفاده میشوند. علاوهبر این، یک راه خوب برای پیدا کردن Issueهای مناسب، اضافه کردن contribute/ به انتهای آدرسURL پروژههای مختلف در گیتهاب است. با این کار صفحهای شامل لیستی از Issueهایی که برای شروع مناسب هستند، نمایش داده میشود.
-
در نهایت لازم است برای انتخاب پروژهها به چندین مورد دقت کنید. اولین مورد بررسی فایلهای LICENSE ،README و CONTRIBUTING و در صورت وجود CODE_OF_CONDUCT در پروژه است تا متوجه بشوید که پروژه از چه لایسنسیLicense استفاده میکند و چه قوانینی برای کمک به آن وجود دارد. علاوهبر آن با نگاهی به Issueها میتوان فهمید که آیا صاحبان پروژه با سرعت خوبی پاسخگو هستند یا پروژه، یک پروژهٔ فراموششده است. همچنین میتوان به فضای گفتوگوی بین افراد مختلف در پروژه دقت کرد تا متوجه شوید که آیا جامعهٔ آن پروژه، فضایی دوستانه دارد یا نه.
در این مقاله سعی کردیم بهطور خلاصه، پروژههای متنباز را معرفی کرده و به مزایای کمک به این پروژهها و روشهایی برای کمک به آنها بپردازیم. در نهایت مهمترین نکتهای که باید به آن توجه کنید، این است که نترسید. برای کمک کردن به پروژههای مختلف لازم نیست بر تمامی بخشهای آن تسلط داشته باشید. در پروژههای بزرگ، افراد انگشتشماری هستند که بر بخشهای زیادی از پروژه تسلط دارند. جذابیت و زیبایی دنیای متنباز تا حد زیادی در این است که کاربران میتوانند به صورت جزئی به پیشرفت یک پروژه کمک کنند؛ این کمکها قطره قطره جمع میشوند و در نهایت منجر به پیشرفتهای بزرگ در پروژه میشوند.
لینکهای مفید
توضیحاتی در مورد چگونگی کمک به جامعهٔ متنباز:
https://opensource.guide/how-to-contribute/
https://www.freecodecamp.org/news/how-to-contribute-to-open-source-projects-beginners-guide/
توضیحی در مورد انواع لایسنس:
https://choosealicense.com/
سایتهایی برای شروعکردن کمک به جامعهٔ متنباز برای افراد تازهکار:
https://firstcontributions.github.io/
https://www.firsttimersonly.com/
https://www.codetriage.com/
گیتهاب، بهترین مکان برای کمک به جامعهٔ متنباز:
https://github.com/
لیستی از ریپازیتوریRepositoryها و منابع خوب برای شروع کار:
https://github.com/MunGell/awesome-for-beginners#net
لیستی از ریپازیتوریهای خوب برای کمک به جامعهٔ متنباز بدون نیاز به برنامهنویسی:
https://github.com/szabgab/awesome-for-non-programmers
سایتی برای آشنایی با گیت:
https://learngitbranching.js.org/