Differences between revisions 2 and 47 (spanning 45 versions)
Revision 2 as of 2008-03-30 09:34:36
Size: 3233
Comment: flesh out some more rules
Revision 47 as of 2022-04-18 03:57:36
Size: 2862
Editor: mkoeppe
Comment: Remove section duplicated from https://doc.sagemath.org/html/en/developer/trac.html#working-on-tickets
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from TracGuidelines
Line 3: Line 4:
== Trac Tickets == <<TableOfContents>>
 
Line 5: Line 7:
=== Rules === == Reviewing Tickets ==
Line 7: Line 9:
 * '''One Issue Per Ticket''': Ticket must cover only one issue and should not be a laundry list of unrelated issues. If a ticket covers more than one issue we cannot close it and while some of the patches have been applied to a given release the ticket would remain in limbo.
 * '''No Patch Bombs''': Code that goes into Sage is peer reviewed. If you show up with an 80,000 line of code bundle that completely rips out a subsystem and replaces it with something else you can imagine that the review process will be a little tedious. These huge patch bombs are problematic for several reasons and we prefer small, gradual changes that are easy to review and apply. This is not always possible [coercion rewrite], but it is still highly recommended that you avoid this style of development unless there is no way around it.
 * '''Sage Specific''': Sage's philosophy is that we ship everything [or close to it] in one source ball to make debugging possible. You can imagine the combinatorial explosion we would have to deal with if you replaced only ten components of Sage with external packages. Once you start replacing some of the more essential components of Sage that are commonly packaged [pari, GAP, lisp, gmp] it is no longer a problem that belongs in our tracker. If you distribution's pari package is buggy for example file a bug report with them. We are usually willing and able to solve the problem, but there are no guarantees that we will help you out. Looking at the open number of tickets that are Sage specific you hopefully will understand why.
 * '''No Support Discussions''': The trac installation is not meant a system to track down problems when using Sage. Tickets should be clearly a bug and not "I tried to get do X and I couldn't get it to work". That is usually not a bug in Sage and it is likely that sage-support can answer that question for you. If it turns out that you did hit a bug somebody will open a concise and to the point ticket.
 * '''No Closing Or Invalidating''': Unless you have admin powers in trac [which includes all the people who have ever done releases of Sage] do not close tickets unless you are explicitly told to do so. Since we have email notification now this has become less of an issue. If you think that a ticket is invalid or has been fixed just comment on it and the current release manager will take a look and close it if appropriate. On exception to this rule is if you happen to open the same ticket multiple times in a row. Feel free to close the extras in that case.
 * '''Solution Must Be Achievable''': Tickets must be achievable. Many times tickets that fall into this category usually ran afoul to some of the other rules listed above. A an example would be to "Make Sage the best CAS in the world".
 
=== Recommendations ===
 * '''100% Doctests''': All new code must be 100% doctested. There is no way around this.
 * '''Bug Fixes Must Be Doctested''': The ticket that fixes an issue must also contain a doctest specifically to test the problem. This is not always possible, so this is not enforced in certain situations.
 * '''Test the reference manual:''' {{{sage -docbuild reference html}}} must produce no errors.
 * '''Test the Sage library:''' {{{make test}}} or {{{make ptest}}} (edit number of threads in makefile before using ptest!).
Line 16: Line 14:
 * '''Patches Preferred''':
Line 18: Line 15:
== Reviewing Patches ==
Line 20: Line 16:
 * '''100% Doctests''': New code must be 100% doctested. There is no way around this.
 * '''Bug Fixes Must Be Doctested''': The patch that fixes an issue must also contain a doctest specifically to test the problem. This is not always possible, so this is not enforced in certain situations.
== Milestones vs. Releases ==

 * Milestones are usually goals to be met while working toward a release. In Sage's trac, we use milestones instead of releases, but unless somebody volunteers to clean up all the old milestones, we will stick with the current model. It doesn't make a whole lot of difference if we use milestone instead of release.
 * Finely grained releases are good. Release early and often is the way to go, especially as more and more patches are coming in.
 * It is a good idea to make a big release and schedule at least one more bugfix release after that to sort out the inevitable "doctest X is broken on distribution Y and compiler Z" problem. Given the number of compilers and operating systems out there, one has to be realistic to expect problems. A compile farm would certainly help to catch issues early.

== Assigning Tickets ==

 * Each ticket must have a milestone assigned.
 * If a ticket has a patch or spkg that is ready to be reviewed, assign it against the current milestone.
 * defect vs. enhancement vs. task: this can be tricky, but a defect should be something that leads to an exception or a mathematically wrong result.
 * If you are unsure to whom to assign the ticket, assign it to ''somebody''.
 * Certain categories have default people that get assign all issues. One example is mabshoff for ''memory leaks''.
 * If you have been assigned a ticket, you should either accept it or assign it back to ''somebody'' or ''tba''. Many people do not accept pending tickets at the moment. You have accepted a ticket if your name has a star next to it.


=== Comments ===

 * It would be nice to add something about our conventions about titles; "[with patch, needs review]", and so on. Also, what exactly must be done to review a patch? I'd like to see more about this. --DanDrake
 * Based on recent mailing list discussion, there appears to be a standard for naming patches: trac_NNNN_name. If this is going to be preferred/required, it should be stated here. --PeterJeremy
 * What are the conventions regarding including people listed as spkg maintainers and/or upstream contacts in tickets? This needs to be documented here. --PeterJeremy

Trac Guidelines for Sage

Reviewing Tickets

  • 100% Doctests: All new code must be 100% doctested. There is no way around this.

  • Bug Fixes Must Be Doctested: The ticket that fixes an issue must also contain a doctest specifically to test the problem. This is not always possible, so this is not enforced in certain situations.

  • Test the reference manual: sage -docbuild reference html must produce no errors.

  • Test the Sage library: make test or make ptest (edit number of threads in makefile before using ptest!).

Milestones vs. Releases

  • Milestones are usually goals to be met while working toward a release. In Sage's trac, we use milestones instead of releases, but unless somebody volunteers to clean up all the old milestones, we will stick with the current model. It doesn't make a whole lot of difference if we use milestone instead of release.
  • Finely grained releases are good. Release early and often is the way to go, especially as more and more patches are coming in.
  • It is a good idea to make a big release and schedule at least one more bugfix release after that to sort out the inevitable "doctest X is broken on distribution Y and compiler Z" problem. Given the number of compilers and operating systems out there, one has to be realistic to expect problems. A compile farm would certainly help to catch issues early.

Assigning Tickets

  • Each ticket must have a milestone assigned.
  • If a ticket has a patch or spkg that is ready to be reviewed, assign it against the current milestone.
  • defect vs. enhancement vs. task: this can be tricky, but a defect should be something that leads to an exception or a mathematically wrong result.
  • If you are unsure to whom to assign the ticket, assign it to somebody.

  • Certain categories have default people that get assign all issues. One example is mabshoff for memory leaks.

  • If you have been assigned a ticket, you should either accept it or assign it back to somebody or tba. Many people do not accept pending tickets at the moment. You have accepted a ticket if your name has a star next to it.

Comments

  • It would be nice to add something about our conventions about titles; "[with patch, needs review]", and so on. Also, what exactly must be done to review a patch? I'd like to see more about this. --DanDrake

  • Based on recent mailing list discussion, there appears to be a standard for naming patches: trac_NNNN_name. If this is going to be preferred/required, it should be stated here. --PeterJeremy

  • What are the conventions regarding including people listed as spkg maintainers and/or upstream contacts in tickets? This needs to be documented here. --PeterJeremy