mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
b97110dda7
Signed-off-by: Jessica Frazelle <acidburn@docker.com>
387 lines
12 KiB
Text
387 lines
12 KiB
Text
# Docker maintainers file
|
|
#
|
|
# This file describes who runs the Docker project and how.
|
|
# This is a living document - if you see something out of date or missing,
|
|
# speak up!
|
|
#
|
|
# It is structured to be consumable by both humans and programs.
|
|
# To extract its contents programmatically, use any TOML-compliant
|
|
# parser.
|
|
|
|
[Rules]
|
|
|
|
[Rules.maintainers]
|
|
|
|
title = "What is a maintainer?"
|
|
|
|
text = """
|
|
There are different types of maintainers, with different responsibilities, but
|
|
all maintainers have 3 things in common:
|
|
|
|
1) They share responsibility in the project's success.
|
|
2) They have made a long-term, recurring time investment to improve the project.
|
|
3) They spend that time doing whatever needs to be done, not necessarily what
|
|
is the most interesting or fun.
|
|
|
|
Maintainers are often under-appreciated, because their work is harder to appreciate.
|
|
It's easy to appreciate a really cool and technically advanced feature. It's harder
|
|
to appreciate the absence of bugs, the slow but steady improvement in stability,
|
|
or the reliability of a release process. But those things distinguish a good
|
|
project from a great one.
|
|
"""
|
|
|
|
[Rules.bdfl]
|
|
|
|
title = "The Benevolent dictator for life (BDFL)"
|
|
|
|
text = """
|
|
Docker follows the timeless, highly efficient and totally unfair system
|
|
known as [Benevolent dictator for
|
|
life](https://en.wikipedia.org/wiki/Benevolent_Dictator_for_Life), with
|
|
yours truly, Solomon Hykes, in the role of BDFL. This means that all
|
|
decisions are made, by default, by Solomon. Since making every decision
|
|
myself would be highly un-scalable, in practice decisions are spread
|
|
across multiple maintainers.
|
|
|
|
Ideally, the BDFL role is like the Queen of England: awesome crown, but not
|
|
an actual operational role day-to-day. The real job of a BDFL is to NEVER GO AWAY.
|
|
Every other rule can change, perhaps drastically so, but the BDFL will always
|
|
be there, preserving the philosophy and principles of the project, and keeping
|
|
ultimate authority over its fate. This gives us great flexibility in experimenting
|
|
with various governance models, knowing that we can always press the "reset" button
|
|
without fear of fragmentation or deadlock. See the US congress for a counter-example.
|
|
|
|
BDFL daily routine:
|
|
|
|
* Is the project governance stuck in a deadlock or irreversibly fragmented?
|
|
* If yes: refactor the project governance
|
|
* Are there issues or conflicts escalated by core?
|
|
* If yes: resolve them
|
|
* Go back to polishing that crown.
|
|
"""
|
|
|
|
[Rules.decisions]
|
|
|
|
title = "How are decisions made?"
|
|
|
|
text = """
|
|
Short answer: EVERYTHING IS A PULL REQUEST.
|
|
|
|
Docker 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, road map, and APIs. *If it's
|
|
part of the project, it's in the repo. If 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 Docker, 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: Merge or refuse the pull request. Who does this depends on the nature
|
|
of the pull request and which areas of the project it affects. See *review flow*
|
|
for details.
|
|
|
|
Because Docker is such a large and active project, it's important for everyone to know
|
|
who is responsible for deciding what. That is determined by a precise set of rules.
|
|
|
|
* For every *decision* in the project, the rules should designate, in a deterministic way,
|
|
who should *decide*.
|
|
|
|
* For every *problem* in the project, the rules should designate, in a deterministic way,
|
|
who should be responsible for *fixing* it.
|
|
|
|
* For every *question* in the project, the rules should designate, in a deterministic way,
|
|
who should be expected to have the *answer*.
|
|
"""
|
|
|
|
[Rules.review]
|
|
|
|
title = "Review flow"
|
|
|
|
text = """
|
|
Pull requests should be processed according to the following flow:
|
|
|
|
* For each subsystem affected by the change, the maintainers of the subsystem must approve or refuse it.
|
|
It is the responsibility of the subsystem maintainers to process patches affecting them in a timely
|
|
manner.
|
|
|
|
* If the change affects areas of the code which are not part of a subsystem,
|
|
or if subsystem maintainers are unable to reach a timely decision, it must be approved by
|
|
the core maintainers.
|
|
|
|
* If the change affects the UI or public APIs, or if it represents a major change in architecture,
|
|
the architects must approve or refuse it.
|
|
|
|
* If the change affects the operations of the project, it must be approved or rejected by
|
|
the relevant operators.
|
|
|
|
* If the change affects the governance, philosophy, goals or principles of the project,
|
|
it must be approved by BDFL.
|
|
"""
|
|
|
|
[Rules.DCO]
|
|
|
|
title = "Helping contributors with the DCO"
|
|
|
|
text = """
|
|
The [DCO or `Sign your work`](
|
|
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work)
|
|
requirement is not intended as a roadblock or speed bump.
|
|
|
|
Some Docker contributors are not as familiar with `git`, or have used a web based
|
|
editor, and thus asking them to `git commit --amend -s` is not the best way forward.
|
|
|
|
In this case, maintainers can update the commits based on clause (c) of the DCO. The
|
|
most trivial way for a contributor to allow the maintainer to do this, is to add
|
|
a DCO signature in a Pull Requests's comment, or a maintainer can simply note that
|
|
the change is sufficiently trivial that it does not substantially change the existing
|
|
contribution - i.e., a spelling change.
|
|
|
|
When you add someone's DCO, please also add your own to keep a log.
|
|
"""
|
|
|
|
[Rules.holiday]
|
|
|
|
title = "I'm a maintainer, and I'm going on holiday"
|
|
|
|
text = """
|
|
Please let your co-maintainers and other contributors know by raising a pull
|
|
request that comments out your `MAINTAINERS` file entry using a `#`.
|
|
"""
|
|
|
|
[Rules."no direct push"]
|
|
|
|
title = "I'm a maintainer. Should I make pull requests too?"
|
|
|
|
text = """
|
|
Yes. Nobody should ever push to master directly. All changes should be
|
|
made through a pull request.
|
|
"""
|
|
|
|
[Rules.meta]
|
|
|
|
title = "How is this process changed?"
|
|
|
|
text = "Just like everything else: by making a pull request :)"
|
|
|
|
# Current project organization
|
|
[Org]
|
|
|
|
bdfl = "shykes"
|
|
|
|
# The chief architect is responsible for the overall integrity of the technical architecture
|
|
# across all subsystems, and the consistency of APIs and UI.
|
|
#
|
|
# Changes to UI, public APIs and overall architecture (for example a plugin system) must
|
|
# be approved by the chief architect.
|
|
"Chief Architect" = "shykes"
|
|
|
|
# The chief maintainer is responsible for all aspects of quality for the project including
|
|
# code reviews, usability, stability, security, performance, etc.
|
|
# The most important function of the chief maintainer is to lead by example. On the first
|
|
# day of a new maintainer, the best advice should be "follow the C.M.'s example and you'll
|
|
# be fine".
|
|
"Chief Maintainer" = "crosbymichael"
|
|
|
|
# The community manager is responsible for serving the project community, including users,
|
|
# contributors and partners. This involves:
|
|
# - facilitating communication between maintainers, contributors and users
|
|
# - organizing contributor and maintainer events
|
|
# - helping new contributors get involved
|
|
# - anything the project community needs to be successful
|
|
#
|
|
# The community manager is a point of contact for any contributor who has questions, concerns
|
|
# or feedback about project operations.
|
|
"Community Manager" = "theadactyl"
|
|
|
|
[Org."Core maintainers"]
|
|
|
|
# The Core maintainers are the ghostbusters of the project: when there's a problem others
|
|
# can't solve, they show up and fix it with bizarre devices and weaponry.
|
|
# They have final say on technical implementation and coding style.
|
|
# They are ultimately responsible for quality in all its forms: usability polish,
|
|
# bugfixes, performance, stability, etc. When ownership can cleanly be passed to
|
|
# a subsystem, they are responsible for doing so and holding the
|
|
# subsystem maintainers accountable. If ownership is unclear, they are the de facto owners.
|
|
|
|
# For each release (including minor releases), a "release captain" is assigned from the
|
|
# pool of core maintainers. Rotation is encouraged across all maintainers, to ensure
|
|
# the release process is clear and up-to-date.
|
|
#
|
|
# It is common for core maintainers to "branch out" to join or start a subsystem.
|
|
|
|
people = [
|
|
"calavera",
|
|
"cpuguy83",
|
|
"crosbymichael",
|
|
"duglin",
|
|
"erikh",
|
|
"estesp",
|
|
"icecrime",
|
|
"jfrazelle",
|
|
"lk4d4",
|
|
"runcom",
|
|
"tianon",
|
|
"tibor",
|
|
"unclejack",
|
|
"vbatts",
|
|
"vdemeester",
|
|
"vieux",
|
|
"vishh"
|
|
]
|
|
|
|
[Org."Docs maintainers"]
|
|
|
|
# TODO Describe the docs maintainers role.
|
|
|
|
people = [
|
|
"jamtur01",
|
|
"moxiegirl",
|
|
"sven",
|
|
"thajeztah"
|
|
]
|
|
|
|
[Org.Curators]
|
|
|
|
# The curators help ensure that incoming issues and pull requests are properly triaged and
|
|
# that our various contribution and reviewing processes are respected. With their knowledge of
|
|
# the repository activity, they can also guide contributors to relevant material or
|
|
# discussions.
|
|
#
|
|
# They are neither code nor docs reviewers, so they are never expected to merge. They can
|
|
# however:
|
|
# - close an issue or pull request when it's an exact duplicate
|
|
# - close an issue or pull request when it's inappropriate or off-topic
|
|
|
|
people = [
|
|
"thajeztah"
|
|
]
|
|
|
|
|
|
[people]
|
|
|
|
# A reference list of all people associated with the project.
|
|
# All other sections should refer to people by their canonical key
|
|
# in the people section.
|
|
|
|
# ADD YOURSELF HERE IN ALPHABETICAL ORDER
|
|
[people.calavera]
|
|
Name = "David Calavera"
|
|
Email = "david.calavera@gmail.com"
|
|
GitHub = "calavera"
|
|
|
|
[people.cpuguy83]
|
|
Name = "Brian Goff"
|
|
Email = "cpuguy83@gmail.com"
|
|
Github = "cpuguy83"
|
|
|
|
[people.crosbymichael]
|
|
Name = "Michael Crosby"
|
|
Email = "crosbymichael@gmail.com"
|
|
GitHub = "crosbymichael"
|
|
[people.duglin]
|
|
Name = "Doug Davis"
|
|
Email = "dug@us.ibm.com"
|
|
GitHub = "duglin"
|
|
|
|
[people.erikh]
|
|
Name = "Erik Hollensbe"
|
|
Email = "erik@docker.com"
|
|
GitHub = "erikh"
|
|
|
|
[people.estesp]
|
|
Name = "Phil Estes"
|
|
Email = "estesp@linux.vnet.ibm.com"
|
|
GitHub = "estesp"
|
|
|
|
[people.icecrime]
|
|
Name = "Arnaud Porterie"
|
|
Email = "arnaud@docker.com"
|
|
GitHub = "icecrime"
|
|
|
|
[people.jamtur01]
|
|
Name = "James Turnbull"
|
|
Email = "james@lovedthanlost.net"
|
|
GitHub = "jamtur01"
|
|
|
|
[people.jfrazelle]
|
|
Name = "Jessie Frazelle"
|
|
Email = "j@docker.com"
|
|
GitHub = "jfrazelle"
|
|
|
|
[people.lk4d4]
|
|
Name = "Alexander Morozov"
|
|
Email = "lk4d4@docker.com"
|
|
GitHub = "lk4d4"
|
|
|
|
[people.moxiegirl]
|
|
Name = "Mary Anthony"
|
|
Email = "mary.anthony@docker.com"
|
|
GitHub = "moxiegirl"
|
|
|
|
[people.runcom]
|
|
Name = "Antonio Murdaca"
|
|
Email = "me@runcom.ninja"
|
|
GitHub = "runcom"
|
|
|
|
[people.shykes]
|
|
Name = "Solomon Hykes"
|
|
Email = "solomon@docker.com"
|
|
GitHub = "shykes"
|
|
|
|
[people.sven]
|
|
Name = "Sven Dowideit"
|
|
Email = "SvenDowideit@home.org.au"
|
|
GitHub = "SvenDowideit"
|
|
|
|
[people.thajeztah]
|
|
Name = "Sebastiaan van Stijn"
|
|
Email = "github@gone.nl"
|
|
GitHub = "thaJeztah"
|
|
|
|
[people.theadactyl]
|
|
Name = "Thea Lamkin"
|
|
Email = "thea@docker.com"
|
|
GitHub = "theadactyl"
|
|
|
|
[people.tianon]
|
|
Name = "Tianon Gravi"
|
|
Email = "admwiggin@gmail.com"
|
|
GitHub = "tianon"
|
|
|
|
[people.tibor]
|
|
Name = "Tibor Vass"
|
|
Email = "tibor@docker.com"
|
|
GitHub = "tiborvass"
|
|
|
|
[people.unclejack]
|
|
Name = "Cristian Staretu"
|
|
Email = "cristian.staretu@gmail.com"
|
|
GitHub = "unclejack"
|
|
|
|
[people.vbatts]
|
|
Name = "Vincent Batts"
|
|
Email = "vbatts@redhat.com"
|
|
GitHub = "vbatts"
|
|
|
|
[people.vdemeester]
|
|
Name = "Vincent Demeester"
|
|
Email = "vincent@sbr.pm"
|
|
GitHub = "vdemeester"
|
|
|
|
[people.vieux]
|
|
Name = "Victor Vieux"
|
|
Email = "vieux@docker.com"
|
|
GitHub = "vieux"
|
|
|
|
[people.vishh]
|
|
Name = "Vishnu Kannan"
|
|
Email = "vishnuk@google.com"
|
|
GitHub = "vishh"
|