Package Review Process

From FedoraProject

(Difference between revisions)
Jump to: navigation, search
m (Contributor)
(add a note on fedora-review)
(12 intermediate revisions by 9 users not shown)
Line 1: Line 1:
<!-- page was renamed from HowToReviewPackages
 
-->
 
 
'''Author:''' [[TomCallaway|  Tom 'spot' Callaway]] and others<BR>
 
'''Author:''' [[TomCallaway|  Tom 'spot' Callaway]] and others<BR>
 
'''Revision:''' 0.06<BR>
 
'''Revision:''' 0.06<BR>
Line 13: Line 11:
 
In order for a new package to be added to Fedora, the package must first undertake a formal review. The purpose of this formal review is to try to ensure that the package meets the quality control requirements for Fedora. This does not mean that the package (or the software being packaged) is perfect, but it should meet baseline minimum requirements for quality.
 
In order for a new package to be added to Fedora, the package must first undertake a formal review. The purpose of this formal review is to try to ensure that the package meets the quality control requirements for Fedora. This does not mean that the package (or the software being packaged) is perfect, but it should meet baseline minimum requirements for quality.
  
Reviews are currently done for totally new packages, [[Package_Renaming_Process#Re-review_required|package renames]], and packages merged from the old Fedora Core repository.
+
Reviews are currently done for totally new packages, [[Package_Renaming_Process#Re-review_required|package renames]], old packages that were once deprecated returning to the collection, and packages merged from the old Fedora Core repository.
  
 
{{Anchor|ReviewPurpose}}
 
{{Anchor|ReviewPurpose}}
Line 30: Line 28:
 
Currently, this is done by following these steps:
 
Currently, this is done by following these steps:
  
# Put your spec file and SRPM somewhere on the Internet.
+
<ol>
# Fill out a [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&format=fedora-review request for review in bugzilla]. This is what a sample bugzilla request for review looks like: [[Image:PackageReviewProcess_review.png]]
+
<li> Put your spec file and SRPM somewhere on the Internet.
# If you do not have any package already in Fedora, this means you need a sponsor and to add FE-NEEDSPONSOR to the bugs being blocked by your review request. For more information read the [[How to get sponsored into the packager group]] wiki page.
+
<li> Fill out a [https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&format=fedora-review request for review in bugzilla]. For guidance, a [[:Image:PackageReviewProcess_review.png|screenshot of a sample bugzilla request is available for review]].
# Wait for someone to review your package! At this point in the process, the '''fedora-review flag''' is blank, meaning that no reviewer is assigned.
+
[[Image:PackageReviewProcess_review.png|right|x400px]]
  {{admon/tip|Review Swaps| If nobody comments on your review request, you might want to mail to a mailing list ([https://admin.fedoraproject.org/mailman/listinfo/devel devel@lists.fedoraproject.org], for example) asking for a "review swap".  This is an offer to do a review of someone else's package in exchange for them reviewing your package.  This is usually one-for-one, or can be some other private arrangement depending on the difficulty of the respective packages. }}
+
<li> If you do not have any package already in Fedora, this means you need a sponsor and to add FE-NEEDSPONSOR to the bugs being blocked by your review request. For more information read the [[How to get sponsored into the packager group]] wiki page.
# There may be comments from people that are not formally reviewing the package, they may add NotReady to the Whiteboard field, indication that the review request is not yet ready, because of some issues they report. After you have addressed them, please post the URLs to the updated SPEC and SRPM file and remove it from the Whiteboard.  It is expected that you will respond to commentary, including updating your submission to address it; if you do not, your ticket will be closed.
+
<li> Wait for someone to review your package! At this point in the process, the '''fedora-review flag''' is blank, meaning that no reviewer is assigned.
# A reviewer takes on the task of reviewing your package. They will set the '''fedora-review flag''' to '''?'''
+
  {{admon/tip|Review Swaps| If nobody comments on your review request, you might want to mail to a mailing list (for example, {{fplist|devel}}) asking for a "review swap".  This is an offer to do a review of someone else's package in exchange for them reviewing your package.  This is usually one-for-one, or can be some other private arrangement depending on the difficulty of the respective packages. }}
# The reviewer will review your package. You should fix any blockers that the reviewer identifies. Once the reviewer is happy with the package, the '''fedora-review''' flag will be set to '''+''', indicating that the package has passed review.
+
<li> There may be comments from people that are not formally reviewing the package, they may add NotReady to the Whiteboard field, indication that the review request is not yet ready, because of some issues they report. After you have addressed them, please post the URLs to the updated SPEC and SRPM file and remove it from the Whiteboard.  It is expected that you will respond to commentary, including updating your submission to address it; if you do not, your ticket will be closed.
# At this point, you need to make an [[package SCM admin requests|SCM admin request]] for your newly approved package.
+
<li> A reviewer takes on the task of reviewing your package. They will set the '''fedora-review flag''' to '''?'''
# When this is complete, you can [[Using git FAQ for package maintainers#How_do_I_import_a_SRPM_package.3F|import your package]] into the SCM.
+
<li> The reviewer will review your package. You should fix any blockers that the reviewer identifies. Once the reviewer is happy with the package, the '''fedora-review''' flag will be set to '''+''', indicating that the package has passed review.
# Checkout the package using "fedpkg clone <package-name>" do a final check of spec file tags, etc.
+
<li> At this point, you need to make an [[package SCM admin requests|SCM admin request]] for your newly approved package.
# Request a build by running "fedpkg build".
+
<li> When this is complete, you can [[Using git FAQ for package maintainers#How_do_I_import_a_SRPM_package.3F|import your package]] into the SCM.
# Repeat the process for other branches you may have requested.
+
<li> Checkout the package using "fedpkg clone <package-name>" do a final check of spec file tags, etc.
# Request updates for Fedora release branches, if necessary, using "fedpkg update" or another Bodhi interface as detailed in [[Bodhi Guide]].
+
<li> Request a build by running "fedpkg build".
# You should make sure the review ticket is closed.  You are welcome to close it once the package has been built on the requested branches, or if you built for one of the Fedora release branches you can ask Bodhi to close the ticket for you when it completes the process.  If you close the ticket yourself, use '''NEXTRELEASE''' as the resolution.
+
<li> Repeat the process for other branches you may have requested.
 +
<li> Request updates for Fedora release branches, if necessary, using "fedpkg update" or another Bodhi interface as detailed in [[Bodhi]].
 +
<li> If possible, add your package to [[Upstream_release_monitoring|Upstream Release Monitoring]].
 +
<li> You should make sure the review ticket is closed.  You are welcome to close it once the package has been built on the requested branches, or if you built for one of the Fedora release branches you can ask Bodhi to close the ticket for you when it completes the process.  If you close the ticket yourself, use '''NEXTRELEASE''' as the resolution.
 +
</ol>
  
 
You do not need to go through the review process again for subsequent package changes.
 
You do not need to go through the review process again for subsequent package changes.
Line 51: Line 53:
  
 
The Reviewer is the person who chooses to review a package.
 
The Reviewer is the person who chooses to review a package.
 +
 +
{{admon/note|fedora-review tool|
 +
fedora-review is a very useful tool for handling some grunt work in the review process and it is highly recommended that you take advantage of it. yum install fedora-review and refer to the man page for more details.  Note, however that it is not a replacement for human input and you still need to understand the packaging guidelines thoroughly.
 +
}}
  
 
{{admon/note|Comments by other people|
 
{{admon/note|Comments by other people|
Line 58: Line 64:
 
The Reviewer can be any Fedora account holder, who is a member of the [https://admin.fedoraproject.org/accounts/group/members/packager/* packager group]. There is one exception: If it is the first package of a Contributor, the Reviewer must be a [https://admin.fedoraproject.org/accounts/group/members/packager/*/sponsor Sponsor]. You can check if a Contributor has already been sponsored by looking the e-mail address up in the [https://admin.fedoraproject.org/accounts/group/members/packager/* packager group of the account system].
 
The Reviewer can be any Fedora account holder, who is a member of the [https://admin.fedoraproject.org/accounts/group/members/packager/* packager group]. There is one exception: If it is the first package of a Contributor, the Reviewer must be a [https://admin.fedoraproject.org/accounts/group/members/packager/*/sponsor Sponsor]. You can check if a Contributor has already been sponsored by looking the e-mail address up in the [https://admin.fedoraproject.org/accounts/group/members/packager/* packager group of the account system].
  
# Search for a review request that needs a reviewer: http://fedoraproject.org/PackageReviewStatus/ ('''fedora-review flag''' is blank or the bug is assigned to nobody@fedoraproject.org)  
+
<ol>
# If you notice some issues that need to be solved before you want to start a formal review, add these issues in a comment and set the Whiteboard of the bug to contain NotReady. This helps other possible reviewers to notice that the review request is not yet ready for further review action.
+
<li> Search for a review request that needs a reviewer: http://fedoraproject.org/PackageReviewStatus/ ('''fedora-review flag''' is blank or the bug is assigned to nobody@fedoraproject.org)  
# if you want to formally review the package, set the '''fedora-review''' flag to '''?''' and assign the bug to yourself.
+
<li> If you notice some issues that need to be solved before you want to start a formal review, add these issues in a comment and set the Whiteboard of the bug to contain NotReady. This helps other possible reviewers to notice that the review request is not yet ready for further review action.
 +
<li> if you want to formally review the package, set the '''fedora-review''' flag to '''?''' and assign the bug to yourself.
 
{{admon/note|Stepping back from a Review|If you want to step back from the review for any reason, reset the <code>fedora-review</code> flag to be blank '''and''' reassign the bug to the default owner of the component, which is '''nobody@fedoraproject.org'''}}
 
{{admon/note|Stepping back from a Review|If you want to step back from the review for any reason, reset the <code>fedora-review</code> flag to be blank '''and''' reassign the bug to the default owner of the component, which is '''nobody@fedoraproject.org'''}}
# Review the package.
+
<li> Review the package ...
#* Go through the MUST items listed in [[Packaging:ReviewGuidelines| Review Guidelines]] .
+
<ul>
#* Go through the SHOULD items in [[Packaging:ReviewGuidelines| Review Guidelines]] .
+
  <li> Go through the MUST items listed in [[Packaging:ReviewGuidelines| Review Guidelines]] .
# Include the text of your review in a comment in the ticket.  For easy readability, simply use a regular comment instead of an attachment.
+
  <li> Go through the SHOULD items in [[Packaging:ReviewGuidelines| Review Guidelines]] .
# Take one of the following actions:
+
  <li>The [https://fedorahosted.org/FedoraReview/ FedoraReview] tool (packaged as fedora-review) can help to automate this process.
#* ACCEPT: If the package is good, set the '''fedora-review''' flag to '''+''' <BR>
+
</ul>
#*# If the Reviewer is also acting as Sponsor for the Contributor, then this is the time to sponsor the Contributor in the [https://admin.fedoraproject.org/accounts/ account system] .
+
</li>
#* FAIL, LEGAL: If the package is legally risky for whatever reason (known patent or copyright infringement, trademark concerns) close the bug WONTFIX and leave an appropriate comment (i.e. we don't ship mp3, so stop submitting it). Set the '''fedora-review''' flag to '''-''', and have the review ticket block FE-Legal.
+
<li> Include the text of your review in a comment in the ticket.  For easy readability, simply use a regular comment instead of an attachment.
#* FAIL, OTHER: If the package is just way off or unsuitable for some other reason, and there is no simple fix, then close the bug WONTFIX and leave an appropriate comment (i.e. we don't package pornography for redistribution, sorry. Or, this isn't a specfile, it's a McDonald's menu, sorry.) Set the '''fedora-review''' flag to '''-'''.
+
<li> Take one of the following actions:
#* NEEDSWORK: Anything that isn't explicitly failed should be left open while the submitter and reviewer work together to fix any potential issues. Mark the bug as NEEDINFO while waiting for the reviewer to respond to improvement requests; this makes it easier for reviewers to find open reviews which require their input.
+
<ul>
# Once a package is flagged as '''fedora-review +''' (or '''-'''), the Reviewer's job is done although they may be called upon to assist the Contributor with the import/build/update process and to sure that the Contributor closes the ticket out when the process is complete.
+
  <li> '''ACCEPT''' - If the package is good, set the '''fedora-review''' flag to '''+'''  
 +
{{admon/question|Time to sponsor?|If the Reviewer is also acting as Sponsor for the Contributor, then this is the time to sponsor the Contributor in the [https://admin.fedoraproject.org/accounts/ account system]}}
 +
  <li> '''FAIL, LEGAL''' - If the package is legally risky for whatever reason (known patent or copyright infringement, trademark concerns) close the bug WONTFIX and leave an appropriate comment (i.e. we don't ship mp3, so stop submitting it). Set the '''fedora-review''' flag to '''-''', and have the review ticket block FE-Legal.
 +
  <li> '''FAIL, OTHER''' - If the package is just way off or unsuitable for some other reason, and there is no simple fix, then close the bug WONTFIX and leave an appropriate comment (i.e. we don't package pornography for redistribution, sorry. Or, this isn't a specfile, it's a McDonald's menu, sorry.) Set the '''fedora-review''' flag to '''-'''.
 +
  <li> '''NEEDSWORK''' - Anything that isn't explicitly failed should be left open while the submitter and reviewer work together to fix any potential issues. Mark the bug as NEEDINFO while waiting for the reviewer to respond to improvement requests; this makes it easier for reviewers to find open reviews which require their input.
 +
</ul>
 +
<li> Once a package is flagged as '''fedora-review +''' (or '''-'''), the Reviewer's job is done although they may be called upon to assist the Contributor with the import/build/update process and to ensure that the Contributor closes the ticket out when the process is complete.
 +
</ol>
  
 
== Definitions for fedora-review Flag Settings ==
 
== Definitions for fedora-review Flag Settings ==
Line 106: Line 120:
 
|BuildFails||The package fails to build.
 
|BuildFails||The package fails to build.
 
|-
 
|-
|StalledSubmitter||The package review is stalled because the submitter is not responding.
+
|AwaitingSubmitter||The package review is stalled and cannot proceed without input from the submitter.
 +
|-
 +
|Trivial||The package is trivial to review.  See below.
 
|}
 
|}
  
 +
The "Trivial" status is intended to indicate packages which, as an aid to new reviewers, are especially uncomplicated and easy to review.  A ticket should not be marked as being trivial unless:
 +
* The package is known to build and a link to a scratch build is included.
 +
* The ticket explains any rpmlint output which is present.
 +
* The spec contains nothing which is unnecessary in modern Fedora (such as BuildRoot:, a %clean section or %defattr).
 +
* The spec is free from excessive or complicated macro usage.
 +
* The spec uses only the least complicated scriptlets which are taken directly from the [[Packaging:ScriptletSnippets]] page.
 +
* The package contains no daemons.
 +
* The package is not especially security sensitive.
 +
* The code has undergone a thorough inspection for licensing issues.  Anomalies which would be found by licensecheck should be explained.
 +
In short, this should be reserved only for those tickets which should be easily approachable by someone doing their first package review.
  
 
== Tracking of Package Requests ==
 
== Tracking of Package Requests ==
* [https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora&component=Package+Review&bug_status=NEW,ASSIGNED,NEEDINFO,MODIFIED&field0-0-0=flagtypes.name&type0-0-0=notsubstring&value0-0-0=fedora-review  New Review Requests] ([http://fedoraproject.org/PackageReviewStatus/NEW.html Cached for faster access])
+
 
* [https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora&component=Package+Review&bug_status=NEW,ASSIGNED,NEEDINFO,MODIFIED&field0-0-0=flagtypes.name&type0-0-0=equals&value0-0-0=fedora-review%3F Packages Currently Under Review]  ([http://fedoraproject.org/PackageReviewStatus/REVIEW.html Cached for faster access])
+
The [http://fedoraproject.org/PackageReviewStatus cached Package Review Tracker] provides various review-related reports and a simple way to search for reviews by package name or reporter name or others.
* [https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora&component=Package+Review&bug_status=NEW,ASSIGNED,NEEDINFO,MODIFIED&field0-0-0=flagtypes.name&type0-0-0=equals&value0-0-0=fedora-review%2B Packages Reviewed but not Closed]
+
  
 
[[Category:Package Maintainers]]
 
[[Category:Package Maintainers]]

Revision as of 18:19, 19 April 2013

Author: Tom 'spot' Callaway and others
Revision: 0.06
Initial Draft: 2007-03-12
Last Revised: 2010-11-13

Contents

Review Purpose

In order for a new package to be added to Fedora, the package must first undertake a formal review. The purpose of this formal review is to try to ensure that the package meets the quality control requirements for Fedora. This does not mean that the package (or the software being packaged) is perfect, but it should meet baseline minimum requirements for quality.

Reviews are currently done for totally new packages, package renames, old packages that were once deprecated returning to the collection, and packages merged from the old Fedora Core repository.

Review Process

There are two roles in the review process, that of the contributor and that of the reviewer. In this document, we'll present both perspectives.

Contributor

A Contributor is defined as someone who wants to submit (and maintain) a new package in Fedora. To become a contributor, you must follow the detailed instructions to Join the package collection maintainers.

As a Contributor, you should have already made a package which adheres to the Package Naming Guidelines and Packaging Guidelines. There are also some packages that cannot be included in Fedora, to check if your package applies, check if it contains any Forbidden items.

When you're happy with your spec file, you should then submit that SRPM to a package review. Currently, this is done by following these steps:

  1. Put your spec file and SRPM somewhere on the Internet.
  2. Fill out a request for review in bugzilla. For guidance, a screenshot of a sample bugzilla request is available for review.
    PackageReviewProcess review.png
  3. If you do not have any package already in Fedora, this means you need a sponsor and to add FE-NEEDSPONSOR to the bugs being blocked by your review request. For more information read the How to get sponsored into the packager group wiki page.
  4. Wait for someone to review your package! At this point in the process, the fedora-review flag is blank, meaning that no reviewer is assigned.
    Idea.png
    Review Swaps
    If nobody comments on your review request, you might want to mail to a mailing list (for example, devel) asking for a "review swap". This is an offer to do a review of someone else's package in exchange for them reviewing your package. This is usually one-for-one, or can be some other private arrangement depending on the difficulty of the respective packages.
  5. There may be comments from people that are not formally reviewing the package, they may add NotReady to the Whiteboard field, indication that the review request is not yet ready, because of some issues they report. After you have addressed them, please post the URLs to the updated SPEC and SRPM file and remove it from the Whiteboard. It is expected that you will respond to commentary, including updating your submission to address it; if you do not, your ticket will be closed.
  6. A reviewer takes on the task of reviewing your package. They will set the fedora-review flag to ?
  7. The reviewer will review your package. You should fix any blockers that the reviewer identifies. Once the reviewer is happy with the package, the fedora-review flag will be set to +, indicating that the package has passed review.
  8. At this point, you need to make an SCM admin request for your newly approved package.
  9. When this is complete, you can import your package into the SCM.
  10. Checkout the package using "fedpkg clone <package-name>" do a final check of spec file tags, etc.
  11. Request a build by running "fedpkg build".
  12. Repeat the process for other branches you may have requested.
  13. Request updates for Fedora release branches, if necessary, using "fedpkg update" or another Bodhi interface as detailed in Bodhi.
  14. If possible, add your package to Upstream Release Monitoring.
  15. You should make sure the review ticket is closed. You are welcome to close it once the package has been built on the requested branches, or if you built for one of the Fedora release branches you can ask Bodhi to close the ticket for you when it completes the process. If you close the ticket yourself, use NEXTRELEASE as the resolution.

You do not need to go through the review process again for subsequent package changes.

Reviewer

The Reviewer is the person who chooses to review a package.

Note.png
fedora-review tool
fedora-review is a very useful tool for handling some grunt work in the review process and it is highly recommended that you take advantage of it. yum install fedora-review and refer to the man page for more details. Note, however that it is not a replacement for human input and you still need to understand the packaging guidelines thoroughly.
Note.png
Comments by other people
Other people are encouraged to comment on the review request as well. Especially people searching for sponsorship should comment other review requests to show, that they know the Packaging Guidelines.

The Reviewer can be any Fedora account holder, who is a member of the packager group. There is one exception: If it is the first package of a Contributor, the Reviewer must be a Sponsor. You can check if a Contributor has already been sponsored by looking the e-mail address up in the packager group of the account system.

  1. Search for a review request that needs a reviewer: http://fedoraproject.org/PackageReviewStatus/ (fedora-review flag is blank or the bug is assigned to nobody@fedoraproject.org)
  2. If you notice some issues that need to be solved before you want to start a formal review, add these issues in a comment and set the Whiteboard of the bug to contain NotReady. This helps other possible reviewers to notice that the review request is not yet ready for further review action.
  3. if you want to formally review the package, set the fedora-review flag to ? and assign the bug to yourself.
    Note.png
    Stepping back from a Review
    If you want to step back from the review for any reason, reset the fedora-review flag to be blank and reassign the bug to the default owner of the component, which is nobody@fedoraproject.org
  4. Review the package ...
  5. Include the text of your review in a comment in the ticket. For easy readability, simply use a regular comment instead of an attachment.
  6. Take one of the following actions:
    • ACCEPT - If the package is good, set the fedora-review flag to +
      Questionmark.png
      Time to sponsor?
      If the Reviewer is also acting as Sponsor for the Contributor, then this is the time to sponsor the Contributor in the account system
    • FAIL, LEGAL - If the package is legally risky for whatever reason (known patent or copyright infringement, trademark concerns) close the bug WONTFIX and leave an appropriate comment (i.e. we don't ship mp3, so stop submitting it). Set the fedora-review flag to -, and have the review ticket block FE-Legal.
    • FAIL, OTHER - If the package is just way off or unsuitable for some other reason, and there is no simple fix, then close the bug WONTFIX and leave an appropriate comment (i.e. we don't package pornography for redistribution, sorry. Or, this isn't a specfile, it's a McDonald's menu, sorry.) Set the fedora-review flag to -.
    • NEEDSWORK - Anything that isn't explicitly failed should be left open while the submitter and reviewer work together to fix any potential issues. Mark the bug as NEEDINFO while waiting for the reviewer to respond to improvement requests; this makes it easier for reviewers to find open reviews which require their input.
  7. Once a package is flagged as fedora-review + (or -), the Reviewer's job is done although they may be called upon to assist the Contributor with the import/build/update process and to ensure that the Contributor closes the ticket out when the process is complete.

Definitions for fedora-review Flag Settings

fedora-review (BLANK) Package Needs Review
fedora-review ? Package Under Review
fedora-review - Package Failed Review, dropped for legal or other issues.
fedora-review + Package Approved

Special blocker tickets

There are a few tickets which can be placed in the "Blocks" field to indicate specific ticket statuses:

FE-NEEDSPONSOR The submitter requires a sponsor; the review should only be done by a sponsor.
FE-DEADREVIEW The review has been closed out because the submitter has left; users looking for packages to submit may find some possibilities in these dead tickets.
FE-Legal The package is currently awaiting review by the legal team.

The Whiteboard

To save time for reviewers, the page at http://fedoraproject.org/PackageReviewStatus/NEW.html will hide certain tickets which are not reviewable. The Whiteboard field can be used to mark a ticket with various additional bits of status which will cause it to be hidden or displayed differently.

NotReady The package is not yet ready for review. It is possible to open a review ticket, mark it as NotReady, and continue to work on it until it's ready to be seen by a reviewer.
BuildFails The package fails to build.
AwaitingSubmitter The package review is stalled and cannot proceed without input from the submitter.
Trivial The package is trivial to review. See below.

The "Trivial" status is intended to indicate packages which, as an aid to new reviewers, are especially uncomplicated and easy to review. A ticket should not be marked as being trivial unless:

  • The package is known to build and a link to a scratch build is included.
  • The ticket explains any rpmlint output which is present.
  • The spec contains nothing which is unnecessary in modern Fedora (such as BuildRoot:, a %clean section or %defattr).
  • The spec is free from excessive or complicated macro usage.
  • The spec uses only the least complicated scriptlets which are taken directly from the Packaging:ScriptletSnippets page.
  • The package contains no daemons.
  • The package is not especially security sensitive.
  • The code has undergone a thorough inspection for licensing issues. Anomalies which would be found by licensecheck should be explained.

In short, this should be reserved only for those tickets which should be easily approachable by someone doing their first package review.

Tracking of Package Requests

The cached Package Review Tracker provides various review-related reports and a simple way to search for reviews by package name or reporter name or others.