- Move includes.nav*.sgml to share/sgml/navibar.ent and
   <lang>/share/sgml/nabibar.l10n.ent.
 - Move includes.sgml and includes.xsl to
   share/sgml/common.ent, share/sgml/header.ent, <lang>/share/sgml/l10n.ent,
   and <lang>?share/sgml/header.l10n.ent.
 - Move most of XSLT libraries to share/sgml/*.xsl and
   <lang>/share/sgml/*.xsl.
 - Move news.xml and other *.xml files for the similar purpose
   to share/sgml/*.xml and <lang>/share/sgml/*.xml.
 - Switch to use a custom DTD for HTML document.  Now we use
   "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension", which is
   HTML 4.01 + some entities previously pulled via
   "<!ENTITY % includes SYSTEM "includes.sgml"> %includes;" line.
   The location of entity file will be resolved by using catalog file.
 - Add DOCTYPE declearation to XML documents.  This makes the followings
   possible:
   * Use of &foo; entities for SGML in an XML file instead of defining
     {$foo} as the same content.
   * &symbolic; entities for Latin characters.
 - Duplicated information between SGML and XML, or English and
   translated doc, has been removed as much as possible.
		
	
			
		
			
				
	
	
		
			180 lines
		
	
	
	
		
			6.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			180 lines
		
	
	
	
		
			6.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
<!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [
 | 
						|
<!ENTITY base CDATA "..">
 | 
						|
<!ENTITY date "$FreeBSD: www/en/portmgr/qa.sgml,v 1.4 2005/12/15 01:10:43 linimon Exp $">
 | 
						|
<!ENTITY title "Quality Assurance Tasks for the Ports Management Team">
 | 
						|
<!ENTITY % navinclude.about "INCLUDE">
 | 
						|
]>
 | 
						|
 | 
						|
<html>
 | 
						|
&header;
 | 
						|
 | 
						|
<p>There are a number of tasks that the Ports Management Team undertakes
 | 
						|
to try to improve the quality of the Ports Collection.  These fall into
 | 
						|
two main categories:
 | 
						|
<a href="#qa-before-release">activities during a release cycle</a> and
 | 
						|
<a href="#qa-between-releases">activities between release cycles</a>.
 | 
						|
</p>
 | 
						|
 | 
						|
<h3><a name="qa-before-release">Activities During a Release Cycle</a></h3>
 | 
						|
 | 
						|
<ul>
 | 
						|
  <li>
 | 
						|
    <p>Work with the
 | 
						|
      <a href="../releng/index.html">Release Engineering Team</a>
 | 
						|
      to coordinate the release schedule.</p>
 | 
						|
  </li>
 | 
						|
    
 | 
						|
  <li>
 | 
						|
    <p>Work with the RE team to determine which pre-built packages
 | 
						|
      can be included on the default install ISOs.</p>
 | 
						|
  </li>
 | 
						|
    
 | 
						|
  <li>
 | 
						|
    <p>Manage commits to the CVS tree for package builds via the
 | 
						|
      following steps:</p>
 | 
						|
 | 
						|
    <ol>
 | 
						|
      <li>
 | 
						|
	<p>Institute a freeze and produce packages for all the
 | 
						|
	  appropriate architectures.  Often this process has to be
 | 
						|
	  repeated because either bugs are identified in various ports,
 | 
						|
          or changes to the src tree create a risk that the packages
 | 
						|
	  that have already been built would not work with those
 | 
						|
	  changes.</p>
 | 
						|
 | 
						|
	<p>To make sure that package builds are consistent and correct,
 | 
						|
	  <i>all</i> commits must be approved by portmgr during a
 | 
						|
	  freeze.  Changes that are generally approved are:</p>
 | 
						|
 | 
						|
	  <ul>
 | 
						|
	    <li><p>fixes to make a package build at all;</p></li>
 | 
						|
	    <li><p>security fixes to critical packages;</p></li>
 | 
						|
	    <li><p>problems that are noticed with licensing issues.</p></li>
 | 
						|
	  </ul>
 | 
						|
 | 
						|
	<p>Unfortunately, due to the sheer size of the Ports Collection
 | 
						|
	  and the speed that applications are developed, it is
 | 
						|
	  impossible to fix every single problem for a release.</p>
 | 
						|
      </li>
 | 
						|
 | 
						|
      <li>
 | 
						|
	<p>The tree is then locked for all commits and a CVS tag is laid
 | 
						|
	  down.</p>
 | 
						|
      </li>
 | 
						|
 | 
						|
      <li>
 | 
						|
	<p>The tree is then unlocked and a <tt>slush</tt> is
 | 
						|
	  announced.  The intent of this state is to allow routine
 | 
						|
	  changes to be made to the Ports Collection, but with the note
 | 
						|
	  that these changes will not ship on the release ISOs.  What
 | 
						|
	  we particularly want to avoid is
 | 
						|
	  <a href="implementation.html#sweeping_changes">
 | 
						|
	  sweeping changes</a>.</p>
 | 
						|
 | 
						|
	<p>The reason we want to avoid these commits is if some kind
 | 
						|
	  of show-stopper problem is found (either security- or license-
 | 
						|
	  related) such that we need to make a change that can go on
 | 
						|
	  the release ISOs, we will need to slip the CVS tag on the
 | 
						|
	  changed file(s).  By allowing unlimited commits, the risk is
 | 
						|
	  high that any such change would involve having to recreate all
 | 
						|
	  the packages all over again, resulting in an endless release
 | 
						|
	  cycle.</p>
 | 
						|
      </li>
 | 
						|
    </ol>
 | 
						|
 | 
						|
    <p>Only once the RE team and portmgr are happy with the final
 | 
						|
      state of the release ISOs is the ports tree completely available
 | 
						|
      for commits again.</p>
 | 
						|
  </li>
 | 
						|
 | 
						|
</ul>
 | 
						|
 | 
						|
<h3><a name="qa-between-releases">Activities Between Release Cycles</a></h3>
 | 
						|
 | 
						|
<ul>
 | 
						|
  <li>
 | 
						|
    <p>Manage the <a href="http://pointyhat.FreeBSD.org">Ports Build
 | 
						|
      Cluster</a> machines.  These machines continually build packages
 | 
						|
      on all possible combinations of OS release and CPU architecture
 | 
						|
      (in our terminology, <tt>build environments</tt>.)</p>
 | 
						|
 | 
						|
    <p>These builds also produce error logs for packages that do not
 | 
						|
      build correctly (see the above URL).  Periodically, the team
 | 
						|
      marks these ports as BROKEN so that maintainers may be notified.
 | 
						|
      (See below.)</p>
 | 
						|
 | 
						|
    <p>Successfully built packages (at least, the ones that are freely
 | 
						|
      redistributable) are also copied to the master FTP server and thus
 | 
						|
      become the default "latest package" for installations
 | 
						|
      that use packages rather than ports.</p>
 | 
						|
  </li>
 | 
						|
 | 
						|
  <li>
 | 
						|
    <p>Notify the FreeBSD community of problems within the Ports
 | 
						|
      Collection so that problems do not get overlooked.  To do this,
 | 
						|
      there are a number of emailed reports.  Ones marked
 | 
						|
      <tt>public</tt> are posted to freebsd-ports.</p>
 | 
						|
 | 
						|
    <ul>
 | 
						|
 | 
						|
      <li><p>a public list of all ports to be removed due to security
 | 
						|
	problems, build failures, or general obsolescence, unless they
 | 
						|
	are fixed first.</p></li>
 | 
						|
 | 
						|
      <li><p>private email to all maintainers of the affected ports
 | 
						|
	(including ports dependent on the above).</p></li>
 | 
						|
 | 
						|
      <li><p>private email to all maintainers of ports that are already
 | 
						|
	marked BROKEN and/or FORBIDDEN.</p></li>
 | 
						|
 | 
						|
      <li><p>private email to maintainers who are not committers, who have
 | 
						|
	PRs filed against their ports (to flag PRs that might never have
 | 
						|
	been Cc:ed to them).</p></li>
 | 
						|
 | 
						|
      <li><p>public email about port commits that break building of
 | 
						|
	INDEX.</p></li>
 | 
						|
 | 
						|
      <li><p>public email about port commits that send the revision
 | 
						|
	metadata backwards (and thus confuse tools like portupgrade).</p></li>
 | 
						|
 | 
						|
      <li><p>a public list of all ports that have at least one file
 | 
						|
	that fails to fetch from any non-FreeBSD mastersite.  For the
 | 
						|
	complete list of results for all files versus all mastersites,
 | 
						|
	see <a href="http://people.FreeBSD.org/~fenner/portsurvey/">
 | 
						|
	Bill Fenner's port survey</a>.</p></li>
 | 
						|
 | 
						|
      <li><p>private email to an affected port maintainer when a port 
 | 
						|
	is about to be marked BROKEN, Cc:ed to the last committer to
 | 
						|
	the port.  (This email is not automated but it should be sent
 | 
						|
	as a courtesy.)</p></li>
 | 
						|
 | 
						|
      <li><p>a list of ports that do not set NO_LATEST_LINK.  (Ports
 | 
						|
	that have a stable version, and a development version, will
 | 
						|
	generally have the development version set to a later revision.
 | 
						|
	If it is desireable that users should install the stable version
 | 
						|
	from packages, rather than the development version, this flag
 | 
						|
	should be set; otherwise, users will get the latest version by
 | 
						|
	default.)</p></li>
 | 
						|
 | 
						|
    </ul>
 | 
						|
 | 
						|
  </li>
 | 
						|
 | 
						|
  <li>
 | 
						|
    <p>Remove expired ports.  Ports that have been marked BROKEN for
 | 
						|
      some time are marked DEPRECATED (with an EXPIRATION_DATE) and then
 | 
						|
      are removed if no one has fixed them by that time.  The intent of
 | 
						|
      this this process is to try to insure that if a user installs a port,
 | 
						|
      there is the best possible change that it can be made to work.</p>
 | 
						|
 | 
						|
    <p>In other cases, ports are marked DEPRECATED when they have been
 | 
						|
      replaced by a newer version and the older version is no longer
 | 
						|
      maintained by the authors.  The EXPIRATION_DATE should generally
 | 
						|
      be set at least two months in the future to allow everyone sufficient
 | 
						|
      time to upgrade.</p>
 | 
						|
  </li>
 | 
						|
</ul>
 | 
						|
 | 
						|
&footer;
 | 
						|
</body>
 | 
						|
</html>
 |