Skip to content

Commit d63da61

Browse files
committed
Updates based on May 2020 comments/reviews
Signed-off-by: Phil Estes <[email protected]>
1 parent 2ae379b commit d63da61

File tree

1 file changed

+75
-33
lines changed

1 file changed

+75
-33
lines changed

GETTING_STARTED.md

+75-33
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,19 @@ found under the OCI umbrella. This document attempts to be that starting point
77
for those who may be new to the OCI, interested in participation, or who want to
88
understand if a project is a fit for inclusion or contribution to the OCI.
99

10+
**Note:** If there are any perceived or real conflicts between this document
11+
and the OCI Charter, the OCI Charter takes precedence as the official governing
12+
document of the Open Container Initiative.
13+
1014
## What is the OCI?
1115

12-
As our [website](https://opencontainers.org) states, chiefly the OCI is "an open
13-
governance structure for the express purpose of creating open industry standards
14-
around container formats and runtime." Created in 2015, the core initial purpose
15-
was to align Docker and other ecosystem players around a runtime and image
16-
specification that would become an industry baseline for how images are packaged
17-
and executed in OCI compliant runtimes.
16+
The [OCI website](https://opencontainers.org) has since inception carried a
17+
mission statement that defined us as "an open governance structure for the
18+
express purpose of creating open industry standards around container formats
19+
and runtime." Created in 2015, the core initial purpose was to align Docker and
20+
other ecosystem players around a runtime and image specification that would
21+
become an industry baseline for how images are packaged and executed in OCI
22+
compliant runtimes.
1823

1924
Since that initial work, finalized in 1.0 specs in the summer of 2017, a
2025
distribution specification is now underway, based on the HTTP API of the initial
@@ -33,10 +38,12 @@ vested interest in bringing forward the "state of the art" with respect to the
3338
scope of the OCI. Currently this is of course limited to specifications around
3439
runtime, image, and distribution of containers. The artifacts repository and
3540
project is related to both image and distribution and is a natural expansion
36-
of OCI into ongoing experimentation with registries and cloud native tooling.
37-
Specifically, [artifacts](https://github.com/opencontainers/artifacts) expands the concept around the **what** when
38-
discussing non-OCI image content (Helm charts, Singularity container images,
39-
SPDX, source bundles, etc.) and registries.
41+
of OCI into ongoing support of additional types within registries and related
42+
cloud native tools. Specifically, [artifacts](https://github.com/opencontainers/artifacts)
43+
expands the concept around the **what** when discussing non-OCI image content
44+
(Helm charts, Singularity container images, SPDX, source bundles, etc.) and
45+
registries, and allows for further experimentation with arbitrary file types
46+
within the context of this stable andd well-defined capability.
4047

4148
**Implementors** own projects outside the OCI for which they have determined
4249
value in being "OCI compliant"; whether that's a registry, a unique container
@@ -69,6 +76,14 @@ tools which interact with container images and registries.
6976
- [Image spec](https://github.com/opencontainers/image-spec)
7077
- [Distribution spec](https://github.com/opencontainers/distribution-spec)
7178

79+
Artifacts is not a standalone specification, but fits within this category
80+
as it is a repository which serves as the extension point for media types
81+
which include the core media types found within the image spec, as well as
82+
connecting those and additional media types with the distribution spec as
83+
the means for storage, query, and delivery of a growing list of well-defined
84+
artifact types defined within the project.
85+
- [Artifacts](https://github.com/opencontainers/artifacts)
86+
7287
### Spec Conformance Test
7388

7489
Conformance tests should provide a clear, end-user runnable test suite for
@@ -94,34 +109,61 @@ contribute a library to OCI.
94109

95110
### Reference Implementations
96111

97-
While theoretically a specification can have one or more reference
98-
implementations, the OCI runtime spec and the program, `runc`, have gone
99-
hand in hand simply due to the particulars around the founding of the OCI.
112+
The OCI does not require that its specifications have reference
113+
implementations, and any project which aims to be adopted by the OCI as a
114+
reference implementation has to be judged on its own merits. Reference
115+
implementations should be generally usable as a building block for other
116+
programs (thus should not be *overly opinionated*) and should have their
117+
features limited to the set of features outlined by the relevant specification.
118+
In addition, the popularity of the project (especially in production use-cases)
119+
should be taken into consideration: reference implementations should be
120+
battle-tested, after all.
121+
122+
The first (and currently only viable) reference implementation included in the
123+
OCI was runc, as a reference implementation of the OCI runtime specification.
124+
This project's inclusion is a slight oddity of history, having been a
125+
production-ready project predating the OCI's formation and was included in the
126+
OCI as part of the original draft runtime specification. However this strange
127+
history does not preclude the addition of any new reference implementations,
128+
merely that this is a process which is not well-established in the OCI and thus
129+
any proposed projects need to have significant justification for inclusion.
100130

101-
It is not inconceivable that more reference implementations would be
102-
contributed and supported within the OCI, but at this point, the only
103-
active and viable reference implementation within the OCI is the `runc`
104-
implementation of the runtime specification, based around the contributed
105-
**libcontainer** codebase contributed by Docker.
106131
- [runc](https://github.com/opencontainers/runc)
107132

108-
Runc is also unique in that it is an open source reference implementation,
109-
but also a core dependent ecosystem component underneath the majority of
110-
container engine implementations in use today.
111-
112-
For any future reference implementation to be adopted by the OCI, it would
113-
need to be kept in sync with the specification it implements. For a change
114-
to be accepted to the spec, the equivalent implementation would need to be
115-
authored and accepted as well.
116-
117133
## Should my Project be in the OCI?
118134

119135
The OCI receives proposals suggesting additions to the current suite
120136
of project types listed above. We understand that a perfect framework
121137
for determining inclusion or rejection of these proposals is an
122-
intangible goal. However, we list the following considerations to help
123-
guide future potential submissions.
124-
125-
1. The OCI, unlike the CNCF, is not directly chartered for the advancement, marketing, and support of general cloud native software projects.
126-
2. Projects consumed via a UI and/or with a significant end user experience component are unlikely to be a good fit for the OCI model.
127-
3. The OCI has an small but active and vibrant group of participants today; however the specifications and related projects are a small niche of the overall cloud native world, and seeking out the OCI to validate or grow a community around a young project is unlikely to be a viable model. The CNCF is much more suited to that aim given the sandbox and maturity model.
138+
intangible goal. However, the following considerations are provided
139+
to help guide potential submissions.
140+
141+
* The OCI is not directly chartered for the advancement, marketing, and
142+
support of general cloud native software projects. As our charter states: *The
143+
Open Container Initiative does not seek to be a marketing organization, define
144+
a full stack or solution requirements, and will strive to avoid standardizing
145+
technical areas undergoing innovation and debate.*
146+
* The project should be a piece of "**boring core container infrastructure**".
147+
While this is partially subjective criterion, the key factors towards
148+
fulfilling this requirement are:
149+
1. The project should be as un-opinionated and extensible as is reasonably
150+
possible.
151+
2. Rather than being a complete solution or framework, the project should be
152+
usable as a building-block for larger solutions and frameworks.
153+
3. Projects consumed via a UI and/or including a significant end user
154+
experience component may be one clear sign of a lack of fit with the OCI
155+
as one example.
156+
* Proposed projects should fit logically into the scope and mission of the
157+
OCI: a home for open standards and tools which underpin the wider container
158+
ecosystem. Proposed additions to the OCI should not conflict with existing OCI
159+
projects, nor should they be completely unrelated to existing OCI projects.
160+
The precise scope of the OCI is defined by the OCI Charter, but the TOB may
161+
choose to expand the scope if they feel it is within the mission of the OCI.
162+
163+
In summary, the OCI has a small but active and vibrant group of participants
164+
today. However the OCI specifications and related OCI projects are but a small
165+
niche of the overall cloud native world, and seeking out the OCI to validate
166+
or grow a community around an untested or experimental new project is highly
167+
unlikely to fit the more narrow scope and mission of the OCI. We recommend
168+
the CNCF as a much more suitable target for such projects given the maturity
169+
model and sandbox starting point within that community.

0 commit comments

Comments
 (0)