انتخاب Issue Tracker

تا حالا بارها و بارها برای موقعیت های مختلف Issue Tracker های مختلف انتخاب شده اند. اما باز هنوز هم در تیم ها و پروژه های جدید نیاز به انتخاب Issue Tracker است.

نیازمندی این بار این طور است:

  1. با وجود در دسترس بودن سرور با دسترسی RDP نمی خواهیم از آن استفاده کنیم، چون هم نگهداری سرور را سخت می کند، همین Performance آن را پایین می آورد و هم این که اگر سرور به هر دلیلی دچار مشکل شد، Issue Tracker را از دست می دهیم. در حالی که ممکن است برای پیگیری رفع مشکل سرور به خود Issue Tracker نیاز داشته باشیم.
  2. کار کردن با آن ساده و قابل فهم باشد. چون افراد غیر فنی هم از آن استفاده خواهند کرد.
  3. کار کردن با آن سریع و راحت باشد. چون ممکن است افراد تیم کمبود وقت داشته باشند و نتوانند برای به روز رسانی آن وقت زیادی بگذارند.
  4. قادر به ارسال Notification در حالتی که یک Issue ثبت می شود، کامنتی گذاشته می شود یا status عوض می شود، باشد. چون تیم توسعه ماهیت Remote و Part time دارد. اعضای تیم باید بتوانند به سرعت در جریان همه تغییرات باشند.
  5. بک آپ راحت و مطمئن داشته باشد. چون نمی خواهیم زحمات تیم به خاطر یک مشکل فنی از بین برود. آبرویمان هم نباید جلوی سهام داران یا مشتری ها به باد برود.
  6. نصب و نگهداری راحتی داشته باشد. منابع تیم محدود است و نمی توانیم زمان زیادی را برای نگهداری از آن صرف کنیم.
  7. نیازهای سخت افزاری و منابع آن در حد پایینی باشد. چون به علت محدودیت منابع مالی نمی توانیم هاست یا سخت افزار گران قیمتی تهیه کنیم.
  8. آنلاین یا ابری نباشد. چون هر روز یک نفر ما را تحریم می کند. روی سرویس و سرعت VPN هم خیلی نمی شود حساب باز کرد.
  9. ما را مجبور نکند که یک stack جدید روی سرور نصب کنیم. مثلا اگر host ما LAMP است و PHP و MySQL همین الان روی آن نصب است، سراغ Issue Tracker نرویم که نیاز به نصب J2EE یا Ruby داشته باشد.
  10. مهاجرت دادن Application از یک سرور به سرور دیگر راحت باشد.
  11. امکانات پایه برای تعریف Board و دوره زمانی به ما بدهد. به نحوی که بتوانیم هر چند Task را برای یک دوره زمانی به خصوص برنامه ریزی کنیم. از آن طرف هم معلوم باشد چه کاری در مرحله Todo است، کدامیک Doing و کدام ها Done هستند. چیزی مثل Board های اسکرام که همه جا استفاده می شوند.
  12. امکانات RTL و زبان فارسی داشته باشد، یا حداقل این که بتوان آن را به نحوی به شکل RTL در آورد.
  13. نیاز به پرداخت هزینه و حق اشتراک و غیره نداشته باشد. چون با درآمد ریالی نمی توان هزینه دلاری پرداخت داشت.
  14. دارای Time Tracking باشد. یعنی بدانیم که پیش بینی زمانی تسک چند ساعت است. افراد هم بتوانند مقدار ساعاتی را که تا حالا برای انجام آن صرف کرده اند را در آن مشخص نمایند.
  15. روی اطلاعات Time Tracking به ما امکانات حسابداری و آمار گیری مناسب بدهد. برای آن که بتوانیم در پایان هر دور بفهمیم که هر کسی چقدر زمان صرف کرده و برای هر feature چقدر وقت گذاشته ایم. (نکته تکمیلی)
  16. با دیگر ابزارها از جمله GitLab و WhatsApp دارای Integration باشد. (نکته تکمیلی)
  17. بتوان از داخل ایمیل یا ابزارهایی مثل Slack یا WhatsApp مستقیما به کامنت های آن جواب داد. (نکته تکمیلی)
  18. تقویم شمسی داشته باشد یا بتوان تقویم شمسی را به آن اضافه کرد (نکته تکمیلی)

توضیح اول این که نمی خواهیم از Issue Tracker هایی که خود Source Control ها ارائه می دهند استفاده کنیم. چون اولا این که سورس پروژه ها در سرویس های مختلفی Host شده اند و Issue Tracker یکی به Issue Tracker دیگری دسترسی ندارد. ثانیا این که سابقه جابجایی زیادی بین سرویس های مختلف وجود دارد. نمی خواهیم که هر بار جابجایی باعث از بین رفتن سابقه Issue ها شود. ایده آل ما این است که هر Issue یک شماره داشته باشد و این شماره هیچ وقت گم نشود. علاوه بر این دوست داریم یک دیتابیس همیشگی از کارها داشته باشیم که هیچ وقت گم نشود.

توضیح دوم این که Application را فقط برای Bug Tracking نمی خواهیم، بلکه لازم داریم که از آن به عنوان نوعی ابزار Project Management هم استفاده کنیم. علاوه بر این می خواهیم که Tracking همه بخش های مختلف پروژه از یک جا باشد. این طور نباشد که بخش Back-end دارای Issue Tracker خودش باشد و Android App هم دارای یک Issue Tracker دیگر باشد.

تا اینجای کار به لیستی از 5 نرم افزار رسیده ام:

  • Redmine: بر پایه Ruby
  • Bugzilla: بر پایه Perl
  • Trac: بر پایه Python
  • Mantis: بر پایه PHP
  • Taiga: بر پایه Python

سروری که دم دست داریم فقط PHP دارد بنابرین اولین چیزی را که خواستم امتحان کنم Mantis بود. اما ب بسم ا.. به مشکل برخوردم. چون جناب SourceForge میانه خوبی با IP ما ندارد.

در قدم بعدی سعی می کنم راهی برای دانلود Mantis پیدا کنم. هر وقت موفق شدم، اینجا را به روز می کنم.

منبع

به روز رسانی 1: مانتیس را نصب کردم. در نگاه خیلی شلوغ است. هم مدیریت و هم کاربری اش سخت تر از اونی هست که فکر می کردم. اما در حال تلاش برای customize کردنش هستم.

به روز رسانی 2: مطلب مشابهی در همین وبلاگ نوشته شده که اتفاقا مرتبط به موضوع هم هست. آن را اینجا ببینید.

به روز رسانی 3: با مانتیس به مقدار زیادی ور رفتم و آن را مقداری customize کردم:

  • ایمیلش خود به خود کار می کند. هیچ تنظیماتی برای آن پیدا نکردم.
  • وقتی که روی زبان فارسی باشد، مشکل RTL آن هم برطرف می شود.
  • امکان Custom Field آن اجازه می دهد هر فیلد دلخواهی به تعریف Issue ها اضافه شود.
  • نام گذاری Issue ها چیزی شبیه 0000123 است. راهی پیدا نکردم که آن چند تا صفر ابتدا را بردارم. ولی مثل این که تابعی به اسم bug_id_format برای انجام این کار وجود دارد.
  • با کمک یک نمونه فایل setting توانستم صفحات ایجاد و ویرایش Issue را به مقدار زیادی ساده سازی کنم.
  • مانتیس یک سیستم Bug Tracking است ولی با کمک Version و Roadmap می توان برنامه ریزی پروژه ای مشابه Sprint planning داشت. با تعریف رابطه بین Issue ها به شکل parent/child می توان رابطه Product Backlog Item و Task را شبیه سازی کرد.
  • مکانیزم Time Tracking را می توان در پروژه فعال کرد.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *