aboutsummaryrefslogtreecommitdiff
path: root/en_US.ISO8859-1/articles/committers-guide
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2019-11-21 17:38:49 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2019-11-21 17:38:49 +0000
commit2df62d170d7ab12d99bee34ffa8988ced2e95063 (patch)
treed466755286cea677077cd2f6d700dc59b1032280 /en_US.ISO8859-1/articles/committers-guide
parenta29c43d60a7946065a424d9b63a75d5ceec58194 (diff)
Notes
Diffstat (limited to 'en_US.ISO8859-1/articles/committers-guide')
-rw-r--r--en_US.ISO8859-1/articles/committers-guide/article.xml436
1 files changed, 299 insertions, 137 deletions
diff --git a/en_US.ISO8859-1/articles/committers-guide/article.xml b/en_US.ISO8859-1/articles/committers-guide/article.xml
index 369af10b3c..32c94c627f 100644
--- a/en_US.ISO8859-1/articles/committers-guide/article.xml
+++ b/en_US.ISO8859-1/articles/committers-guide/article.xml
@@ -4002,170 +4002,332 @@ Relnotes: yes</programlisting>
documentation team, security officer, and release engineering
teams. Diversity in hardware support broadens the options for
&os; consumers by offering new features and usage
- opportunities (such as support for 64-bit CPUs, use in
- embedded environments, etc.), but these benefits must always
+ opportunities, but these benefits must always
be carefully considered in terms of the real-world maintenance
cost associated with additional platform support.</para>
- <para>The &os; Project differentiates platform targets into
- four tiers. Each tier includes a specification of the
- requirements for an architecture to be in that tier,
- as well as specifying the obligations of developers with
- regards to the platform. In addition, a policy is defined
- regarding the circumstances required to change the tier
- of an architecture.</para>
+ <para>The &os; Project differentiates platform targets into four
+ tiers. Each tier includes a list of guarantees consumers may
+ rely on as well as obligations by the Project and developers
+ to fulfill those guarantees. These lists define the minimum
+ guarantees for each tier. The Project and developers may
+ provide additional levels of support beyond the minimum
+ guarantees for a given tier, but such additional support is
+ not guaranteed. Each platform target is assigned to a
+ specific tier for each stable branch. As a result, a platform
+ target might be assigned to different tiers on concurrent
+ stable branches.</para>
</sect2>
<sect2>
- <title>Tier 1: Fully Supported Architectures</title>
-
- <para>Tier 1 platforms are fully supported by the security
- officer, release engineering, and toolchain maintenance staff.
- New features added to the operating system must be fully
- functional across all Tier 1 architectures for every release
- (features which are inherently architecture-specific, such as
- support for hardware device drivers, may be exempt from this
- requirement). In general, all Tier 1 platforms must have
- build and test automation support either in the FreeBSD.org
- cluster, or easily available for all developers. Embedded
- platforms may substitute an emulator available in the
- FreeBSD.org cluster for actual hardware.</para>
-
- <para>Tier 1 architectures are expected to be Production Quality
- with respects to all aspects of the &os; operating system,
- including installation and development environments.</para>
-
- <para>Tier 1 architectures are expected to be completely
- integrated into the source tree and have all features
- necessary to produce an entire system relevant for that target
- architecture. Tier 1 architectures generally have at least 6
- active developers.</para>
-
- <para>Tier 1 architectures are expected to be fully supported by
- the ports system. All the ports should build on a Tier 1
- platform, or have the appropriate filters to prevent the
- inappropriate ones from building there. The packaging system
- must support all Tier 1 architectures. To ensure an
- architecture's Tier 1 status, proponents of that architecture
- must show that all relevant packages can be built on that
- platform.</para>
-
- <para>Tier 1 embedded architectures must be able to cross-build
- packages on at least one other Tier 1 architecture. The
- packages must be the most relevant for the platform, but may
- be a non-empty subset of those that build natively.</para>
-
- <para>Tier 1 architectures must be fully documented. All basic
- operations need to be covered by the handbook or other
- documents. All relevant integration documentation must also
- be integrated into the tree, or readily available.</para>
-
- <para>Current Tier 1 platforms are &arch.i386; and
- &arch.amd64;.</para>
+ <title>Platform Targets</title>
+
+ <para>Support for a hardware platform consists of two
+ components: kernel support and userland Application Binary
+ Interfaces (ABIs). Kernel platform support includes things
+ needed to run a &os; kernel on a hardware platform such as
+ machine-dependent virtual memory management and device
+ drivers. A userland ABI specifies an interface for user
+ processes to interact with a &os; kernel and base system
+ libraries. A userland ABI includes system call interfaces,
+ the layout and semantics of public data structures, and the
+ layout and semantics of arguments passed to subroutines. Some
+ components of an ABI may be defined by specifications such as
+ the layout of C++ exception objects or calling conventions for
+ C functions.</para>
+
+ <para>A &os; kernel also uses an ABI (sometimes referred to as
+ the Kernel Binary Interface (KBI)) which includes the
+ semantics and layouts of public data structures and the layout
+ and semantics of arguments to public functions within the
+ kernel itself.</para>
+
+ <para>A &os; kernel may support multiple userland ABIs. For
+ example, &os;'s amd64 kernel supports &os; amd64 and i386
+ userland ABIs as well as Linux x86_64 and i386 userland ABIs.
+ A &os; kernel should support a <quote>native</quote> ABI as
+ the default ABI. The native <quote>ABI</quote> generally
+ shares certain properties with the kernel ABI such as the C
+ calling convention, sizes of basic types, etc.</para>
+
+ <para>Tiers are defined for both kernels and userland ABIs. In
+ the common case, a platform's kernel and &os; ABIs are
+ assigned to the same tier.</para>
</sect2>
<sect2>
- <title>Tier 2: Developmental Architectures</title>
-
- <para>Tier 2 platforms are not supported by the security officer
- and release engineering teams. Platform maintainers are
- responsible for toolchain support in the tree. The toolchain
- maintainers are expected to work with the platform maintainers
- to refine these changes. Major new toolchain components are
- allowed to break support for Tier 2 architectures if the
- &os;-local changes have not been incorporated upstream.
- The toolchain maintainers are expected to provide prompt
- review of any proposed changes and cannot block, through their
- inaction, changes going into the tree. New features added to
- &os; should be feasible to implement on these platforms,
- but an implementation is not required before the feature may
- be added to the &os; source tree. New features that may be
- difficult to implement on Tier 2 architectures should provide
- a means of disabling them on those architectures. The
- implementation of a Tier 2 architecture may be committed to
- the main &os; tree as long as it does not interfere with
- production work on Tier 1 platforms, or substantially with
- other Tier 2 platforms. Before a Tier 2 platform can be added
- to the &os; base source tree, the platform must be able to
- boot multi-user on actual hardware. Generally, there must be
- at least three active developers working on the
- platform.</para>
-
- <para>Tier 2 architectures are usually systems targeted at Tier
- 1 support, but that are still under development.
- Architectures reaching end of life may also be moved from Tier
- 1 status to Tier 2 status as the availability of resources to
- continue to maintain the system in a Production Quality state
- diminishes. Well supported niche architectures may also be
- Tier 2.</para>
-
- <para>Tier 2 architectures have basic support for them
- integrated into the ports infrastructure. They may have cross
- compilation support added, at the discretion of portmgr. Some
- ports must built natively into packages if the package system
- supports that architecture. If not integrated into the base
- system, some external patches for the architecture for ports
- must be available.</para>
-
- <para>Tier 2 architectures can be integrated into the &os;
- handbook. The basics for how to get a system running must be
- documented, although not necessarily for every single board or
- system a Tier 2 architecture supports. The supported hardware
- list must exist and be relatively recent. It should be
- integrated into the &os; documentation.</para>
-
- <para>Current Tier 2 platforms are &arch.arm;, &arch.arm64;,
- &arch.mips;, &arch.powerpc;, and &arch.sparc64;.</para>
+ <title>Tier 1: Fully-Supported Architectures</title>
+
+ <para>Tier 1 platforms are the most mature &os; platforms.
+ They are supported by the security officer, release
+ engineering, and port management teams. Tier 1 architectures
+ are expected to be Production Quality with respect to all
+ aspects of the &os; operating system, including installation
+ and development environments.</para>
+
+ <para>The &os; Project provides the following guarantees to
+ consumers of Tier 1 platforms:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Official &os; release images will be provided by the
+ release engineering team.</para>
+ </listitem>
+ <listitem>
+ <para>Binary updates and source patches for Security
+ Advisories and Errata Notices will be provided for
+ supported releases.</para>
+ </listitem>
+ <listitem>
+ <para>Source patches for Security Advisories will be
+ provided for supported branches.</para>
+ </listitem>
+ <listitem>
+ <para>Binary updates and source patches for cross-platform
+ Security Advisories will typically be provided at the time
+ of the announcement.</para>
+ </listitem>
+ <listitem>
+ <para>Changes to userland ABIs will generally include
+ compatibility shims to ensure correct operation of
+ binaries compiled against any stable branch where the
+ platform is Tier 1. These shims might not be enabled in
+ the default install. If compatibility shims are not
+ provided for an ABI change, the lack of shims will be
+ clearly documented in the release notes.</para>
+ </listitem>
+ <listitem>
+ <para>Changes to certain portions of the kernel ABI will
+ include compatibility shims to ensure correct operation of
+ kernel modules compiled against the oldest supported
+ release on the branch. Note that not all parts of the
+ kernel ABI are protected.</para>
+ </listitem>
+ <listitem>
+ <para>Official binary packages for third party software will
+ be provided by the ports team. For embedded
+ architectures, these packages may be cross-built from a
+ different architecture.</para>
+ </listitem>
+ <listitem>
+ <para>Most relevant ports should either build or have the
+ appropriate filters to prevent inappropriate ones from
+ building.</para>
+ </listitem>
+ <listitem>
+ <para>New features which are not inherently
+ platform-specific will be fully functional on all Tier 1
+ architectures.</para>
+ </listitem>
+ <listitem>
+ <para>Features and compatibility shims used by binaries
+ compiled against older stable branches may be removed in
+ newer major versions. Such removals will be clearly
+ documented in the release notes.</para>
+ </listitem>
+ <listitem>
+ <para>Tier 1 platforms should be fully documented. Basic
+ operations will be documented in the &os; Handbook.</para>
+ </listitem>
+ <listitem>
+ <para>Tier 1 platforms will be included in the source
+ tree.</para>
+ </listitem>
+ <listitem>
+ <para>Tier 1 platforms should be self-hosting either via the
+ in-tree toolchain or an external toolchain. If an
+ external toolchain is required, official binary packages
+ for an external toolchain will be provided.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>To maintain maturity of Tier 1 platforms, the &os; Project
+ will maintain the following resources to support
+ development:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Build and test automation support either in the
+ FreeBSD.org cluster or some other location easily
+ available for all developers. Embedded platforms may
+ substitute an emulator available in the FreeBSD.org
+ cluster for actual hardware.</para>
+ </listitem>
+ <listitem>
+ <para>Inclusion in the <userinput>make universe</userinput>
+ and <userinput>make tinderbox</userinput> targets.</para>
+ </listitem>
+ <listitem>
+ <para>Dedicated hardware in one of the &os; clusters for
+ package building (either natively or via
+ qemu-user).</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Collectively, developers are required to provide the
+ following to maintain the Tier 1 status of a platform:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Changes to the source tree should not knowingly break
+ the build of a Tier 1 platform.</para>
+ </listitem>
+ <listitem>
+ <para>Tier 1 architectures must have a mature, healthy
+ ecosystem of users and active developers.</para>
+ </listitem>
+ <listitem>
+ <para>Developers should be able to build packages on
+ commonly available, non-embedded Tier 1 systems. This can
+ mean either native builds if non-embedded systems are
+ commonly available for the platform in question, or it can
+ mean cross-builds hosted on some other Tier 1
+ architecture.</para>
+ </listitem>
+ <listitem>
+ <para>Changes cannot break the userland ABI. If an ABI
+ change is required, ABI compatibility for existing
+ binaries should be provided via use of symbol versioning
+ or shared library version bumps.</para>
+ </listitem>
+ <listitem>
+ <para>Changes merged to stable branches cannot break the
+ protected portions of the kernel ABI. If a kernel ABI
+ change is required, the change should be modified to
+ preserve functionality of existing kernel modules.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Tier 2: Developmental and Niche Architectures</title>
+
+ <para>Tier 2 platforms are functional, but less mature &os;
+ platforms. They are not supported by the security officer,
+ release engineering, and port management teams.</para>
+
+ <para>Tier 2 platforms may be Tier 1 platform candidates that
+ are still under active development. Architectures reaching
+ end of life may also be moved from Tier 1 status to Tier 2
+ status as the availability of resources to continue to
+ maintain the system in a Production Quality state diminishes.
+ Well-supported niche architectures may also be Tier 2.</para>
+
+ <para>The &os; Project provides the following guarantees to
+ consumers of Tier 2 platforms:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>The ports infrastructure should include basic support
+ for Tier 2 architectures sufficient to support building
+ ports and packages. This includes support for basic
+ packages such as ports-mgmt/pkg, but there is no guarantee
+ that arbitrary ports will be buildable or
+ functional.</para>
+ </listitem>
+ <listitem>
+ <para>New features which are not inherently
+ platform-specific should be feasible on all Tier 2
+ architectures if not implemented.</para>
+ </listitem>
+ <listitem>
+ <para>Tier 2 platforms will be included in the source
+ tree.</para>
+ </listitem>
+ <listitem>
+ <para>Tier 2 platforms should be self-hosting either via the
+ in-tree toolchain or an external toolchain. If an
+ external toolchain is required, official binary packages
+ for an external toolchain will be provided.</para>
+ </listitem>
+ <listitem>
+ <para>Tier 2 platforms should provide functional kernels and
+ userlands even if an official release distribution is not
+ provided.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>To maintain maturity of Tier 2 platforms, the &os; Project
+ will maintain the following resources to support
+ development:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Inclusion in the <userinput>make universe</userinput>
+ and <userinput>make tinderbox</userinput> targets.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Collectively, developers are required to provide the
+ following to maintain the Tier 2 status of a platform:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Changes to the source tree should not knowingly break
+ the build of a Tier 2 platform.</para>
+ </listitem>
+ <listitem>
+ <para>Tier 2 architectures must have an active ecosystem of
+ users and developers.</para>
+ </listitem>
+ <listitem>
+ <para>While changes are permitted to break the userland ABI,
+ the ABI should not be broken gratuitously. Significant
+ userland ABI changes should be restricted to major
+ versions.</para>
+ </listitem>
+ <listitem>
+ <para>New features that are not yet implemented on Tier 2
+ architectures should provide a means of disabling them on
+ those architectures.</para>
+ </listitem>
+ </itemizedlist>
</sect2>
<sect2>
<title>Tier 3: Experimental Architectures</title>
- <para>Tier 3 platforms are not supported by the security officer
- and release engineering teams. At the discretion of the
- toolchain maintainers, they may be supported in the toolchain.
- Tier 3 platforms are architectures in the early stages of
- development, for non-mainstream hardware platforms, or which
- are considered legacy systems unlikely to see broad future
- use. Initial support for Tier 3 platforms is worked on
- in external SCM repositories.
- The transition to &os;'s subversion takes place after
- the platform boots multi-user on hardware; sharing via
- subversion is needed for wider exposure; and multiple
- developers are actively working on the platform.
- Platforms that transition to Tier 3 status may be
- removed from the tree if they are no longer actively supported
- by the &os; developer community at the discretion of the
- release engineer.</para>
-
- <para>Tier 3 platforms may have ports support, either integrated
- or external, but do not require it.</para>
-
- <para>Tier 3 platforms must have the basics documented for how
- to build a kernel and how to boot it on at least one target
- hardware or emulation environment. This documentation need
- not be integrated into the &os; tree.</para>
-
- <para>Current Tier 3 platforms are &arch.riscv;.</para>
+ <para>Tier 3 platforms have at least partial &os; support. They
+ are <emphasis>not</emphasis> supported by the security
+ officer, release engineering, and port management
+ teams.</para>
+
+ <para>Tier 3 platforms are architectures in the early stages of
+ development, for non-mainstream hardware platforms, or which
+ are considered legacy systems unlikely to see broad future
+ use. Initial support for Tier 3 platforms may exist in a
+ separate repository rather than the main source
+ repository.</para>
+
+ <para>The &os; Project provides no guarantees to consumers of
+ Tier 3 platforms and is not committed to maintaining resources
+ to support development. Tier 3 platforms may not always be
+ buildable, nor are any kernel or userland ABIs considered
+ stable.</para>
</sect2>
<sect2>
<title>Tier 4: Unsupported Architectures</title>
- <para>Tier 4 systems are not supported in any form by the
+ <para>Tier 4 platforms are not supported in any form by the
project.</para>
- <para>All systems not otherwise classified into a support tier
- are Tier 4 systems.</para>
+ <para>All systems not otherwise classified are Tier 4 systems.
+ When a platform transitions to Tier 4, all support for the
+ platform is removed from the source and ports trees. Note
+ that ports support should remain as long as the platform is
+ supported in a branch supported by ports.</para>
</sect2>
<sect2>
<title>Policy on Changing the Tier of an Architecture</title>
<para>Systems may only be moved from one tier to another by
- approval of the &os; Core Team, which shall make that
- decision in collaboration with the Security Officer, Release
- Engineering, and toolchain maintenance teams.</para>
+ approval of the &os; Core Team, which shall make that decision
+ in collaboration with the Security Officer, Release
+ Engineering, and ports management teams. For a platform to be
+ promoted to a higher tier, any missing support guarantees must
+ be satisfied before the promotion is completed.</para>
</sect2>
</sect1>