Skip to content
Closed
Show file tree
Hide file tree
Changes from 49 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
ad517c3
Initial commit
caniszczyk May 3, 2016
e3fbd39
Create README.md
caniszczyk May 3, 2016
fcc7f42
Add contributing and maintainer guidelines.
caniszczyk May 3, 2016
5ac5ed9
Merge pull request #1 from opencontainers/add-contributing-guidelines
crosbymichael May 3, 2016
f06beeb
MAINTAINERS_GUIDE: Remove trailing whitespace
wking May 19, 2016
0548361
CONTRIBUTING: Make leader-issues optional
wking May 19, 2016
06827b3
CONTRIBUTING: Don't specify a 50-char limit
wking May 19, 2016
1ae370f
Merge pull request #6 from wking/optional-leader-issue
crosbymichael May 23, 2016
1b9ba8f
CONTRIBUTING: Make the test requirements contingent on an existing suite
wking May 19, 2016
8afbcde
Merge pull request #10 from wking/no-specific-commit-summary-limit
crosbymichael May 23, 2016
263e0c4
Merge pull request #5 from wking/whitespace
crosbymichael May 23, 2016
b6d2e98
Merge pull request #7 from wking/optional-test-suite
crosbymichael May 23, 2016
84b4812
CONTRIBUTING: Allow collaborative pull requests
wking May 19, 2016
d1d045f
Merge pull request #8 from wking/allow-collaboration
crosbymichael May 23, 2016
5b3d5d5
Test PullApprove
caniszczyk May 26, 2016
560fdc9
Fix to use "teams" in PullApprove
caniszczyk May 26, 2016
c82a2e7
MAINTAINERS: disallow self-LGTMs
cyphar May 27, 2016
1d5bddc
Merge pull request #13 from cyphar/disallow-self-lgtm
caniszczyk May 31, 2016
593b8f0
proposals: add release-approval-process
Jun 9, 2016
889639a
proposal: release-approval-process add some motivation
Jun 10, 2016
7e11601
proposals: release approval process to one week for apps
Jun 14, 2016
e48c6c7
proposals: release approval process 3 rcs required
Jun 14, 2016
445ee2d
proposals: release approval process: one month pre-releases
Jun 14, 2016
f629094
proposals: release approval process: use consistent language for rejects
Jun 14, 2016
c15c0e2
proposals: release approval process: clarify utility of GitHub
Jun 14, 2016
3fd90e8
proposals: release-approval-process: add voting members language
Jun 14, 2016
267f916
proposals: release approval process: add quorum language
Jun 15, 2016
eecc4fe
proposals: release approval process: add language about mailing list
Jun 15, 2016
f2148b6
proposals: release approval process: add information to projects
Jun 15, 2016
89afeeb
proposals: release approval process: improve REJECT feedback
Jun 15, 2016
775db84
proposals: release-approval-process: fixup additional typos
Jun 16, 2016
40966cf
release-approval: Shuffle to make more DRY
wking Jun 16, 2016
c340e73
release-approval: Add non-spec unanimous quorum reduction
wking Jun 17, 2016
af1013d
proposals: release-approval-process fix a grammar thing
Jun 22, 2016
be10456
proposal: fix a typo
Jun 22, 2016
86b3087
proposals: release approval process explain security@ email
Jun 25, 2016
c732cc2
project-governance: Make voting more generic
wking Jun 25, 2016
56abe12
GOVERNANCE and RELEASES: split the files
Jun 29, 2016
52dbb39
Merge pull request #15 from philips/add-governance-and-releases-docs
caniszczyk Jul 21, 2016
9b4e469
GOVERNANCE.md: fix typo
runcom Sep 4, 2016
d81a903
Merge pull request #17 from runcom/fix-typo
crosbymichael Sep 6, 2016
3f54e95
.pullapprove.yml: Reset on push, ignore authors, and require sign-offs
wking Sep 9, 2016
3eec2a6
Merge pull request #21 from wking/pullapprove-updates
caniszczyk Oct 28, 2016
f562576
*: clarify how security issues are handled
cyphar Nov 30, 2016
9f95b15
Merge pull request #22 from cyphar/clarify-security-handling
caniszczyk Dec 1, 2016
827d87c
Merge git://github.com/opencontainers/project-template into oci-template
wking Jan 6, 2017
22e4324
README: Replace security section with a stub
wking Jan 6, 2017
f80a5db
README: CONTRIBUTING.md is now under the Apache license
wking Jan 6, 2017
bf60e34
LICENSE.code: Remove this file
wking Jan 6, 2017
beb3ba7
README: Relicense under the Apache 2.0
wking Jan 6, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 78 additions & 24 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,90 @@
# Contributing to Docker open source projects
## Contribution Guidelines

Want to hack on this project? Awesome! Here are instructions to get you started.
### Security issues

This project is a part of the [Docker](https://www.docker.com) project, and follows
the same rules and principles. If you're already familiar with the way
Docker does things, you'll feel right at home.
If you are reporting a security issue, do not create an issue or file a pull
request on GitHub. Instead, disclose the issue responsibly by sending an email
to [email protected] (which is inhabited only by the maintainers of
the various OCI projects).

Otherwise, go read Docker's
[contributions guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md),
[issue triaging](https://github.com/docker/docker/blob/master/project/ISSUE-TRIAGE.md),
[review process](https://github.com/docker/docker/blob/master/project/REVIEWING.md) and
[branches and tags](https://github.com/docker/docker/blob/master/project/BRANCHES-AND-TAGS.md).
### Pull requests are always welcome

For an in-depth description of our contribution process, visit the
contributors guide: [Understand how to contribute](https://docs.docker.com/opensource/workflow/make-a-contribution/)
We are always thrilled to receive pull requests, and do our best to
process them as fast as possible. Not sure if that typo is worth a pull
request? Do it! We will appreciate it.

If your pull request is not accepted on the first try, don't be
discouraged! If there's a problem with the implementation, hopefully you
received feedback on what to improve.

We're trying very hard to keep the project lean and focused. We don't want it
to do everything for everybody. This means that we might decide against
incorporating a new feature.


### Conventions

Fork the repo and make changes on your fork in a feature branch:

- If it's a bugfix branch, name it XXX-something where XXX is the number of the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since when did we add branch naming conventions? This is silly and unnecessary.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a fair amount of cruft in the project template (see opencontainers/project-template#20 for some of my generalization suggestions). But I think consistency with project-template and a united effort to keep project-template sane are better than each OCI project rolling their own everything. See also @crosbymichael and @vbatts on this here and here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wking Ok, but half of this stuff doesn't make sense.

Let's stop holding up this PR on sillyness.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's stop holding up this PR on sillyness

I'm trying to hold it up on pan-OCI consistency. But yeah, project-template moves… slowly :p. I've filed opencontainers/project-template#27 to adjust the template on this point, and am happy to merge that in-flight PR into this one if you like the change.

issue
- If it's a feature branch, create an enhancement issue to announce your
intentions, and name it XXX-something where XXX is the number of the issue.

Small changes or changes that have been discussed on the project mailing list
may be submitted without a leader issue, in which case you are free to name
your branch however you like.

If the project has a test suite, submit unit tests for your changes. Take a
look at existing tests for inspiration. Run the full test suite on your branch
before submitting a pull request.

Update the documentation when creating or modifying features. Test
your documentation changes for clarity, concision, and correctness, as
well as a clean documentation build. See ``docs/README.md`` for more
information on building the docs and how docs get released.

Write clean code. Universally formatted code promotes ease of writing, reading,
and maintenance. Always run `gofmt -s -w file.go` on each changed file before
committing your changes. Most editors have plugins that do this automatically.

Pull requests descriptions should be as clear as possible and include a
reference to all the issues that they address.

Commit messages must start with a capitalized and short summary
written in the imperative, followed by an optional, more detailed
explanatory text which is separated from the summary by an empty line.

Code review comments may be added to your pull request. Discuss, then make the
suggested modifications and push additional commits to your feature branch. Be
sure to post a comment after pushing. The new commits will show up in the pull
request automatically, but the reviewers will not be notified unless you
comment.

Before the pull request is merged, make sure that you squash your commits into
logical units of work using `git rebase -i` and `git push -f`. After every
commit the test suite (if any) should be passing. Include documentation changes
in the same commit so that a revert would remove all traces of the feature or
fix.

Commits that fix or close an issue should include a reference like `Closes #XXX`
or `Fixes #XXX`, which will automatically close the issue when merged.

### Sign your work

The sign-off is a simple line at the end of the explanation for the patch. Your
signature certifies that you wrote the patch or otherwise have the right to pass
it on as an open-source patch. The rules are pretty simple: if you can certify
the below (from [developercertificate.org](http://developercertificate.org/)):
The sign-off is a simple line at the end of the explanation for the
patch, which certifies that you wrote it or otherwise have the right to
pass it on as an open-source patch. The rules are pretty simple: if you
can certify the below (from
[developercertificate.org](http://developercertificate.org/)):

```
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
660 York Street, Suite 102,
San Francisco, CA 94110 USA

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Expand Down Expand Up @@ -62,11 +117,10 @@ By making a contribution to this project, I certify that:
this project or the open source license(s) involved.
```

Then you just add a line to every git commit message:
then you just add a line to every git commit message:

Signed-off-by: Joe Smith <joe.smith@email.com>
Signed-off-by: Joe Smith <joe@gmail.com>

Use your real name (sorry, no pseudonyms or anonymous contributions.)
using your real name (sorry, no pseudonyms or anonymous contributions.)

If you set your `user.name` and `user.email` git configs, you can sign your
commit automatically with `git commit -s`.
You can add the sign off when creating the git commit via `git commit -s`.
63 changes: 63 additions & 0 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Project governance

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:

> Creating, maintaining and enforcing governance guidelines for the TDC, approved by the maintainers, and which shall be posted visibly for the TDC.

This section describes generic rules and procedures for fulfilling that mandate.

## Proposing a motion

A maintainer SHOULD propose a motion on the [email protected] mailing list (except [security issues](#security-issues)) with another maintainer as a co-sponsor.

## Voting

Voting on a proposed motion SHOULD happen on the [email protected] mailing list (except [security issues](#security-issues)) with maintainers posting LGTM or REJECT.
Maintainers MAY also explicitly not vote by posting ABSTAIN (which is useful to revert a previous vote).
Maintainers MAY post multiple times (e.g. as they revise their position based on feeback), but only their final post counts in the tally.
A proposed motion is adopted if two-thirds of votes cast, a quorum having voted, are in favor of the release.

Voting SHOULD remain open for a week to collect feedback from the wider community and allow the maintainers to digest the proposed motion.
Under exceptional conditions (e.g. non-major security fix releases) proposals which reach quorum with unanimous support MAY be adopted earlier.

A maintainer MAY choose to reply with REJECT.
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).
The maintainers SHOULD try to resolve the concerns and wait for the rejecting maintainer to change their opinion to LGTM.
However, a motion MAY be adopted with REJECTs, as outlined in the previous paragraphs.

## Quorum

A quorum is established when at least two-thirds of maintainers have voted.

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.

## Amendments

The [project governance](#project-governance) rules and procedures MAY be amended or replaced using the procedures themselves.
The MAINTAINERS of this project governance document is the total set of MAINTAINERS from all Open Containers projects (runC, runtime-spec, and image-spec).

## Subject templates

Maintainers are busy and get lots of email.
To make project proposals recognizable, proposed motions SHOULD use the following subject templates.

### Proposing a motion

> [{project} VOTE]: {motion description} (closes {end of voting window})

For example:

> [runtime-spec VOTE]: Tag 0647920 as 1.0.0-rc (closes 2016-06-03 20:00 UTC)

### Tallying results

After voting closes, a maintainer SHOULD post a tally to the motion thread with a subject template like:

> [{project} {status}]: {motion description} (+{LGTMs} -{REJECTs} #{ABSTAINs})

Where `{status}` is either `adopted` or `rejected`.
For example:

> [runtime-spec adopted]: Tag 0647920 as 1.0.0-rc (+6 -0 #3)

[charter]: https://www.opencontainers.org/about/governance
18 changes: 14 additions & 4 deletions LICENSE.code → LICENSE
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@

Apache License
Version 2.0, January 2004
https://www.apache.org/licenses/
http://www.apache.org/licenses/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wking Don't undo your work!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The HTTPS form is not my work. I think consistency with project-template is more important than keeping an HTTPS here, especially as the canonical source for this license uses HTTP.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've filed opencontainers/project-template#25 to bring the template exactly in line with the canonical source.


TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

Expand Down Expand Up @@ -176,13 +175,24 @@

END OF TERMS AND CONDITIONS

Copyright 2016 Docker, Inc.
APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright {yyyy} {name of copyright owner}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ummm

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is pulled in from project-template (where it mostly matches the Apache source), and you're not supposed to update the instructions here anyway.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

@wking wking Jan 18, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And from another Apache project:

https://github.com/apache/httpd/blob/2.4.25/LICENSE#L189

I think “just copy project-template” makes the most sense, but if you feel like you're supposed to edit the template instructions (agreeing with Mesos and disagreeing with project-template, Apache's httpd, and @thaJeztah here), I can adjust the merge commit to keep the old line instead of the project-template line.


Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0
http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
Expand Down
120 changes: 120 additions & 0 deletions MAINTAINERS_GUIDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
## Introduction

Dear maintainer. Thank you for investing the time and energy to help
make this project as useful as possible. Maintaining a project is difficult,
sometimes unrewarding work. Sure, you will get to contribute cool
features to the project. But most of your time will be spent reviewing,
cleaning up, documenting, answering questions, justifying design
decisions - while everyone has all the fun! But remember - the quality
of the maintainers work is what distinguishes the good projects from the
great. So please be proud of your work, even the unglamourous parts,
and encourage a culture of appreciation and respect for *every* aspect
of improving the project - not just the hot new features.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting mix of single and double spaces after periods in this paragraph. I wouldn't hold up the PR on this, but it might be something to look at fixing in the temoplate.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I'm gradually working on fixing the template. But until those land I'd rather land these policy docs without local changes.


This document is a manual for maintainers old and new. It explains what
is expected of maintainers, how they should work, and what tools are
available to them.

This is a living document - if you see something out of date or missing,
speak up!

## What are a maintainer's responsibility?

It is every maintainer's responsibility to:

* 1) Expose a clear roadmap for improving their component.
* 2) Deliver prompt feedback and decisions on pull requests.
* 3) Be available to anyone with questions, bug reports, criticism etc.
on their component. This includes IRC and GitHub issues and pull requests.
* 4) Make sure their component respects the philosophy, design and
roadmap of the project.

## How are decisions made?

Short answer: with pull requests to the project repository.

This project is an open-source project with an open design philosophy. This
means that the repository is the source of truth for EVERY aspect of the
project, including its philosophy, design, roadmap and APIs. *If it's
part of the project, it's in the repo. It's in the repo, it's part of
the project.*

As a result, all decisions can be expressed as changes to the
repository. An implementation change is a change to the source code. An
API change is a change to the API specification. A philosophy change is
a change to the philosophy manifesto. And so on.

All decisions affecting this project, big and small, follow the same 3 steps:

* Step 1: Open a pull request. Anyone can do this.

* Step 2: Discuss the pull request. Anyone can do this.

* Step 3: Accept (`LGTM`) or refuse a pull request. The relevant maintainers do
this (see below "Who decides what?")

### I'm a maintainer, should I make pull requests too?

Yes. Nobody should ever push to master directly. All changes should be
made through a pull request.

## Who decides what?

All decisions are pull requests, and the relevant maintainers make
decisions by accepting or refusing the pull request. Review and acceptance
by anyone is denoted by adding a comment in the pull request: `LGTM`.
However, only currently listed `MAINTAINERS` are counted towards the required
two LGTMs. In addition, if a maintainer has created a pull request, they cannot
count toward the two LGTM rule (to ensure equal amounts of review for every pull
request, no matter who wrote it).

Overall the maintainer system works because of mutual respect across the
maintainers of the project. The maintainers trust one another to make decisions
in the best interests of the project. Sometimes maintainers can disagree and
this is part of a healthy project to represent the point of views of various people.
In the case where maintainers cannot find agreement on a specific change the
role of a Chief Maintainer comes into play.

The Chief Maintainer for the project is responsible for overall architecture
of the project to maintain conceptual integrity. Large decisions and
architecture changes should be reviewed by the chief maintainer.
The current chief maintainer for the project is the first person listed
in the MAINTAINERS file.

Even though the maintainer system is built on trust, if there is a conflict
with the chief maintainer on a decision, their decision can be challenged
and brought to the technical oversight board if two-thirds of the
maintainers vote for an appeal. It is expected that this would be a
very exceptional event.


### How are maintainers added?

The best maintainers have a vested interest in the project. Maintainers
are first and foremost contributors that have shown they are committed to
the long term success of the project. Contributors wanting to become
maintainers are expected to be deeply involved in contributing code,
pull request review, and triage of issues in the project for more than two months.

Just contributing does not make you a maintainer, it is about building trust
with the current maintainers of the project and being a person that they can
depend on and trust to make decisions in the best interest of the project. The
final vote to add a new maintainer should be approved by over 66% of the current
maintainers with the chief maintainer having veto power. In case of a veto,
conflict resolution rules expressed above apply. The voting period is
five business days on the Pull Request to add the new maintainer.


### What is expected of maintainers?

Part of a healthy project is to have active maintainers to support the community
in contributions and perform tasks to keep the project running. Maintainers are
expected to be able to respond in a timely manner if their help is required on specific
issues where they are pinged. Being a maintainer is a time consuming commitment and should
not be taken lightly.

When a maintainer is unable to perform the required duties they can be removed with
a vote by 66% of the current maintainers with the chief maintainer having veto power.
The voting period is ten business days. Issues related to a maintainer's performance should
be discussed with them among the other maintainers so that they are not surprised by
a pull request removing them.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Weird line wrapping here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is verbatim from project-template. I'd be in favor of PRs there to get consistent line wrapping, but would rather avoid local edits to content templated upstream.

15 changes: 4 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,17 +88,10 @@ the alternatives you tried before submitting a PR.

# Reporting security issues
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section should be left in place. Reporting of security issues should not be buried in the contributing docs.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replaced with a stub referencing the CONTRIBUTING section with 8e7ab5bcaabd2a. I think we do want the canonical docs in CONTRIBUTING though, since GitHub will show a link to those docs to anyone filing a new issue.


The maintainers take security seriously. If you discover a security
issue, please bring it to their attention right away!

Please DO NOT file a public issue, instead send your report privately
to [email protected].

Security reports are greatly appreciated and we will publicly thank you
for it. We also like to send gifts—if you're into Docker schwag, make
sure to let us know. We currently do not offer a paid security bounty
program, but are not ruling it out in the future.
Guidelines for reporting security issues are [here][security].

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this link work?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup, see it in action here.


# Copyright and license

Copyright © 2016 Docker, Inc. All rights reserved, except as follows. Code is released under the [Apache 2.0 license](LICENSE.code). This `README.md` file and the [`CONTRIBUTING.md`](CONTRIBUTING.md) file are licensed under the Creative Commons Attribution 4.0 International License under the terms and conditions set forth in the file [`LICENSE.docs`](LICENSE.docs). You may obtain a duplicate copy of the same license, titled CC BY-SA 4.0, at http://creativecommons.org/licenses/by-sa/4.0/.
Copyright © 2016 Docker, Inc. All rights reserved, except as follows. Code and the [`CONTRIBUTING.md`](CONTRIBUTING.md) file are released under the [Apache 2.0 license](LICENSE). This `README.md` file is licensed under the Creative Commons Attribution 4.0 International License under the terms and conditions set forth in the file [`LICENSE.docs`](LICENSE.docs). You may obtain a duplicate copy of the same license, titled CC BY-SA 4.0, at http://creativecommons.org/licenses/by-sa/4.0/.

[security]: CONTRIBUTING.md#security-issues
Loading