summaryrefslogtreecommitdiffstats
path: root/share/doc/handbook/policies.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'share/doc/handbook/policies.sgml')
-rw-r--r--share/doc/handbook/policies.sgml230
1 files changed, 0 insertions, 230 deletions
diff --git a/share/doc/handbook/policies.sgml b/share/doc/handbook/policies.sgml
deleted file mode 100644
index 094de26..0000000
--- a/share/doc/handbook/policies.sgml
+++ /dev/null
@@ -1,230 +0,0 @@
-<!-- $Id: policies.sgml,v 1.13 1997/04/03 01:07:38 max Exp $ -->
-<!-- The FreeBSD Documentation Project -->
-
-<chapt><heading>Source Tree Guidelines and Policies
-<label id="policies">
-</heading>
-
-<p><em>Contributed by &a.phk;.</em>
-
-This chapter documents various guidelines and policies in force
-for the FreeBSD source tree.
-
-<sect><heading>MAINTAINER on Makefiles
-<label id="policies:maintainer">
-</heading>
-
-<p>June 1996.
-
-<p>If a particular portion of the FreeBSD distribution is being maintained by a
-person or group of persons, they can communicate this fact to the
-world by adding a
-
-<verb>
- MAINTAINER= email-addresses
-</verb>
-
-<p>line to the makefiles covering this portion of the source tree.
-
-<p>The semantics of this are as follows:
-
-<p>The maintainer owns and is responsible for that code. This means
-that he is responsible for fixing bugs and answer problem reports
-pertaining to that piece of the code, and in the case of contributed
-software, for tracking new versions, as appropriate.
-
-<p>Changes to directories which have a maintainer defined shall be
-sent to the
-maintainer for review before being committed. Only if the maintainer does not respond
-for an unacceptable period of time, to several emails, will it be
-acceptable to commit changes without review by the maintainer.
-However, it is suggested that you try and have the changes reviewed
-by someone else if at all possible.
-
-<p>It is of course not acceptable to add a person or group as maintainer
-unless they agree to assume this duty. On the other hand it doesn't
-have to be a committer and it can easily be a group of people.
-
-<sect><heading>Contributed software</heading>
-
-<p>June 1996.
-
-<p>Some parts of the FreeBSD distribution consist of software that
-is actively being maintained outside the FreeBSD project. For
-historical reasons, we call this <em>contributed</em> software. Some
-examples are perl, gcc and patch.
-
-<p>Over the last couple of years, various methods have been used in
-dealing with this type of software and all have some number of
-advantages and drawbacks. No clear winner has emerged.
-
-<p>Since this is the case, after some debate one of these methods has
-been selected as the "official" method and will be required for
-future imports of software of this kind. Furthermore, it is strongly
-suggested that existing contributed software converge on this model
-over time, as it has significant advantages over the old method,
-including the ability to easily obtain diffs relative to the
-"official" versions of the source by everyone (even without cvs
-access). This will make it significantly easier to return changes
-to the primary developers of the contributed software.
-
-<p>Ultimately, however, it comes down to the people actually doing
-the work. If using this model is particularly unsuited to the
-package being dealt with, exceptions to these rules may be granted
-only with the approval of the core team and with the general
-consensus of the other developers. The ability to maintain the
-package in the future will be a key issue in the decisions.
-
-<p>The <tt>Tcl</tt> embedded programming language will be used as example
-of how this model works:
-
-<p><verb>src/contrib/tcl</verb> contains the source as distributed by the maintainers
-of this package. Parts that are entirely not applicable for FreeBSD
-can be removed. In the case of Tcl, the "mac", "win" and "compat"
-subdirectories were eliminated before the import
-
-<p><verb>src/lib/libtcl</verb> contains only a "bmake style" Makefile that uses
-the standard bsd.lib.mk makefile rules to produce the library and
-install the documentation.
-
-<p><verb>src/usr.bin/tclsh</verb> contains only a bmake style Makefile which will
-produce and install the "tclsh" program and its associated man-pages
-using the standard bsd.prog.mk rules.
-
-<p><verb>src/tools/tools/tcl_bmake</verb> contains a couple of shell-scripts that can be of help
-when the tcl software needs updated, these are not part of the
-build or installed software.
-
-<p>The important thing here is that the "src/contrib/tcl" directory
-is created according to the rules: It is supposed to contain the
-sources as distributed (on a proper CVS vendor-branch) with as few
-FreeBSD-specific changes as possible. The 'easy-import' tool on
-freefall will assist in doing the import, but if there are any
-doubts on how to go about it, it is imperative that you ask first
-and not blunder ahead and hope it "works out". CVS is not forgiving
-of import accidents and a fair amount of effort is required to back
-out major mistakes.
-
-<p>Because of some unfortunate design limitations with CVS's vendor
-branches, it is required that "official" patches from the vendor
-be applied to the original distributed sources and the result
-re-imported onto the vendor branch again. Official patches should
-never be patched into the FreeBSD checked out version and
-"committed", as this destroys the vendor branch coherency and makes
-importing future versions rather difficult as there will be conflicts.
-
-<p>Since many packages contain files that are meant for compatibility
-with other architectures and environments that FreeBSD, it is
-permissible to remove parts of the distribution tree that are of no interest
-to FreeBSD in order to save space. Files containing copyright
-notices and release-note kind of information applicable to the
-remaining files shall <em>not</em> be removed.
-
-<p>If it seems easier, the "bmake" makefiles can be produced from the
-dist tree automatically by some utility, something which would
-hopefully make it even easier to upgrade to a new version. If this
-is done, be sure to check in such utilities (as necessary) in the
-src/tools directory along with the port itself so that it is available
-to future maintainers.
-
-<p>In the src/contrib/tcl level directory, a file called FREEBSD-upgrade
-should be added and it should states things like:
-
-<itemize>
- <item> Which files have been left out
- <item> Where the original distribution was obtained from and/or the official
- master site.
- <item> Where to send patches back to the original authors
- <item> Perhaps an overview of the FreeBSD-specific changes that have been made.
-</itemize>
-
-<p>However, please do not import FREEBSD-upgrade with the contributed source.
-Rather you should ``cvs add FREEBSD-upgrade ; cvs ci'' after the
-initial import. Example wording from ``src/contrib/cpio'' is below:
-
-<verb>This directory contains virgin sources of the original distribution files
-on a "vendor" branch. Do not, under any circumstances, attempt to upgrade
-the files in this directory via patches and a cvs commit. New versions or
-official-patch versions must be imported.
-
-For the import of GNU cpio 2.4.2, the following files were removed:
-
- INSTALL cpio.info mkdir.c
- Makefile.in cpio.texi mkinstalldirs
-
-To upgrade to a newer version of cpio, when it is available:
- 1. Unpack the new version into an empty directory.
- [Do not make ANY changes to the files.]
-
- 2. Remove the files listed above and any others that don't apply to
- FreeBSD.
-
- 3. Use the command:
- cvs import -m 'Virgin import of GNU cpio v<version>' \
- src/contrib/cpio GNU v<version>
-
- For example, to do the import of version 2.4.2, I typed:
- cvs import -m 'Virgin import of GNU v2.4.2' \
- src/contrib/cpio GNU v2.4.2
-
- 4. Follow the instructions printed out in step 3 to resolve any
- conflicts between local FreeBSD changes and the newer version.
-
-Do not, under any circumstances, deviate from this procedure.
-
-To make local changes to cpio, simply patch and commit to the main
-branch (aka HEAD). Never make local changes on the GNU branch.
-
-All local changes should be submitted to "cpio@gnu.ai.mit.edu" for
-inclusion in the next vendor release.
-
-obrien@freebsd.org - 30 March 1997</verb>
-
-
-<sect><heading>Shared libraries
-<label id="policies:shlib">
-</heading>
-
-<p><em>Contributed by &a.asami;, &a.peter;, and &a.obrien;.
- <newline>9 December 1996.</em></p>
-
- <p>If you are adding shared library support to a port or other piece
- of software that doesn't have one, the version numbers should
- follow these rules. Generally, the resulting numbers will have
- nothing to do with the release version of the software.
-
- <p>The three principles of shared library building are:
-
- <itemize>
- <item>Start from 1.0
- <item>If there is a change that is backwards compatible, bump
- minor number
- <item>If there is an incompatible change, bump major number
- </itemize>
-
- <p>For instance, added functions and bugfixes result in the minor
- version number being bumped, while deleted functions, changed
- function call syntax etc. will force the major version number
- to change.
-
- <p>Stick to version numbers of the form major.minor (x.y). Our dynamic
- linker does not handle version numbers of the form x.y.z well. Any
- version number after the ``y'' (ie. the third digit) is totally ignored
- when comparing shared lib version numbers to decide which library to
- link with. Given two shared libraries that differ only in the `micro'
- revision, ld.so will link with the higher one. Ie: if you link with
- libfoo.so.3.3.3, the linker only records 3.3 in the headers, and will
- link with anything starting with libfoo.so.3.(anything >= 3).(highest
- available).
- <p>Note that ld.so will always use the highest "minor" revision.
- Ie: it will use libc.so.2.2 in preference to libc.so.2.0, even if the
- program was initially linked with libc.so.2.0.
-
- <p>For non-port libraries, it is also our policy to change the
- shared library version number only once between releases. When
- you make a change to a system library that requires the version
- number to be bumped, check the Makefile's commit logs. It is the
- responsibility of the committer to ensure that the first such
- change since the release will result in the shared library version
- number in the Makefile to be updated, and any subsequent changes
- will not.
OpenPOWER on IntegriCloud