اعتبار

با سیستم اعتبار آشنا شوید.


اعتبار سیستمی است که به افراد امکان می‌دهد در اکوسیستم Exercism «اعتماد» به دست آورند.

اعتبار معیاری است از اینکه یک فرد چقدر به Exercism کمک کرده است؛ هم با مشارکت در پلتفرم (مثلاً از طریق ساختن نرم‌افزار، تمرین و مستندات) و هم با مشارکت در جامعه (مثلاً مربی‌گری).

اعتبار را نمی‌توان «خرج کرد» یا «استفاده کرد». با این حال، رسیدن به آستانه‌های مشخصی از اعتبار، دسترسی به اختیارات تازه و راه‌های جدید مشارکت را ممکن می‌کند. به زبان ساده، هرچه اعتبار یک فرد بیشتر باشد، احساس می‌کنیم بیشتر می‌توانیم به او اعتماد کنیم و در نتیجه قدرت بیشتری به دست می‌آورد. اعتبار همچنین معیاری است که همه می‌توانند ببینند و نشان می‌دهد چقدر به Exercism کمک کرده‌اید.

هدف

هدف سیستم اعتبار این است که:

  1. تعامل‌های متمرکز بر رشد میان دانش‌آموزان و مربیان را بیشینه کند
  2. تمایل مربیان به مشارکت را بیشینه کند

به دست آوردن اعتبار

اعتبار را می‌توان به روش‌های گوناگونی به دست آورد:

اقدام اعتبار
مربی‌گری موفق یک راه‌حل ۵
انتشار یک راه‌حل ۱-۳
نوشتن یک تمرین ۲۰
به‌روزرسانی یک تمرین ۱۰
نوشتن یک مفهوم ۱۰
به‌روزرسانی یک مفهوم ۵
ساختن pull request ۳-۱۰۰
بازبینی pull request ۱-۲۰
ادغام pull request ۱-۵

مربی‌گری موفق یک راه‌حل

برای هر راه‌حلی که با موفقیت مربی‌گری شده باشد (بحث به پایان رسیده باشد)، 5 اعتبار داده می‌شود.

انتشار یک راه‌حل

برای هر راه‌حل منتشرشده، اعتبار بر اساس سختی تمرین داده می‌شود:

برچسب اعتبار
easy ۱
medium ۲
hard ۳

نوشتن یک تمرین

برای هر تمرینی که کاربر به‌عنوان نویسنده در آن فهرست شده باشد، 20 اعتبار داده می‌شود.

به‌روزرسانی یک تمرین

برای هر تمرینی که کاربر به‌عنوان مشارکت‌کننده فهرست شده باشد، 10 اعتبار داده می‌شود.

نوشتن یک مفهوم

برای هر مفهومی که کاربر به‌عنوان نویسنده فهرست شده باشد، 10 اعتبار داده می‌شود.

به‌روزرسانی یک مفهوم

برای هر مفهومی که کاربر به‌عنوان مشارکت‌کننده فهرست شده باشد، 5 اعتبار داده می‌شود.

ساختن pull request

به طور پیش‌فرض، وقتی pull requestی که کاربر باز کرده است ادغام شود، 12 اعتبار داده می‌شود.

بسته به محتوای pull request، یک نگهدارنده می‌تواند با افزودن یکی از برچسب‌های زیر به آن، اعتبار بیشتری (یا کمتری) بدهد:

برچسب اعتبار مثال‌ها
x:rep/tiny ۳
  • اصلاح یک غلط املایی یا لینک
  • حذف یک خط خالی یا افزودن یک خط جدید
  • تغییر یا افزودن یک کامنت کد
x:rep/small ۵
  • اصلاح یک تست، وظیفه یا مثال
  • اصلاح چند غلط املایی یا لینک در یک فایل
  • شفاف‌سازی محتوا با افزودن چند خط به یک فایل
x:rep/medium ۱۲
  • همگام‌سازی یک تمرین با problem-specifications (شامل ویرایش‌ها)
  • افزودن یک یا چند تست از صفر
  • بهبود چند فایل در یک تمرین
  • افزودن یادداشت‌های مربی برای یک تمرین از صفر
  • رفع یک باگ کوچک در یک test runner/analyzer/representer
  • افزودن کامنت‌های analyzer برای یک تمرین
x:rep/large ۳۰
  • افزودن یک تمرین مفهوم یا تمرین عملی جدید
  • افزودن مستندات مفهوم جدید
  • بازنویسی اساسی یک مفهوم یا تمرین موجود
  • افزودن اسکریپت‌های CI جدید یا خودکارسازی‌های دیگر
x:rep/massive ۱۰۰
  • ساختن یک test-runner، analyzer، representer یا generator از صفر
  • بازآرایی اساسی آن ابزارها
  • ساختن مستندات اساسی از صفر (مثلاً راهنماهای مشارکت یا تست)

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

  • تخمین زمان صرف‌شده را باید به‌عنوان میانگین زمانی تفسیر کرد که یک نگهدارنده صرف انجام آن PR می‌کند.
  • اگر بیش از یک برچسب مشخص شده باشد، برچسبی که بالاترین مقدار اعتبار را دارد، اعتبار اعطاشده را تعیین می‌کند.
  • اگر pull request هنوز باز باشد، هیچ اعتباری (فعلاً) داده نمی‌شود.
  • اگر pull request بدون ادغام بسته شود، هیچ اعتباری داده نمی‌شود.

برای سازگاری با نسخه‌های قبلی، از برچسب‌های x:size هم برای تعیین اعتبار اعطاشده پشتیبانی می‌کنیم.

بازبینی pull request

برای هر pull request ادغام‌شده یا بسته‌شده‌ای که کاربر بازبینی کرده باشد، 5 اعتبار داده می‌شود.

  • اگر pull request هنوز باز باشد، هیچ اعتباری (فعلاً) داده نمی‌شود.

  • اعتبار بازبینی به ازای هر pull request برای هر کاربر فقط یک بار داده می‌شود.

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

  • اگر یکی از برچسب‌های زیر به pull request اضافه شود، اعتبار داده‌شده برای بازبینی آن تغییر می‌کند:

    برچسب اعتبار
    x:rep/tiny ۱
    x:rep/small ۲
    x:rep/medium ۵
    x:rep/large ۱۰
    x:rep/massive ۲۰

    استفاده از «اندازه»های متفاوت اعتبار برای نویسنده و بازبین یک pull request ممکن نیست. هر دو بر پایه‌ی همان برچسب x:rep هستند.

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

    برای سازگاری با نسخه‌های قبلی، از برچسب‌های x:size هم برای تعیین اعتبار اعطاشده پشتیبانی می‌کنیم.

ادغام pull request

برای هر pull request که کاربر ادغام کرده باشد، 1 اعتبار داده می‌شود.

  • اگر pull request هنوز باز باشد، هیچ اعتباری (فعلاً) داده نمی‌شود.
  • اگر pull request بدون ادغام بسته شود، هیچ اعتباری داده نمی‌شود.
  • کاربری که pull request را باز کرده است، برای ادغام pull request خودش اعتبار نمی‌گیرد.
  • اگر pull request هیچ بازبینی‌ای نداشته باشد، به جای آن 5 اعتبار داده می‌شود.

باز کردن یک issue

مانند pull requestها، به طور پیش‌فرض، وقتی یک issue باز می‌شود هیچ اعتباری داده نمی‌شود. برخلاف pull requestها، اعتبار فقط برای issueهای large یا massive داده می‌شود.

بسته به محتوای issue، یک نگهدارنده می‌تواند با افزودن یکی از برچسب‌های زیر به آن، اعتبار بدهد:

برچسب اعتبار مثال‌ها
x:rep/large ۳۰
  • تمرین مفهوم کاملاً پرداخته‌شده
x:rep/massive ۱۰۰
  • طراحی برنامه‌ی درسی یک ترک

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

  • اعتبار باید بازتاب‌دهنده‌ی میزان تلاشی باشد که یک نگهدارنده صرف ساختن آن issue می‌کند.

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