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
Related
- http://trac-hacks.org/wiki/TicketSubmitPolicyPlugin allows some fields to be required for posting a ticket.
- http://trac-hacks.org/wiki/TypedTicketWorkflowPlugin can modify the task depending on task type
- http://trac-hacks.org/wiki/TicketDeletePlugin allows deleting of tickets. Currently, we may not need this but having a way to deal with unwanted content is good.
- http://trac.edgewall.org/wiki/SpamFilter spam filter may come handy, but ip blocking may block our local ip-s too.
- http://sophie2.org/trac/wiki/TracTickets gives an idea on how to show the reporter what to type.
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.
- deletion of accounts is possible with the proper plug-in
- 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.
- deletion of accounts is possible with the proper plug-in
- 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.)