Skip to content

Commit 8e8454c

Browse files
committed
Merge remote-tracking branch 'origin/master' into tk/restore-hook-lifecycle
After unifying the pre- and post-split hook lifecycle information (this commit's first parent), merge master to pull in subsequent mainline evolution. Conflicts: runtime.md The conflict was a trivial collision with dd0cd21 (Add a 'status' field to our state struct, 2016-05-26, opencontainers#462). Signed-off-by: W. Trevor King <[email protected]>
2 parents 621bdb4 + 90027b0 commit 8e8454c

23 files changed

+491
-133
lines changed

.pullapprove.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ approve_by_comment: true
22
approve_regex: ^LGTM
33
reject_regex: ^Rejected
44
reset_on_push: true
5+
author_approval: ignored
6+
signed_off_by:
7+
required: true
58
reviewers:
69
teams:
710
- runtime-spec-maintainers

.travis.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,19 @@ go:
33
- 1.6
44
- 1.5.3
55

6-
sudo: false
6+
sudo: required
7+
8+
services:
9+
- docker
710

811
before_install:
912
- make install.tools
13+
- docker pull vbatts/pandoc
1014

1115
install: true
1216

1317
script:
1418
- make .govet
1519
- make .golint
1620
- make .gitvalidation
17-
21+
- make docs

ChangeLog

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,74 @@
11
OpenContainers Specifications
22

3+
Changes with v1.0.0-rc1:
4+
Breaking changes:
5+
6+
* runtime: Split create and start, #384, #450, #463, #464, #467,
7+
#468
8+
* runtime: Remove exec, #388
9+
* runtime: Enviroment MUST match the configuration, #397
10+
* config: Runtime MUST generate errors for unsupported platforms,
11+
#441
12+
* config: Windows mount destinations MUST NOT be nested, #437
13+
14+
Additions:
15+
16+
* solaris: Added platform-specific configuration, #411, #424, #431,
17+
#436
18+
* runtime: Add 'annotations' and 'status' to the state structure,
19+
#462, #484, #485
20+
* runtime: State no longer needs to be serialized as JSON, #446
21+
* runtime-linux: Add /dev symbolic links, #449
22+
* config: Allow absolute paths for root.path (which previously
23+
required relative paths), #394
24+
* config-linux: Add linux.mountLabel, #393
25+
* config-linux: Add suport for cgroup namespace, #397
26+
* config-linux: Runtime SHOULD NOT modify ownership of any
27+
referenced filesystem (previously the restriction only applied to
28+
the root filesystem), #452
29+
* specs-go/seccomp: Add ppc and s390x to specs-go/config.go, #475
30+
31+
Minor fixes and documentation:
32+
33+
* README: Add project.md to the Table of Contents, #376
34+
* README: Consistenly indent the Table of Contents, #400
35+
* README: Link to LICENSE, #442
36+
* README: Weekly call is OCI-wide, #378
37+
* config: Explicit runtime namespace for hooks, #415
38+
* config: Explicit container namespace for uid, gid, and
39+
additionalGids, #412
40+
* config: Fix 'string' -> 'array of strings' typo for process.args,
41+
#416
42+
* runtime: The runtime MAY validate config.json, #418
43+
* runtime: Move errors section out of operations, #445
44+
* runtime: MAY -> SHOULD for post-stop error logging, #410
45+
* schema/README: Document JSON Schema usage, #360, #385
46+
* schema: Minor description updates, #456, #461
47+
* schema/validate: Support reading documents via stdin, #482
48+
* .pullapprove: Automate review approval, #458, #474
49+
* .gitignore: Hide more auto-generated files, #386, #392
50+
* .travis: git-validation detects Travis now, #366
51+
* .travis: Regress on failure to produce docs, #479
52+
* Makefile: Filename docs.* -> oci-runtime-spec.*, #478
53+
* Makefile: Add install.tools target, #349
54+
* Makefile: Allow native pandoc implementations, #428, #448
55+
* Makefile: Prefer Bash, #455
56+
* Makefile: Travis support for .gitvalidation, #422
57+
* specs-go/config: Add missing omitempties for Process.Terminal,
58+
Root.Readonly, Spec.Linux, and Spec.Mounts, #408, #429, #430, #431
59+
* specs-go/config: Remove incorrect omitempties for User.UID and
60+
User.GID, #425
61+
* specs-go/config: Drop platform-independent comment, #451
62+
* version: Include version in generated documentation, #406
63+
* *: Anchor examples, #348
64+
* *: Fix remnants from SelinuxProcessLabel to SelinuxLabel rename,
65+
#396
66+
* *: Outsource code-of-conduct to TOB repository, #375, #413
67+
* *: RFC 2119 consistency, #407, #409, #438, #444, #449
68+
* *: Typo fixes, #390, #401
69+
* *: Whitespace fixes and validation, #380, #381, #426
70+
* ROADMAP: Remove stale targets, #435
71+
372
Changes with v0.5.0:
473
Breaking changes:
574

@@ -277,4 +346,3 @@ Changes with v0.1.0:
277346
* Update Typo in ROADMAP.md
278347
* Use unsigned for IDs
279348
* version: introduce a string for dev indication
280-

GOVERNANCE.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Project governance
2+
3+
The [OCI charter][charter] §5.b.viii tasks an OCI Project's maintainers (listed in the repository's MAINTAINERS file and sometimes referred to as "the TDC", [§5.e][charter]) with:
4+
5+
> Creating, maintaining and enforcing governance guidelines for the TDC, approved by the maintainers, and which shall be posted visibly for the TDC.
6+
7+
This section describes generic rules and procedures for fulfilling that mandate.
8+
9+
## Proposing a motion
10+
11+
A maintainer SHOULD propose a motion on the [email protected] mailing list (except [security issues](#security-issues)) with another maintainer as a co-sponsor.
12+
13+
## Voting
14+
15+
Voting on a proposed motion SHOULD happen on the [email protected] mailing list (except [security issues](#security-issues)) with maintainers posting LGTM or REJECT.
16+
Maintainers MAY also explicitly not vote by posting ABSTAIN (which is useful to revert a previous vote).
17+
Maintainers MAY post multiple times (e.g. as they revise their position based on feeback), but only their final post counts in the tally.
18+
A proposed motion is adopted if two-thirds of votes cast, a quorum having voted, are in favor of the release.
19+
20+
Voting SHOULD remain open for a week to collect feedback from the wider community and allow the maintainers to digest the proposed motion.
21+
Under exceptional conditions (e.g. non-major security fix releases) proposals which reach quorum with unanimous support MAY be adopted earlier.
22+
23+
A maintainer MAY choose to reply with REJECT.
24+
A maintainer posting a REJECT MUST include a list of concerns or links to written documentation for those concerns (e.g. GitHub issues or mailing-list threads).
25+
The maintainers SHOULD try to resolve the concerns and wait for the rejecting maintainer to change their opinion to LGTM.
26+
However, a motion MAY be adopted with REJECTs, as outlined in the previous paragraphs.
27+
28+
## Quorum
29+
30+
A quorum is established when at least two-thirds of maintainers have voted.
31+
32+
For projects that are not specifications, a [motion to release](#release-approval) MAY be adopted if the tally is at least three LGTMs and no REJECTs, even if three votes does not meet the usual two-thirds quorum.
33+
34+
## Security issues
35+
36+
Motions with sensitive security implications MUST be proposed on the [email protected] mailing list instead of [email protected], but should otherwise follow the standard [proposal](#proposing-a-motion) process.
37+
The [email protected] mailing list includes all members of the TOB.
38+
The TOB will contact the project maintainers and provide a channel for discussing and voting on the motion, but voting will otherwise follow the standard [voting](#voting) and [quorum](#quorum) rules.
39+
The TOB and project maintainers will work together to notify affected parties before making an adopted motion public.
40+
41+
## Amendments
42+
43+
The [project governance](#project-governance) rules and procedures MAY be ammended or replaced using the procedures themselves.
44+
The MAINTAINERS of this project governance document is the total set of MAINTAINERS from all Open Containers projects (runC, runtime-spec, and image-spec).
45+
46+
## Subject templates
47+
48+
Maintainers are busy and get lots of email.
49+
To make project proposals recognizable, proposed motions SHOULD use the following subject templates.
50+
51+
### Proposing a motion
52+
53+
> [{project} VOTE]: {motion description} (closes {end of voting window})
54+
55+
For example:
56+
57+
> [runtime-spec VOTE]: Tag 0647920 as 1.0.0-rc (closes 2016-06-03 20:00 UTC)
58+
59+
### Tallying results
60+
61+
After voting closes, a maintainer SHOULD post a tally to the motion thread with a subject template like:
62+
63+
> [{project} {status}]: {motion description} (+{LGTMs} -{REJECTs} #{ABSTAINs})
64+
65+
Where `{status}` is either `adopted` or `rejected`.
66+
For example:
67+
68+
> [runtime-spec adopted]: Tag 0647920 as 1.0.0-rc (+6 -0 #3)
69+
70+
[charter]: https://www.opencontainers.org/about/governance

Makefile

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11

2-
SHELL ?= $(shell command -v bash 2>/dev/null)
3-
DOCKER ?= $(shell command -v docker 2>/dev/null)
4-
PANDOC ?= $(shell command -v pandoc 2>/dev/null)
2+
EPOCH_TEST_COMMIT := 78e6667ae2d67aad100b28ee9580b41b7a24e667
3+
OUTPUT_DIRNAME ?= output/
4+
DOC_FILENAME ?= oci-runtime-spec
5+
SHELL ?= $(shell command -v bash 2>/dev/null)
6+
DOCKER ?= $(shell command -v docker 2>/dev/null)
7+
PANDOC ?= $(shell command -v pandoc 2>/dev/null)
58
ifeq "$(strip $(PANDOC))" ''
69
ifneq "$(strip $(DOCKER))" ''
710
PANDOC = $(DOCKER) run \
811
-it \
912
--rm \
1013
-v $(shell pwd)/:/input/:ro \
11-
-v $(shell pwd)/output/:/output/ \
14+
-v $(shell pwd)/$(OUTPUT_DIRNAME)/:/$(OUTPUT_DIRNAME)/ \
1215
-u $(shell id -u) \
1316
vbatts/pandoc
1417
PANDOC_SRC := /input/
@@ -33,23 +36,22 @@ DOC_FILES := \
3336
config-linux.md \
3437
config-solaris.md \
3538
glossary.md
36-
EPOCH_TEST_COMMIT := 78e6667ae2d67aad100b28ee9580b41b7a24e667
3739

3840
default: docs
3941

4042
.PHONY: docs
41-
docs: output/docs.pdf output/docs.html
43+
docs: $(OUTPUT_DIRNAME)/$(DOC_FILENAME).pdf $(OUTPUT_DIRNAME)/$(DOC_FILENAME).html
4244

4345
ifeq "$(strip $(PANDOC))" ''
44-
output/docs.pdf output/docs.html:
46+
$(OUTPUT_DIRNAME)/$(DOC_FILENAME).pdf $(OUTPUT_DIRNAME)/$(DOC_FILENAME).html:
4547
$(error cannot build $@ without either pandoc or docker)
4648
else
47-
output/docs.pdf: $(DOC_FILES)
48-
mkdir -p output/ && \
49+
$(OUTPUT_DIRNAME)/$(DOC_FILENAME).pdf: $(DOC_FILES)
50+
mkdir -p $(OUTPUT_DIRNAME)/ && \
4951
$(PANDOC) -f markdown_github -t latex -o $(PANDOC_DST)$@ $(patsubst %,$(PANDOC_SRC)%,$(DOC_FILES))
5052

51-
output/docs.html: $(DOC_FILES)
52-
mkdir -p output/ && \
53+
$(OUTPUT_DIRNAME)/$(DOC_FILENAME).html: $(DOC_FILES)
54+
mkdir -p $(OUTPUT_DIRNAME)/ && \
5355
$(PANDOC) -f markdown_github -t html5 -o $(PANDOC_DST)$@ $(patsubst %,$(PANDOC_SRC)%,$(DOC_FILES))
5456
endif
5557

@@ -111,5 +113,5 @@ endif
111113

112114
.PHONY: clean
113115
clean:
114-
rm -rf output/ *~
116+
rm -rf $(OUTPUT_DIRNAME) *~
115117

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ When in doubt, start on the [mailing-list](#mailing-list).
7575

7676
## Weekly Call
7777

78-
The contributors and maintainers of all OCI projects have a weekly meeting Wednesdays at 10:00 AM (USA Pacific.)
79-
Everyone is welcome to participate via [UberConference web][UberConference] or audio-only: 646-494-8704 (no PIN needed.)
78+
The contributors and maintainers of all OCI projects have a weekly meeting Wednesdays at 2:00 PM (USA Pacific).
79+
Everyone is welcome to participate via [UberConference web][UberConference] or audio-only: 415-968-0849 (no PIN needed.)
8080
An initial agenda will be posted to the [mailing list](#mailing-list) earlier in the week, and everyone is welcome to propose additional topics or suggest other agenda alterations there.
8181
Minutes are posted to the [mailing list](#mailing-list) and minutes from past calls are archived to the [wiki](https://github.com/opencontainers/runtime-spec/wiki) for those who are unable to join the call.
8282

@@ -157,5 +157,5 @@ Read more on [How to Write a Git Commit Message](http://chris.beams.io/posts/git
157157
* If there was important/useful/essential conversation or information, copy or include a reference
158158
8. When possible, one keyword to scope the change in the subject (i.e. "README: ...", "runtime: ...")
159159

160-
[UberConference]: https://www.uberconference.com/ssaul
160+
[UberConference]: https://www.uberconference.com/opencontainers
161161
[irc-logs]: http://ircbot.wl.linuxfoundation.org/eavesdrop/%23opencontainers/

RELEASES.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Releases
2+
3+
The release process hopes to encourage early, consistent consensus-building during project development.
4+
The mechanisms used are regular community communication on the mailing list about progress, scheduled meetings for issue resolution and release triage, and regularly paced and communicated releases.
5+
Releases are proposed and adopted or rejected using the usual [project governance](GOVERNANCE.md) rules and procedures.
6+
7+
An anti-pattern that we want to avoid is heavy development or discussions "late cycle" around major releases.
8+
We want to build a community that is involved and communicates consistently through all releases instead of relying on "silent periods" as a judge of stability.
9+
10+
## Parallel releases
11+
12+
A single project MAY consider several motions to release in parallel.
13+
However each motion to release after the initial 0.1.0 MUST be based on a previous release that has already landed.
14+
15+
For example, runtime-spec maintainers may propose a v1.0.0-rc2 on the 1st of the month and a v0.9.1 bugfix on the 2nd of the month.
16+
They may not propose a v1.0.0-rc3 until the v1.0.0-rc2 is accepted (on the 7th if the vote initiated on the 1st passes).
17+
18+
## Specifications
19+
20+
The OCI maintains three categories of projects: specifications, applications, and conformance-testing tools.
21+
However, specification releases have special restrictions in the [OCI charter][charter]:
22+
23+
* They are the target of backwards compatibility (§7.g), and
24+
* They are subject to the OFWa patent grant (§8.d and e).
25+
26+
To avoid unfortunate side effects (onerous backwards compatibity requirements or Member resignations), the following additional procedures apply to specification releases:
27+
28+
### Planning a release
29+
30+
Every OCI specification project SHOULD hold meetings that involve maintainers reviewing pull requests, debating outstanding issues, and planning releases.
31+
This meeting MUST be advertised on the project README and MAY happen on a phone call, video conference, or on IRC.
32+
Maintainers MUST send updates to the [email protected] with results of these meetings.
33+
34+
Before the specification reaches v1.0.0, the meetings SHOULD be weekly.
35+
Once a specification has reached v1.0.0, the maintainers may alter the cadence, but a meeting MUST be held within four weeks of the previous meeting.
36+
37+
The release plans, corresponding milestones and estimated due dates MUST be published on GitHub (e.g. https://github.com/opencontainers/runtime-spec/milestones).
38+
GitHub milestones and issues are only used for community organization and all releases MUST follow the [project governance](GOVERNANCE.md) rules and procedures.
39+
40+
### Timelines
41+
42+
Specifications have a variety of different timelines in their lifecycle.
43+
44+
* Pre-v1.0.0 specifications SHOULD release on a monthly cadence to garner feedback.
45+
* Major specification releases MUST release at least three release candidates spaced a minimum of one week apart.
46+
This means a major release like a v1.0.0 or v2.0.0 release will take 1 month at minimum: one week for rc1, one week for rc2, one week for rc3, and one week for the major release itself.
47+
Maintainers SHOULD strive to make zero breaking changes during this cycle of release candidates and SHOULD restart the three-candidate count when a breaking change is introduced.
48+
For example if a breaking change is introduced in v1.0.0-rc2 then the series would end with v1.0.0-rc4 and v1.0.0.
49+
- Minor and patch releases SHOULD be made on an as-needed basis.
50+
51+
[charter]: https://www.opencontainers.org/about/governance

bundle.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,17 @@
55
This section defines a format for encoding a container as a *filesystem bundle* - a set of files organized in a certain way, and containing all the necessary data and metadata for any compliant runtime to perform all standard operations against it.
66
See also [OS X application bundles](http://en.wikipedia.org/wiki/Bundle_%28OS_X%29) for a similar use of the term *bundle*.
77

8-
The definition of a bundle is only concerned with how a container, and its configuration data, are stored on a local file system so that it can be consumed by a compliant runtime.
8+
The definition of a bundle is only concerned with how a container, and its configuration data, are stored on a local filesystem so that it can be consumed by a compliant runtime.
99

1010
A Standard Container bundle contains all the information needed to load and run a container.
1111
This MUST include the following artifacts:
1212

1313
1. `config.json` : contains configuration data.
1414
This REQUIRED file MUST reside in the root of the bundle directory and MUST be named `config.json`.
15-
When the bundle is packaged up for distribution, this file MUST be included.
1615
See [`config.json`](config.md) for more details.
1716

1817
2. A directory representing the root filesystem of the container.
1918
While the name of this REQUIRED directory may be arbitrary, users should consider using a conventional name, such as `rootfs`.
20-
When the bundle is packaged up for distribution, this directory MUST be included.
2119
This directory MUST be referenced from within the `config.json` file.
2220

2321
While these artifacts MUST all be present in a single directory on the local filesystem, that directory itself is not part of the bundle.

0 commit comments

Comments
 (0)