|Version 8 (modified by krst, 4 years ago) (diff)|
Table of Contents
Ticket Life Cycle
Every line of code introduced in the CKEditor/trunk tree must pass through a strict review process. This guarantees the overall quality of the code base.
This document describes the life cycle of a ticket in the CKEditor project.
Anyone is allowed (and invited) to open tickets for every single issue faced in CKEditor. The Bug Reporting Instructions and Feature Request Instructions pages have more information on how to properly fill new tickets. Created ticket has status new
The ticket title, its description or its fields could be cleaned up to confirm to our internal requirements and recommendations.
Someone from the core development team should then check the ticket information and decide whether it has enough useful information to move forward.
The following actions could be taken when confirming new ticket:
- Resolve the ticket as duplicate if the ticket is determined to have the same cause as a ticket reported earlier. The "DUP of #XYZ" comment should be added, pointing to that ticket.
- Resolve the ticket as worksforme if the bug seems to not be present in the current trunk code. A comment should be added instructing the reporter to check it again and provide more information. A ticket with this status, expires in 30 days if no action is taken in the ticket, resolving it as "worksforme".
- Resolve the ticket as invalid if it does not describe a problem with CKEditor.
- Resolve the ticket as wontfix in the rare cases that the bug seems valid but there's a specific reason why it should not (or cannot) be fixed. A comment with explanation of reasons, should be added.
- Check the option request info if the ticket does not have enough information to move forward, ticket would be returned to reporter, asking him for more details. Ticket status is set to pending, and expires in 30 days if no action is taken.
- Check the option confirmed if the issue could be reproduced. For browser specific tickets, the relative keyword should be appended. List of allowed keywords could be found here.
- Mark the ticket with the HasPatch keyword, if a patch or descriptive code changes is provided, even if not analyzed and reviewed.
Once confirmed, the research starts to identify the source of the problem. A core developer could Accept the ticket. Ticket gains status assigned automatically, indicating that work is already in progress for it, avoiding duplicated work.
The assignee, the reporter or other could come with some more information at this point, to help on the analysis research and coding.
A proposed patch should be added as a new attachment to the ticket. It must be a valid SVN patch file, named XYZ.patch, where "XYZ" stands for the ticket number. The keyword HasPatch should be appended to the ticket, and selected action should be set as put on review, indicating that the patch awaits review.
When a submitter proposes an updated patch, the previous patch should still remain in the ticket. The new patch should be named XYZ_n.patch, where "n" is a progressive number starting from "2". The new patch makes previous ones obsolete. The review status should be set again, with instructions to the reviewer.
A reviewer will read through each proposed patch. If the patch is ready to commit, the reviewer will change the review keyword to "Review+".
A patch might not be ready to commit for various reasons. The bug fix might be incorrect. The coding style might be incorrect. The reviewer should always explain in detail why a patch is not ready to commit, so the submitter or someone else can revise the patch. The review keyword is changed to "Review-" at this point.
After a patch has been reviewed, someone with commit privileges in the source repository will commit it. The ticket is then resolved as "fixed", pointing to the relative changed with a message like "Fixed with [XYZ].".
If the assignee or the patch developer has commit privileges, he/she has the preference to commit it.