مشارکت در کوروش

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

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

    چه مواردی مشارکت محسوب می‌شود؟

    مشارکت‌ها شامل موارد زیر است، اما به آن‌ها محدود نمی‌شود:

    • بهبود مستندات
    • بهبود کد کامپایلر
    • رفع اشکالات
    • بهینه‌سازی عملکرد
    • ابزارسازی (افزونه VSCode، افزونه Emacs، سرورهای زبان، و غیره)
    • بهبود وب‌سایت
    • بررسی مسائل و مشارکت در بحث‌ها

    سیاست کد تولیدشده توسط هوش مصنوعی

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

    کامپایلر (قاعده سختگیرانه)

    کد تولیدشده یا تألیف‌شده توسط هوش مصنوعی در پایگاه کد کامپایلر مجاز نیست.

    این شامل موارد زیر می‌شود:

    • منطق اصلی کامپایلر
    • تجزیه‌گر / تحلیلگر واژگانی
    • سیستم نوع‌ها
    • بهینه‌ساز
    • تولید کد / پشتیبان
    • زمان اجرا / کتابخانه استاندارد

    اگر مشخص شود که یک درخواست کشش (pull request) حاوی کد تولیدشده توسط هوش مصنوعی برای کامپایلر است:

    بدون ادغام فوراً بسته خواهد شد.

    ما این کار را به این دلیل انجام می‌دهیم که کامپایلر سیستمی حیاتی از نظر صحت است که در آن:

    • خطاهای منطقی جزئی غیرقابل قبول هستند
    • انتساب اثر باید قابل ردیابی باشد
    • قابلیت نگهداری بلندمدت به استدلال انسانی وابسته است

    ابزارها و اکوسیستم (مجاز)

    مشارکت‌های کمکی هوش مصنوعی در موارد زیر مجاز است:

    • افزونه VSCode
    • افزونه Emacs
    • ابزارهای زبانی
    • وب‌سایت
    • مستندات
    • مثال‌ها و آموزش‌ها

    با این حال، مشارکت‌کنندگان همچنان مسئول صحت، مجوز، و اصالت اثر هستند.

    پیش از ثبت مسئله

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

    ثبت مسئله

    هنگامی که با مشکلی روبرو می‌شوید یا پیشنهادی دارید، لطفاً موارد زیر را ذکر کنید:

    ۱. عنوان واضح

    خلاصه‌ای کوتاه و توصیفی از مسئله.

    ۲. شرح مشکل

    شامل موارد زیر:

    • رفتار مورد انتظار
    • رفتار واقعی
    • مراحل بازتولید
    • جزئیات محیط (سیستم‌عامل، نسخه، پیکربندی)

    ۳. اطلاعات پشتیبان

    در صورت لزوم:

    • گزارش‌ها
    • تصاویر صفحه
    • موارد بازتولید حداقلی

    ۴. برچسب‌ها

    از برچسب‌های مناسب استفاده کنید مانند:

    • bug
    • enhancement
    • question

    الزامات درخواست کشش

    تمامی درخواست‌های کشش (PR) ارسالی باید از این قوانین پیروی کنند:

    ۱. نیاز به بررسی (سختگیرانه)

    یک PR باید توسط موارد زیر تأیید شود:

    • ایجادکننده پروژه، یا
    • حداقل دو نگهدارنده مستقل

    ادغام با یک بررسی برای تغییرات غیرجزئی مجاز نیست.

    ۲. یکپارچه‌سازی مداوم / آزمایش‌ها (اجباری)

    تمام آزمایش‌ها باید قبل از بررسی یا ادغام با موفقیت گذرانده شوند.

    • CI ناموفق = PR واجد شرایط ادغام نیست
    • رفع‌های جزئی باید به وضوح به عنوان WIP علامت‌گذاری شوند

    ۳. سیاست تغییرات بنیادین

    تغییرات بنیادین باید پیش از پیاده‌سازی مورد بحث قرار گیرند.

    کانال‌های قابل قبول برای بحث:

    • مسائل گیت‌هاب
    • بحث‌های اجتماعی
    • کانال‌های هماهنگی نگهدارندگان

    تغییرات بنیادین را بدون توافق قبلی ارسال نکنید.

    ارسال PR پیش‌نویس

    PRهای پیش‌نویس به شدت برای دریافت بازخورد زودهنگام توصیه می‌شوند.

    مراحل:

    1. یک شاخه از initial-compiler ایجاد کنید

    2. تغییرات خود را به تدریج پیاده‌سازی کنید

    3. به انشعاب (fork) خود push کنید

    4. یک درخواست کشش به عنوان پیش‌نویس باز کنید

    5. به وضوح شرح دهید:

      • چه مسئله‌ای را حل می‌کنید
      • رویکرد طراحی شما
      • هرگونه بده‌بستان یا عدم قطعیت

    PRهای پیش‌نویس روش ترجیحی برای ارائه تغییرات غیرجزئی هستند.

    بررسی و تکرار

    هنگامی که PR شما در مرحله بررسی است:

    • به بازخوردها به صورت سازنده پاسخ دهید
    • commitهای کوچک و متمرکز انجام دهید
    • از مخلوط کردن تغییرات نامرتبط خودداری کنید
    • اطمینان حاصل کنید CI همواره سبز باقی می‌ماند

    هنگامی که آماده شدید:

    • PR را به عنوان "آماده برای بررسی" علامت‌گذاری کنید
    • منتظر تأیید نهایی باشید

    سوءاستفاده از هوش مصنوعی در PRها (اجرای مهم)

    اگر مشخص شود که یک PR با هدف پایگاه کد کامپایلر حاوی کد تولیدشده یا کمکی هوش مصنوعی است:

    • فوراً بسته خواهد شد
    • نگهدارندگان ملزم به ارائه بازخورد بررسی دقیق نیستند
    • تخلفات مکرر ممکن است منجر به محدودیت مشارکت شود

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

    انتظارات کیفیت کد

    ما انتظار داریم مشارکت‌ها موارد زیر را رعایت کنند:

    • حداقلی و هدفمند باشند
    • از انتزاع غیرضروری پرهیز کنند
    • با سبک کد موجود هماهنگ باشند
    • صحت را بر هوشمندی ترجیح دهند
    • برای نگهدارندگان آینده قابل فهم باقی بمانند

    ارسال PR نهایی

    پیش از علامت‌گذاری PR به عنوان آماده:

    • اطمینان حاصل کنید تمام بررسی‌های CI با موفقیت گذرانده شده‌اند
    • در صورت لزوم مستندات را به‌روز کنید
    • تأیید کنید که هیچ تغییر نامرتبطی شامل نشده است
    • اطمینان حاصل کنید پیام‌های commit معنادار هستند

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

    ما محیطی حرفه‌ای و سازنده را حفظ می‌کنیم.

    از همه مشارکت‌کنندگان انتظار می‌رود:

    • به وضوح ارتباط برقرار کنند
    • به نظرات فنی متفاوت احترام بگذارند
    • از بحث‌های شخصی پرهیز کنند
    • بر شایستگی فنی تمرکز کنند