فا نیکسی

راهنمای مشارکت

بوم‌سازگان Nix توسط داوطلبان متعدد و تعدادی توسعه‌دهنده حقوق‌بگیر توسعه می‌یابد و یکی از بزرگ‌ترین توزیع‌های نرم‌افزاری متن‌باز در جهان را نگهداری می‌کند. حفظ عملکرد، به‌روز نگه داشتن و بهبود مستمر آن بدون حمایت شما ممکن نبود.

این راهنما نشان می‌دهد که چگونه می‌توانید به Nix، Nixpkgs یا NixOS مشارکت کنید. فرض بر این است که شما از قبل تا حدی با مفاهیم پایه‌ای و چرخه‌های کاری که در مجموعه آموزش‌های مبتدی توضیح داده شده‌اند، آشنایی دارید. مهم‌ترین جنبه‌ها عبارتند از: زبان Nix، مکانیزم‌های مختلف Nixpkgs برای ساختن درایویشن‌ها جهت ساخت نرم‌افزار، سیستم ماژول و آزمایش‌های یکپارچه‌سازی NixOS.

مهم

اگر نمی‌توانید وقت خود را اختصاص دهید، کمک مالی به بنیاد NixOS در Open Collective را در نظر بگیرید.

در حال حاضر تمرکز بر تأمین مالی رویدادهای حضوری برای اشتراک‌گذاری دانش و رشد جامعهٔ توسعه‌دهندگان مسلط به Nix است. با داشتن بودجه کافی، امکان پرداخت هزینه برای نگهداری مستمر و توسعه زیرساخت‌ها و کدهای حیاتی فراهم خواهد شد؛ این کار دشواری است که نمی‌توانیم انتظار داشته باشیم داوطلبان تا ابد آن را انجام دهند.

شروع به کار

پس از مطالعه مستندات مرجع و کدهای مرتبط با موضوع مورد علاقه‌تان، با پرسیدن سوالات آگاهانه شروع کنید.

برای ارتباط با سایر کاربران و توسعه‌دهندگان، به پلتفرم‌های ارتباطی جامعهٔ ما بپیوندید. اگر به موضوع خاصی علاقه دارید، تیم‌های جامعهٔ ما را بررسی کرده و مشارکت در آن‌ها را مدنظر قرار دهید.

تمام کدهای منبع و مستندات در GitHub قرار دارند و برای پیشنهاد تغییرات به یک حساب کاربری گیت‌هاب نیاز دارید. بحث‌های فنی در بخش نظرات مسائل (Issues) و درخواست‌های پول (Pull Requests) انجام می‌شوند.

راهنمایی

اگر در کار با Nix تازه کار هستید، ابتدا مشارکت در مستندات را در نظر بگیرید.

این همان جایی است که بیشترین نیاز را به کمک داریم و شروع کار در آن آسان‌تر است.

مستندات و راهنماهای مشارکت اغلب ناقص یا قدیمی هستند، هرچند که ترجیح می‌دادیم این‌گونه نباشد. ما در حال کار روی آن هستیم. شما می‌توانید با حل کردن فوری مشکلات مربوط به چرخه کاری مشارکت به محض برخورد با آن‌ها، به بهبود وضعیت برای همه کمک کنید. این کار ممکن است سرعت شما را در رسیدگی به مسئله اصلی‌تان کاهش دهد. اما در آینده ساخت مشارکت معنادار را برای هر کسی بسیار آسان‌تر خواهد کرد. و در درازمدت به کد و مستندات بهتری منجر خواهد شد.

گزارش یک اشکال (Bug)

نکته

برای پرسیدن سؤالات عمومی درباره کد یا نحوه انجام کارها، لطفاً از پلتفرم‌های ارتباطی جامعهٔ ما استفاده کنید.

برای بیان مشکلات فنی و پیشنهاد راه‌حل‌ها، مسائل گیت‌هاب را باز کنید و پس از حل شدن یا بی‌اعتبار شدن مشکل، آن‌ها را ببندید.

ما فقط می‌توانیم اشکالاتی را که از آن‌ها مطلع هستیم رفع کنیم، بنابراین لطفاً هر اشکالی که با آن مواجه می‌شوید را گزارش کنید.

مطمئن شوید که از قبل مسئله‌ی بازی برای مشکل شما وجود نداشته باشد. لطفاً از الگوی مسائل (issue template) پیروی کرده و تمام اطلاعات درخواستی را پر کنید.

به‌ویژه مراقب باشید که یک نمونه‌ی حداقل و قابل درک آسان برای بازتولید مشکلی که با آن روبرو هستید ارائه دهید. همچنین باید نشان دهید که در تلاش برای حل مشکل توسط خودتان، به چه مواردی دست یافته‌اید. این کار باعث می‌شود که حل‌شدن نهایی مسئله بسیار محتمل‌تر شود و به دلایل متعددی اهمیت دارد:

  • یک نمونه‌ی قابل بازتولید، مختصر و عاری از ابهام است.

    این امر در دسته‌بندی مسائل، درک مشکل، ریشه‌یابی و توسعه‌ی یک راه‌حل کمک می‌کند. تحقیقات مقدماتی شما نیز به نوبه‌ی خود به نگه‌دارندگان در تحلیل بهتر کمک می‌کند.

  • این امکان را به هر کسی می‌دهد که تشخیص دهد آیا مسئله هنوز هم موضوعیت دارد یا خیر.

    مسائل ممکن است مدت طولانی بدون رسیدگی باقی بمانند. تصمیم‌گیری درباره‌ی نحوه‌ی برخورد با آن‌ها، حتی پس از گذشت ماه‌ها یا سال‌ها، مستلزم بررسی این است که آیا مشکل اساسی همچنان پا برجاست یا حل شده است. این کار باید به راحتی قابل انجام باشد: در این صورت هر کسی می‌تواند در دسته‌بندی کمک کند و به نگه‌دارندگان اطلاع دهد تا مسائل را ببندند یا اولویت‌بندی مجدد کنند.

  • این نمونه را می‌توان برای یک تست رگرسیون هنگام حل مشکل استفاده کرد.

راهنمایی

ایده‌آل این است که شما یک راه‌حل را نیز پیشنهاد داده یا طرح آن را بکشید. در واقع، مسئله‌ی بی‌نقص یک پول ریکوئست است که مشکل را مستقیماً حل کرده و با تست‌ها تضمین می‌کند که دیگر تکرار نخواهد شد.

مهم

لطفاً برای درخواست ویژگی‌های جدید (مانند بسته‌ها، ماژول‌ها، دستورات و غیره) تنها در صورتی اقدام به باز کردن مسئله کنید که خودتان تمایل و توانایی پیاده‌سازی آن‌ها را داشته باشید. در این صورت، می‌توان از مسئله برای سنجش علاقه‌ی کاربران، تعیین اینکه آیا ویژگی مذکور در پروژه جای می‌گیرد یا خیر، و بحث درباره‌ی استراتژی‌های پیاده‌سازی استفاده کرد.

مشارکت در Nix

Nix سنگ بنای این بوم‌سازگان است و بیشتر با زبان C++ نوشته شده است.

اگر می‌خواهید در توسعه‌ی آن کمک کنید، راهنمای مشارکت در مخزن Nix روی گیت‌هاب را بررسی کنید.

مشارکت در Nixpkgs

راهنمایی

برای یک معرفی کلامی، ارائه‌ی NixCon 2024 با عنوان تبدیل‌شدن به یک مشارکت‌کننده در Nixpkgs را تماشا کنید.

Nixpkgs یک پروژه‌ی نرم‌افزاری بزرگ با حوزه‌های مختلف توسعه است. می‌توانید الهام‌بخش‌هایی برای بهبود در سامانه پیگیری مسائل Nixpkgs پیدا کنید.

اگر می‌خواهید کمک کنید، با راهنمای مشارکت در مخزن Nixpkgs روی گیت‌هاب شروع کنید تا دید کلی نسبت به کد و فرآیند مشارکت به دست آورید. همچنین دستورالعمل‌های مخصوص زبان برنامه‌نویسی خاص برای افزودن بسته‌ها وجود دارد.

مشارکت در NixOS

NixOS یک توزیع لینوکس به‌صورت توسعه‌ی جمعی است که می‌توان آن را به روشی بسیار انعطاف‌پذیر و از طریق رابط‌های برنامه‌نویسی اعلانی به‌راحتی پیکربندی کرد. کد مربوط به ماژول‌ها و پیکربندی‌های پیش‌فرض در پوشه nixos از مخزن گیت‌هاب nixpkgs قرار دارد.

برای شروع بهبودها، بخش توسعه راهنمای NixOS را ببینید. مستندات مشارکت مختص NixOS هنوز کمی ناقص است، اما بیشتر قراردادها برای مشارکت در Nixpkgs صدق می‌کنند. کمک به بهبود این بخش بسیار قدردانستنی است.

اگر مشارکت‌کننده جدیدی هستید، ایسوی‌های برچسب‌خورده با good-first-bug را بررسی کنید. اگر با محیط آشنایی دارید، کار روی ایسوی‌های پرطرفدار بسیار مورد تقدیر سایر کاربران NixOS قرار خواهد گرفت.

نحوه دریافت کمک

اگر یک پول ریکوئست (pull request) آماده کرده‌اید و برای پیشبرد آن نیاز به کمک دارید، برای اطلاعات بیشتر نحوه دریافت کمک برای مشارکت را بررسی کنید.

nix.dev/contributing/how-to-contribute

نیکسی · یادداشت‌های فارسی Nix local fonts