من هیچوقت توی یه محیط حرفه‌ای برنامه نویسی نبودم. هیچ وقت روی یک اپلیکیشن بزرگ کار نکردم. حتی دوست برنامه نویس هم ندارم. خودم هستم و خودم. این وسط باید بین هزاران آموزش یوتیوبی و بسته هایی که توی ۳ روز بهتون “برنامه نویسی” یاد میدن راه خودم رو باز میکردم و پیشرفت میکردم. یه مدت این شکلی جلو رفتم ولی از یه جایی آموزش به دردم نمی خورد و دنبال تجربه بودم. اون موقع انتخاب های خیلی محدودی برای کار داشتم. هنوز هم دارم. در واقع کار کردن توی یه شرکت برام غیر ممکن بود چون شرکتی اطرافم نبود و حالا دیگه که نمیخوام واردش بشم. اون موقع اپن سورس (یا بهتر بگم، گیتهاب) رو پیدا کردم که مثل دری به دنیای دنیای بود.

برای اولین بار میتونستم کد یه برنامه خیلی پیشرفته رو بخونم. این قدم خیلی بزرگی برای من بود. همونطور که یه انسان دانا میگه:‌ برنامه نویس خوب کد خوب نمینویسه، یه برنامه خوب میدونه از کجا کپی پیست کنه (یا همچین چیزی.) و چه کدی بهتر از کد یه برنامه پیشرفته تست شده که هزار نفر باهاش ​​کار میکنن؟ شیوه کار من در یکی دو سال اخیر با افتخار کپی پیست بوده و تا الان خیلی خوب جواب داده است. منظورم کپی کردن خود کد به معنای واقعی نیست. بیشتر رویه ها و الگوهایی هست که جاهای مختلف تکرار میشن. وقتی خیلی گیر کنم میگردم دنبال پروژه های اپن سورس خوب و کدش (شیوه انجام کار) رو کپی پیست میکنم. و میدونید که بدونید از کجا کپی کنید چیه؟ اینکه کد خوب بخونید و این به نظر مهم ترین چیزه.

توی دنیای اپن سورس اکثرا دلی میکنن و فقط دنبالم میگیرن. حضور در همچین جمعی علاوه بر اینکه شانس دیدن چیزهای باحال رو افزایش میده به نظر من انرژی زیادی رو بهتون منتقل میکنه. که بدون روزانه پروژه های اپن سورس بیشتر حمایت مالی میشن بازم انرژی بیشتر بهتون میده. راستش من هم یه بار در آستانه «کسب درآمد» از آپن سورس بودم. توی یه پروژه خیلی مشارکت میکردم و صاحبش میخواست به عنوان تشکر به قول خودش یه آبجو برام بخره که حس خیلی خوب داشت، احساس میکردم یه ماموریت غیر ممکن رو به پایان رسوندم:) ولی هنوز کسب درآمد از اپن سورسقدری سخت هست که کسی به نیت پول سمتش نره.

برای مشارکت توی اپن سورس اول از همه باید به کسانی که توش کار می کنند احترام بگذارند. اگر کتابخونه که ازش استفاده میکنید یه باگ عجیب داره هیچ وقت نرید یه شماره باز کنید و با لحن تند ازش انتقاد کنید. به احتمال زیاد توی وقت های خالی زندگیش این کار رو انجام میده و شما هم باید از اون کتابخونه استفاده کنید و در ضمن پولی هم بهش نمیدین پس دلیلی برای جرم وجود نداره.

به وقت هایی که توش کار کنند هم بدید. همونطور که گفتم احتمالا توی وقت های خالی زندگیش داره این کار رو میکنه و باعث میشه هدر وقتش بشید.

۱. قبل از اینکه یک مسئله را باز کنید دنبال کنید دنبال شماره های مشابه و اگر چیزی مشابه نبود با اطلاعات دقیق و کامل باگی که پیدا کردید رو گزارش بدید.

۲. اگر بحث باز بود سوال هاتون رو اونجا بپرسید به جای اینکه یه مسئله باز کنید.

۳. اگر فایل CONTRIBUTING.md توی ریپوزیتوری وجود داشت یا به هر شکلی یک بخش “راهنما مشارکت” داشتید سعی کنید مو به مو اون رو اجرا کنید.

۴. سعی کنید تا جای کم توی Pull request ها پیام بدید چون با هر پیغامی اضافه می کنید یک ایمیل به همه کسانی که توی اون بحث شرکت کردن میاد که خیلی جالب نیست. به جاش از ریکاشن هایی که توی گیتهاب استفاده کنید. اگر یه نفر شما رو راهنمایی میکنه لازم نیست حتما توی یه پیغام جدا ازش تشکر کنید، مخصوصا اگر آدم های زیادی توی اون بحث شرکت کرده باشن. می توانید با یه قلب ساده قال قضیه رو بکنید.

۵. قبل از اینکه یک چیز بزرگ به یک پروژه اضافه کنید یک مسئله را باز کنید و از صاحبش بپرسید که همچین چیزی می خواهد یا نه. اینطوری توی وقت خودتون هم صرفه جوجویی میشه.

۶. اگر یه pull request باز میکنید، هرچقدر هم ساده باشه توضیح بدید که چیکار میکنه و چرا باید بشه.

تا وقتی موارد بالا رو رعایت کنید هیچ مشکلی براتون پیش نمیاد. اپن سورس بر تفاوت احترام متقابل اداره میشه. اگر به وقت بقیه بدید بقیه هم به وقت شما میدن و با شما با رعایت بیشتر برخورد میکنید.

شاید الان یکم ترسیده باشید که اپن‌ سورس خیلی جای خشکیه ولی اصلا اینطور نیست. معمولا با آدم های خیلی باحالی سر و کار پیدا میکنید. این ترس مانع خیلی ها برای مشارکت در پروژه های اپن سورسه. اگر متوجه مشکل توی پروژه شدید یه pull request (PR) بشید و هر چقدر هم که کوچیک باشه اون رو حل کنید. کسی قرار نیست سرتون داد بزنه و مسخرتون کنه. نهایتا اگر صاحب پروژه اون رو دوست نداشت PR رو میبنده. به همین راحتی.

گاهی اوقات هم روابط عمومی که شاید خنده دار به نظر برسن merge (به پروژه اضافه) میشن. مثلاً این PR تویی زبان Rust باعث میشه وقتی از ایموجی خرچنگ (نماد Rust) به عنوان اسملر استفاده کنید کامپای یه ارور خنده دار بده که ادغام بشه! توی یه زبان برنامه نویسی فوق پیشرفته! تا این حد با آدمای باحال سر و کار دارید.

مشارکت توی داکیومنت ها به نظر من بهترین راه برای شروع. یک پروژه پیدا کنید که خوب نباشد (احتمالا اتفاق بیفتد با همچین پروژه هایی برخورد کنید) و سعی کنید آن رو بهتر انجام دهید. غلط های املاییش رو تفکیک کن یا یه چیزی بهش اضافه کن. زبانتون خوب نیست؟ می توانید طراحی سایتشون رو یکم تغییر بدید. مثلا اگر یه دکمه به اندازه کافی توی دید نبود رنگش رو عوض کنید. اینطوری ترستون کاملا میریزه.

همچنین نمی توانید با چیزهایی که ازش لذت ببرید و خیلی «فنی» شروع کنید. مثلا من از تنظیم و شخصی سازی کردن ادیتور نئوویم لذت میبرم در نتیجه خیلی توی NvChad که یه جور نئوویم از پیش تنظیم شده هست مشارکت داشتم.

شاید این پست هم قدیمی هم براتون جالب باشه:

https://virgool.io/@ahhshm/%D8%B1%D9%88%DB%8C-%D8%AA%D8%A7%D8%B1%DB%8C%DA%A9-%D8%A7% D9%BE%D9%86-%D8%B3%D9%88%D8%B1%D8%B3-qg49hovvdude
https://virgool.io/gitscm/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7-%D9%82%D8%AF%D9%85-%D8 %A8%D9%87-%D9%82%D8%AF%D9%85-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%A7%D9%88%D9%84% DB%8C%D9%86-%D9%BE%D9%88%D9%84-%D8%B1%DB%8C%DA%A9%D9%88%D8%A6%D8%B3%D8%AA- la2kg38y71hj
اگر دوست داشتی امتیاز دادن یادت نره!