Glossary
From Genunix
- Application Binary Interface (ABI)
- An ABI defines a system interface for compiled programs. This is usually specified as an API coupled with source to binary translation rules.
- Application Programing Interface (API)
- An API defines a system interface for source level programs.
- Branch
- A line of development within a code base, created from a snapshot of another branch, usually the trunk. Development proceeds independently on separate branches, but merges may occur in either direction in accordance with the branches' integration rules. There are two general types of branch: release and project.
- C-Team
- Consolidation Team: the release team managing a specific Consolidation.
- Change Review Team (CRT)
- A change review team is the group of technical contributors that a particular consolidation team may charter to manage the day-to-day business of evaluating the technical risk and merit of proposed changes". Typical evaluations handled by the CRT are the integration requests for fixes for groups of bugs; project integrations are usually managed by the consoldation's release team.
- Command Line Interface (CLI)
- A CLI defines the invocation syntax for command line based utilities.
- Community
- A community is a group of people ("members") sharing one or more common interests that is carrying out a conversation; the conversation takes place in one or more known public forums. A community is not expected to have a source repository. It is expected to be interested in one or more of the ongoing projects related to its area of interest and, optionally, the consolidations that publish those projects.
- Consolidation
- A consolidation is a technical effort involving one or more people working in an open manner; the specific outcome of a consolidation is to assemble the technical artifacts produced by one or more projects into a coherent collection convenient for assembly into distributions. The consolidation may also include contributions of its own generation, or from other sources. The consolidation has one or more source repositories, which group the source products of the contributing projects and other selected artifacts into a coherent whole. The consolidation's focus is to be a publication mechanism of an artifact useful to a distribution. Utility to a User is a secondary consideration. The consolidation membership, like a project, is typically composed of contributors.
The output of a consolidation is minimally expected to be a source tree, associated tools, and a "proto area", which is the in-file-system binary delivery associated with the compiled output of that source tree. Depending on the expectations of the distributions utilizing the consolidation, it may elect to publish the binaries in a package format.
- Contributor (a person)
- A contributor is able to perform work of use to a project or consolidation. The work performed include examples such as the creation or modification of code, the analysis of failures, the management of tools related to a project, the creation of architectural or specification documentation, and even the act of coordinating other contributor actions. The specific notion of a piece of work being contributory or not is left to the project or consolidation to decide. Projects concerned with communications, like an Advocacy Project, might consider an individual's active presence at a conference or other physical meeting as a contribution.
The label of "Core Contributor" is associated with a Contributor who gives substantial direction to a project or consolidation. A Core Contributor would be expected to participate in all voting and dispute mechanisms.
- Distribution
- A distribution is a technical effort involving one or more people potentially working in either an open or closed manner; the specific outcome of a distribution is to assemble the technical artifacts produced by one or more consolidations and, optionally, one or moreprojects into a coherent collection capable of performing a meaningful subset of the set of features typically associated with an application of the given class. The distribution may also include contributions of its own generation, or from other sources. The distribution's focus is to be a publication mechanism of an artifact intended for a User. The distribution membership is typically composed of contributors, although distributions using a non-open process need not include any actual contributors.
The output of a distribution producing a software artifact is minimally expected to be an executable form of that artifact.
- Documentation
- Descriptions of interface syntax and semantics intended for human consumption. This may include manual pages, info files, "Guides", README files and other forms. It explicitly does not include header or source files contents.
- Fast Track
- A lightweight process for reviewing a proposal by the community. Proposals that are suitable for such a review are typically those that are obvious and non-controversial. Fast track reviews will typically take place over email over a fixed period of time. If the time allotted to the proposal is used up and significant objections have not been raised, the proposal is automatically approved.
- Flag day
- A flag day refers to a code integration that affects a large subset of the contributors using the development release (or current version) of a consolidation. For instance, the modification of build tools that requires the deletion of existing object files from a build source tree generally is considered a flag day. Flag days are accompanied by a clarifying message from the integrating contributor, or the C-team on their behalf. The message describes aspects of the change, and the steps required to continue working across the flag day.
- Interface
- Merriam-Webster defines Interface as:
2 a : the place at which independent and often unrelated systems meet and act on or communicate with each other. b : the means by which interaction or communication is achieved at an interface.
In the context of this document, an interface is limited to the documented syntax and semantics one software object exports or imports from another. This may include (but is not limited to):
- Library ABIs (implicitly APIs).
- Utility CLIs.
- File formats
- File system layout (including file locations)
An implementation of an interface also has behavioral artifacts, such as performance under certain conditions, which are not specified, and are therefore not part of the "interface". The developers of the implementation do not assume anyone is depending on these undocumented features; a client should not depend on these artifacts (or should get them made an explicit part of the specification). However, the capacity of an interface or its gross performance characteristics could be deemed an implicit part of the interface semantics.
- Interface Taxonomy
- A document which defines the terms applied to interface commitment
levels and provides the semantic definitions and the rules associating with those levels with release types. These commitment levels are exposed to customers in the Attributes sections of manual pages under the type "Interface Stability",
- Member (a person)
- A member participates, potentially only by observing, in the
conversation held by the community of which s/he is a member.
- Parent/Child Branches
- When a new branch is created, the preexisting branch serving as the
initial content source is the parent and the newly created branch is the child. Immediately after branch creation, the contents of the parent and child are identical.
- Product
- A Product is a specific publication of a distribution, which can be
distinguished at least by the time of publication.
- Project
- A project is a technical effort involving one or more people that is
working in an open manner; the specific outcome of a project is to produce a small number of coordinated technical artifacts. A project has one or more source repositories, each of which is intended to in some way be published. A project may choose that its primary form of publication is through one or more consolidations, although this is not necessary. A project has at least one distinction between those actively working on the project (contributors) as opposed to people merely interested in the project's progress (members).
- Project Branch
- A line of development used by a project team to coordinate their
work. A project branch typically is created from a consolidation's trunk, receives regular merges from its parent, and is merged back into its parent and deactivated when the project is completed. A project not intended to be published in a consolidation may occupy a separate code base rather than a branch of an existing consolidation. A project may also have a branch in each of several code bases.
- Project Team
- All contributors to a project. Project teams are responsible for
establishing their own internal governance and development processes, and for deciding what changes are appropriate for their project branch(es) or code base(s).
- Proto Area
- A hierarchical file system containing the binary delivery associated
with the compiled output of a given source tree. For example, a source tree with a root of `/path/foo` might have a `proto` directory `/path/foo/proto`; everything under this would be referred to as the proto area, and if `/usr/bin/x` and `/etc/x.conf` were both part of the binary delivery, then they would be in the proto area at `/path/foo/proto/usr/bin/x` and `/path/foo/proto/etc/x.conf` respectively.
- Release Branch
- A branch of a consolidation's code base in which projects and/or bug
fixes are integrated for the purpose of publication. A consolidation may have multiple active release branches at any one time, each employing a different release team and enforcing different integration requirements.
- Release
- A snapshot or series of snapshots of a single release branch. Architectural consistency requirements are applied to releases.
- Stable
- The most common interface commitment level in OpenSolaris (see Interface Taxonomy). Incompatible change to a Stable interface can only happen in a Major release of the product.
Note that this usage is not the same as the common community usage of referring to Stable branches of a development tree.
The Solaris `attributes(5)` manual page has information on all interface stability levels.
- Trunk
- A consolidation's most current release branch. The trunk is the release branch opened most recently and the one with the highest version number if the consolidation employs versioning. All projects and all applicable bug fixes integrate into the trunk before any other release branch. The specific name of the trunk as seen in the source code management system and whether that name is fixed or changes over time are implementation details, as is any distinction in representation between the trunk and other branches.
- User (a person)
- A person who uses one or more distributions, consolidations, or projects in some output form, but does not participate in any of the conversations associated with those efforts. The user may be viewed as a pure consumer of the technology produced by the collection of technical efforts.
