wiki:SCS_ISSUE_TRACKER_SETUP_R2
Last modified 13 years ago Last modified on 03/31/09 15:06:18

Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Error: Macro TicketQuery(summary=SCS_ISSUE_TRACKER_SETUP_R2, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|) failed
current transaction is aborted, commands ignored until end of transaction block

Analysis

Overview

As we are getting close to beta versions, issue tracker should be set up in a way that is convinient for the end users to report bugs.

Task requirements

  • Change default tickets type to bug
  • Make the default component of tickets "uncategorized"
  • Make the description field required.
  • Review trac permissions
  • unregistered (anonymous) users should be able to:
    • Create a ticket of type bug
    • An explanation of what should they fill in will be useful
  • unregistered users should NOT be able to
    • Create more than number of tickets for a time interval
    • Delete or edit existing tickets - this should also be noted (this one is easy - ticket deletion is not possible without a plugin).
  • Some of the registered users should be able to
    • Delete tickets - this should be discussed - accidently deleting of tickets won't be nice, but unwanted content should be deleteable. Probably deletion of bug tickets only is enough, but should be done by some users only.

Task result

Issue tracker ready for anonymous bug reporting.

Implementation idea

Install the plugins from the Related section.

Workflow

Here is the example from the TypedTicketWorkflow sample

[ticket]
workflow = TypedTicketWorkflow

[ticket-workflow]
accept = new,assigned,accepted,reopened -> accepted
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY
accept.tickettype = bug, task

Here is our current workflow

[ticket-workflow]
t1a_super = * -> s3c_implementation_ok
t1a_super.name = super review
t1b_super = * -> s2c_design_ok
t1b_super.name = super review
t1c_super = * -> s1c_analysis_ok
t1c_super.name = super review
t1d_super = * -> new
t1d_super.name = super review
t2a_resolve = * -> closed
t2a_resolve.name = resolve
t2a_resolve.operations = set_resolution
t2b_reassign = * -> *
t2b_reassign.name = reassign
t2b_reassign.operations = set_owner
t2b_reassign.permissions = TICKET_MODIFY
t2b_reassign.set_owner = pac,kyli,boyan,meddle,pap,veliko87,jani,tanya,peko,todor,milo,sriggins,orliin,niki,gogov,danvisel,mira,alex,deyan,pav,alex,htomov,nmatelan,nvasilev,mitex,mbenkov,dido,stitch
t2c_reopen = closed -> new
t2c_reopen.name = reopen
t2c_reopen.operations = del_resolution
t2c_reopen.permissions = TICKET_CREATE
t5a_fail_testing = s4b_test_finished -> s3c_implementation_ok
t5a_fail_testing.name = review test FAIL
t5b_finish_test_ok = s4b_test_finished -> s4c_test_ok
t5b_finish_test_ok.name = review test OK
t5c_finish_test = s4a_test_started -> s4b_test_finished
t5c_finish_test.name = finish test
t5d_start_test = s3c_implementation_ok -> s4a_test_started
t5d_start_test.name = start test
t6a_review_implementation_fail3 = s3b_implementation_finished -> new
t6a_review_implementation_fail3.name = review implementation FAIL 3
t6b_review_implementation_fail2 = s3b_implementation_finished -> s1c_analysis_ok
t6b_review_implementation_fail2.name = review implementation FAIL 2
t6c_review_implementation_fail = s3b_implementation_finished -> s2c_design_ok
t6c_review_implementation_fail.name = review implementation FAIL
t6d_review_implementation_ok = s3b_implementation_finished -> s3c_implementation_ok
t6d_review_implementation_ok.name = review implementation - OK
t6e_finish_implementation = s3a_implementation_started -> s3b_implementation_finished
t6e_finish_implementation.name = finish implementation
t6f_start_implementation = s2c_design_ok -> s3a_implementation_started
t6f_start_implementation.name = start implementation
t6f_start_implementation.operations = set_owner_to_self
t6f_start_implementation.permissions = TICKET_MODIFY
t7a_review_design_fail2 = s2b_design_finished -> new
t7a_review_design_fail2.name = review design - FAIL 2
t7b_review_design_fail = s2b_design_finished -> s1c_analysis_ok
t7b_review_design_fail.name = review design - FAIL
t7c_review_design_ok = s2b_design_finished -> s2c_design_ok
t7c_review_design_ok.name = review design - OK
t7d_finish_design = s2a_design_started -> s2b_design_finished
t7d_finish_design.name = finish design
t7e_start_design = s1c_analysis_ok -> s2a_design_started
t7e_start_design.name = start design
t7e_start_design.operations = set_owner_to_self
t7e_start_design.permissions = TICKET_MODIFY
t8a_review_analysis_fail = s1b_analysis_finished -> new
t8a_review_analysis_fail.name = review analysis - FAIL
t8b_review_analysis_ok = s1b_analysis_finished -> s1c_analysis_ok
t8b_review_analysis_ok.name = review analysis - OK
t8c_finish_analysis = s1a_analysis_started -> s1b_analysis_finished
t8c_finish_analysis.name = finish analysis
t8d_start_analysis = new -> s1a_analysis_started
t8d_start_analysis.name = start analysis
t8d_start_analysis.operations = set_owner_to_self
t8d_start_analysis.permissions = TICKET_MODIFY
t9_leave = * -> *
t9_leave.name = leave

This allows adding workflow for bugs. For bug actions you should add ".tickettype" = bug and for the others - ".tickettype = unplanned_task, planned_task". Discuss with the team leader granting "TICKET_CREATE" permissions to anonymous users. Add "leave" permission to all of the registered users.

Default ticket type should be set to bug (default_type in trac.ini). Hide some of the dropdown menus - for example task type (this is optional and may not be so convinient).

Fields may be described by replacing

http://sophie2.org/trac/newticket

with

http://sophie2.org/trac/newticket?summary=Write%20brief%20summary%20of%20the%20error%20here&description=Write%20detailed%20description%20of%20the%20error%20here

Install the spam filter and research it's options.

Intall the trac delete plugin to allow ticket deletion. Do not give deleting permissions to no one for now.

Use the TicketSubmitPolicyPlugin to make description fields required

SCS_ISSUE_TRACKER_SETUP_R1

How to demo

Create a ticket from an anonymous account. Explain what is done.

Design

  • Install the plug-ins listed in the implementation idea.
  • Research them and the way they work
    • deletion of accounts is possible with the proper plug-in
      • the trac admin can delete tickets and to assign such role to other team members
    • TicketSubmitPolicyPlugin is useless for making description field required, it can only be used to show or hide different fields.
      • Information about Akismet is available here.
    • After research of the different settings of the Spam filter, now it can be successfully implemented.
  • To change default ticket's type to bug and to make the default component of tickets "uncategorized" change following part of trac.ini:

[ticket]
default_cc =
default_component = uncategorized
default_description =
default_keywords =
default_milestone =
default_owner =
default_priority = major
default_resolution = fixed
default_severity =
default_summary =
default_type = bug
default_version =
max_description_size = 262144
preserve_newlines = default
restrict_owner = false
workflow = ConfigurableTicketWorkflow,CodeReviewActionController,TicketWorkflowOpOwnerReporter

  • Spam Filter

Implementation

  • Installed the plug-ins listed in the implementation idea.
  • Research them and the way they work
    • deletion of accounts is possible with the proper plug-in
      • the trac admin can delete tickets and to assign such role to other team members
    • TicketSubmitPolicyPlugin is useless for making description field required, it can only be used to show or hide different fields.
    • For now making the description required field is not possible, or at least we haven't found a proper plug-in to do that. Policies plug-in is applicable only for displaying and hiding certain fields, but it can not make them required.
    • The Spam Filter is now working and uses Akismet and other popular filters.
      • We've created WordPress account (ask pac for the username and password if needed).
      • We applied recommended settings.
  • Restrictions requirement could be partially fulfilled, because some aspects of them are blocked by the two previous requirements.
  • Now default ticket's type is "bug" and the default component of the tickets is "uncategorized".

Testing

(Place the testing results here.)

Comments

(Write comments for this or later revisions here.)