github.com/mheon/docker@v0.11.2-0.20150922122814-44f47903a831/MAINTAINERS (about)

     1  # Docker maintainers file
     2  #
     3  # This file describes who runs the Docker project and how.
     4  # This is a living document - if you see something out of date or missing,
     5  # speak up!
     6  #
     7  # It is structured to be consumable by both humans and programs.
     8  # To extract its contents programmatically, use any TOML-compliant
     9  # parser.
    10  
    11  [Rules]
    12  
    13  	[Rules.maintainers]
    14  
    15  		title = "What is a maintainer?"
    16  
    17  		text = """
    18  There are different types of maintainers, with different responsibilities, but
    19  all maintainers have 3 things in common:
    20  
    21  1) They share responsibility in the project's success.
    22  2) They have made a long-term, recurring time investment to improve the project.
    23  3) They spend that time doing whatever needs to be done, not necessarily what
    24  is the most interesting or fun.
    25  
    26  Maintainers are often under-appreciated, because their work is harder to appreciate.
    27  It's easy to appreciate a really cool and technically advanced feature. It's harder
    28  to appreciate the absence of bugs, the slow but steady improvement in stability,
    29  or the reliability of a release process. But those things distinguish a good
    30  project from a great one.
    31  """
    32  
    33  	[Rules.bdfl]
    34  
    35  		title = "The Benevolent dictator for life (BDFL)"
    36  
    37  		text = """
    38  Docker follows the timeless, highly efficient and totally unfair system
    39  known as [Benevolent dictator for
    40  life](https://en.wikipedia.org/wiki/Benevolent_Dictator_for_Life), with
    41  yours truly, Solomon Hykes, in the role of BDFL. This means that all
    42  decisions are made, by default, by Solomon. Since making every decision
    43  myself would be highly un-scalable, in practice decisions are spread
    44  across multiple maintainers.
    45  
    46  Ideally, the BDFL role is like the Queen of England: awesome crown, but not
    47  an actual operational role day-to-day. The real job of a BDFL is to NEVER GO AWAY.
    48  Every other rule can change, perhaps drastically so, but the BDFL will always
    49  be there, preserving the philosophy and principles of the project, and keeping
    50  ultimate authority over its fate. This gives us great flexibility in experimenting
    51  with various governance models, knowing that we can always press the "reset" button
    52  without fear of fragmentation or deadlock. See the US congress for a counter-example.
    53  
    54  BDFL daily routine:
    55  
    56  * Is the project governance stuck in a deadlock or irreversibly fragmented?
    57  	* If yes: refactor the project governance
    58  * Are there issues or conflicts escalated by core?
    59  	* If yes: resolve them
    60  * Go back to polishing that crown.
    61  """
    62  
    63  	[Rules.decisions]
    64  
    65  		title = "How are decisions made?"
    66  
    67  		text = """
    68  Short answer: EVERYTHING IS A PULL REQUEST.
    69  
    70  Docker is an open-source project with an open design philosophy. This
    71  means that the repository is the source of truth for EVERY aspect of the
    72  project, including its philosophy, design, road map, and APIs. *If it's
    73  part of the project, it's in the repo. If it's in the repo, it's part of
    74  the project.*
    75  
    76  As a result, all decisions can be expressed as changes to the
    77  repository. An implementation change is a change to the source code. An
    78  API change is a change to the API specification. A philosophy change is
    79  a change to the philosophy manifesto, and so on.
    80  
    81  All decisions affecting Docker, big and small, follow the same 3 steps:
    82  
    83  * Step 1: Open a pull request. Anyone can do this.
    84  
    85  * Step 2: Discuss the pull request. Anyone can do this.
    86  
    87  * Step 3: Merge or refuse the pull request. Who does this depends on the nature
    88  of the pull request and which areas of the project it affects. See *review flow*
    89  for details.
    90  
    91  Because Docker is such a large and active project, it's important for everyone to know
    92  who is responsible for deciding what. That is determined by a precise set of rules.
    93  
    94  * For every *decision* in the project, the rules should designate, in a deterministic way,
    95  who should *decide*.
    96  
    97  * For every *problem* in the project, the rules should designate, in a deterministic way,
    98  who should be responsible for *fixing* it.
    99  
   100  * For every *question* in the project, the rules should designate, in a deterministic way,
   101  who should be expected to have the *answer*.
   102  """
   103  
   104  	[Rules.review]
   105  
   106  		title = "Review flow"
   107  
   108  		text = """
   109  Pull requests should be processed according to the following flow:
   110  
   111  * For each subsystem affected by the change, the maintainers of the subsystem must approve or refuse it.
   112  It is the responsibility of the subsystem maintainers to process patches affecting them in a timely
   113  manner.
   114  
   115  * If the change affects areas of the code which are not part of a subsystem,
   116  or if subsystem maintainers are unable to reach a timely decision, it must be approved by
   117  the core maintainers.
   118  
   119  * If the change affects the UI or public APIs, or if it represents a major change in architecture,
   120  the architects must approve or refuse it.
   121  
   122  * If the change affects the operations of the project, it must be approved or rejected by
   123  the relevant operators.
   124  
   125  * If the change affects the governance, philosophy, goals or principles of the project,
   126  it must be approved by BDFL.
   127  """
   128  
   129  	[Rules.DCO]
   130  
   131  	title = "Helping contributors with the DCO"
   132  
   133  	text = """
   134  The [DCO or `Sign your work`](
   135  https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work)
   136  requirement is not intended as a roadblock or speed bump.
   137  
   138  Some Docker contributors are not as familiar with `git`, or have used a web based
   139  editor, and thus asking them to `git commit --amend -s` is not the best way forward.
   140  
   141  In this case, maintainers can update the commits based on clause (c) of the DCO. The
   142  most trivial way for a contributor to allow the maintainer to do this, is to add
   143  a DCO signature in a Pull Requests's comment, or a maintainer can simply note that
   144  the change is sufficiently trivial that it does not substantivly change the existing
   145  contribution - i.e., a spelling change.
   146  
   147  When you add someone's DCO, please also add your own to keep a log.
   148  """
   149  
   150  	[Rules.holiday]
   151  
   152  	title = "I'm a maintainer, and I'm going on holiday"
   153  
   154  	text = """
   155  Please let your co-maintainers and other contributors know by raising a pull
   156  request that comments out your `MAINTAINERS` file entry using a `#`.
   157  """
   158  
   159  	[Rules."no direct push"]
   160  
   161  	title = "I'm a maintainer. Should I make pull requests too?"
   162  
   163  	text = """
   164  Yes. Nobody should ever push to master directly. All changes should be
   165  made through a pull request.
   166  """
   167  
   168  	[Rules.meta]
   169  
   170  	title = "How is this process changed?"
   171  
   172  	text = "Just like everything else: by making a pull request :)"
   173  
   174  # Current project organization
   175  [Org]
   176  
   177  	bdfl = "shykes"
   178  
   179  	# The chief architect is responsible for the overall integrity of the technical architecture
   180  	# across all subsystems, and the consistency of APIs and UI.
   181  	#
   182  	# Changes to UI, public APIs and overall architecture (for example a plugin system) must
   183  	# be approved by the chief architect.
   184  	"Chief Architect" = "shykes"
   185  
   186  	[Org.Operators]
   187  
   188  	# The operators make sure the trains run on time. They are responsible for overall operations
   189  	# of the project. This includes facilitating communication between all the participants; helping
   190  	# newcomers get involved and become successful contributors and maintainers; tracking the schedule
   191  	# of releases; managing the relationship with downstream distributions and upstream dependencies;
   192  	# define measures of success for the project and measure progress; Devise and implement tools and
   193  	# processes which make contributors and maintainers happier and more efficient.
   194  
   195  
   196  		[Org.Operators.security]
   197  
   198  			people = [
   199  				"erw",
   200  				"diogomonica",
   201  				"nathanmccauley"
   202  			]
   203  
   204  		[Org.Operators."monthly meetings"]
   205  
   206  			people = [
   207  				"sven",
   208  				"tianon"
   209  			]
   210  
   211  		[Org.Operators.infrastructure]
   212  
   213  			people = [
   214  				"jfrazelle",
   215  				"crosbymichael"
   216  			]
   217  
   218  		[Org.Operators.community]
   219  			people = [
   220  				"theadactyl"
   221  			]
   222  
   223  	# The chief maintainer is responsible for all aspects of quality for the project including
   224  	# code reviews, usability, stability, security, performance, etc.
   225  	# The most important function of the chief maintainer is to lead by example. On the first
   226  	# day of a new maintainer, the best advice should be "follow the C.M.'s example and you'll
   227  	# be fine".
   228  	"Chief Maintainer" = "crosbymichael"
   229  
   230  	# The community manager is responsible for serving the project community, including users, 
   231  	# contributors and partners. This involves:
   232  	#	- facilitating communication between maintainers, contributors and users
   233  	#	- organizing contributor and maintainer events
   234  	#	- helping new contributors get involved
   235  	#	- anything the project community needs to be successful
   236  	#
   237  	# The community manager is a point of contact for any contributor who has questions, concerns 
   238  	# or feedback about project operations.
   239  	"Community Manager" = "theadactyl"
   240  
   241  	[Org."Core maintainers"]
   242  
   243  	# The Core maintainers are the ghostbusters of the project: when there's a problem others
   244  	# can't solve, they show up and fix it with bizarre devices and weaponry.
   245  	# They have final say on technical implementation and coding style.
   246  	# They are ultimately responsible for quality in all its forms: usability polish,
   247  	# bugfixes, performance, stability, etc. When ownership  can cleanly be passed to
   248  	# a subsystem, they are responsible for doing so and holding the
   249  	# subsystem maintainers accountable. If ownership is unclear, they are the de facto owners.
   250  
   251  	# For each release (including minor releases), a "release captain" is assigned from the
   252  	# pool of core maintainers. Rotation is encouraged across all maintainers, to ensure
   253  	# the release process is clear and up-to-date.
   254  	#
   255  	# It is common for core maintainers to "branch out" to join or start a subsystem.
   256  
   257  
   258  
   259  		people = [
   260  			"calavera",
   261  			"crosbymichael",
   262  			"erikh",
   263  			"estesp",
   264  			"icecrime",
   265  			"jfrazelle",
   266  			"lk4d4",
   267  			"runcom",
   268  			"tibor",
   269  			"unclejack",
   270  			"vbatts",
   271  			"vieux",
   272  			"vishh"
   273  		]
   274  
   275  
   276  	[Org.Subsystems]
   277  
   278  	# As the project grows, it gets separated into well-defined subsystems. Each subsystem
   279  	# has a dedicated group of maintainers, which are dedicated to that subsytem and responsible
   280  	# for its quality.
   281  	# This "cellular division" is the primary mechanism for scaling maintenance of the project as it grows.
   282  	#
   283  	# The maintainers of each subsytem are responsible for:
   284  	#
   285  	# 1. Exposing a clear road map for improving their subsystem.
   286  	# 2. Deliver prompt feedback and decisions on pull requests affecting their subsystem.
   287  	# 3. Be available to anyone with questions, bug reports, criticism etc.
   288  	#	on their component. This includes IRC, GitHub requests and the mailing
   289  	#	list.
   290  	# 4. Make sure their subsystem respects the philosophy, design and
   291  	#	road map of the project.
   292  	#
   293  	# #### How to review patches to your subsystem
   294  	#
   295  	# Accepting pull requests:
   296  	#
   297  	#	- If the pull request appears to be ready to merge, give it a `LGTM`, which
   298  	#	  stands for "Looks Good To Me".
   299  	#	- If the pull request has some small problems that need to be changed, make
   300  	#	  a comment adressing the issues.
   301  	#	- If the changes needed to a PR are small, you can add a "LGTM once the
   302  	#	  following comments are addressed..." this will reduce needless back and
   303  	#	  forth.
   304  	#	- If the PR only needs a few changes before being merged, any MAINTAINER can
   305  	#	  make a replacement PR that incorporates the existing commits and fixes the
   306  	#	  problems before a fast track merge.
   307  	#
   308  	# Closing pull requests:
   309  	#
   310  	#	- If a PR appears to be abandoned, after having attempted to contact the
   311  	#	  original contributor, then a replacement PR may be made. Once the
   312  	#	  replacement PR is made, any contributor may close the original one.
   313  	#	- If you are not sure if the pull request implements a good feature or you
   314  	#	  do not understand the purpose of the PR, ask the contributor to provide
   315  	#	  more documentation.  If the contributor is not able to adequately explain
   316  	#	  the purpose of the PR, the PR may be closed by any MAINTAINER.
   317  	#	- If a MAINTAINER feels that the pull request is sufficiently architecturally
   318  	#	  flawed, or if the pull request needs significantly more design discussion
   319  	#	  before being considered, the MAINTAINER should close the pull request with
   320  	#	  a short explanation of what discussion still needs to be had.  It is
   321  	#	  important not to leave such pull requests open, as this will waste both the
   322  	#	  MAINTAINER's time and the contributor's time.  It is not good to string a
   323  	#	  contributor on for weeks or months, having them make many changes to a PR
   324  	#	  that will eventually be rejected.
   325  
   326  		[Org.Subsystems.Documentation]
   327  
   328  			people = [
   329  				"fredlf",
   330  				"james",
   331  				"moxiegirl",
   332  				"thaJeztah",
   333  				"jamtur01",
   334  				"sven"
   335  			]
   336  
   337  		[Org.Subsystems.libcontainer]
   338  
   339  			people = [
   340  				"crosbymichael",
   341  				"jnagal",
   342  				"lk4d4",
   343  				"mpatel",
   344  				"vmarmol"
   345  			]
   346  
   347  		[Org.Subsystems.registry]
   348  
   349  			people = [
   350  				"dmcg",
   351  				"dmp42",
   352  				"jlhawn",
   353  				"samalba",
   354  				"sday",
   355  				"vbatts"
   356  			]
   357  
   358  		[Org.Subsystems."build tools"]
   359  
   360  			people = [
   361  				"shykes",
   362  				"tianon"
   363  			]
   364  
   365  		[Org.Subsystem."remote api"]
   366  
   367  			people = [
   368  				"vieux"
   369  			]
   370  
   371  		[Org.Subsystem.swarm]
   372  
   373  			people = [
   374  				"aluzzardi",
   375  				"vieux"
   376  			]
   377  
   378  		[Org.Subsystem.machine]
   379  
   380  			people = [
   381  				"bfirsh",
   382  				"ehazlett"
   383  			]
   384  
   385  		[Org.Subsystem.compose]
   386  
   387  			people = [
   388  				"aanand"
   389  			]
   390  
   391  		[Org.Subsystem.builder]
   392  
   393  			people = [
   394  				"duglin",
   395  				"erikh",
   396  				"tibor"
   397  			]
   398  
   399  	[Org.Curators]
   400  
   401  	# The curators help ensure that incoming issues and pull requests are properly triaged and
   402  	# that our various contribution and reviewing processes are respected. With their knowledge of
   403  	# the repository activity, they can also guide contributors to relevant material or
   404  	# discussions.
   405  	#
   406  	# They are neither code nor docs reviewers, so they are never expected to merge. They can
   407  	# however:
   408  	# - close an issue or pull request when it's an exact duplicate
   409  	# - close an issue or pull request when it's inappropriate or off-topic
   410  
   411  	people = [
   412  		"thajeztah"
   413  	]
   414  
   415  
   416  [people]
   417  
   418  # A reference list of all people associated with the project.
   419  # All other sections should refer to people by their canonical key
   420  # in the people section.
   421  
   422  	# ADD YOURSELF HERE IN ALPHABETICAL ORDER
   423  
   424  	[people.aanand]
   425  	Name = "Aanand Prasad"
   426  	Email = "aanand@docker.com"
   427  	GitHub = "aanand"
   428  
   429  	[people.aluzzardi]
   430  	Name = "Andrea Luzzardi"
   431  	Email = "aluzzardi@docker.com"
   432  	GitHub = "aluzzardi"
   433  
   434  	[people.bfirsh]
   435  	Name = "Ben Firshman"
   436  	Email = "ben@firshman.co.uk"
   437  	GitHub = "bfirsh"
   438  
   439  	[people.calavera]
   440  	Name = "David Calavera"
   441  	Email = "david.calavera@gmail.com"
   442  	GitHub = "calavera"
   443  
   444  	[people.cpuguy83]
   445  	Name = "Brian Goff"
   446  	Email = "cpuguy83@gmail.com"
   447  	Github = "cpuguy83"
   448  
   449  	[people.crosbymichael]
   450  	Name = "Michael Crosby"
   451  	Email = "crosbymichael@gmail.com"
   452  	GitHub = "crosbymichael"
   453  
   454  	[people.diogomonica]
   455  	Name = "Diogo Monica"
   456  	Email = "diogo@docker.com"
   457  	GitHub = "diogomonica"
   458  
   459  	[people.duglin]
   460  	Name = "Doug Davis"
   461  	Email = "dug@us.ibm.com"
   462  	GitHub = "duglin"
   463  
   464  	[people.dmcg]
   465  	Name = "Derek McGowan"
   466  	Email = "derek@docker.com"
   467  	Github = "dmcgowan"
   468  
   469  	[people.dmp42]
   470  	Name = "Olivier Gambier"
   471  	Email = "olivier@docker.com"
   472  	Github = "dmp42"
   473  
   474  	[people.ehazlett]
   475  	Name = "Evan Hazlett"
   476  	Email = "ejhazlett@gmail.com"
   477  	GitHub = "ehazlett"
   478  
   479  	[people.erikh]
   480  	Name = "Erik Hollensbe"
   481  	Email = "erik@docker.com"
   482  	GitHub = "erikh"
   483  
   484  	[people.erw]
   485  	Name = "Eric Windisch"
   486  	Email = "eric@windisch.us"
   487  	GitHub = "ewindisch"
   488  
   489  	[people.estesp]
   490  	Name = "Phil Estes"
   491  	Email = "estesp@linux.vnet.ibm.com"
   492  	GitHub = "estesp"
   493  
   494  	[people.fredlf]
   495  	Name = "Fred Lifton"
   496  	Email = "fred.lifton@docker.com"
   497  	GitHub = "fredlf"
   498  
   499  	[people.icecrime]
   500  	Name = "Arnaud Porterie"
   501  	Email = "arnaud@docker.com"
   502  	GitHub = "icecrime"
   503  
   504  	[people.jfrazelle]
   505  	Name = "Jessie Frazelle"
   506  	Email = "j@docker.com"
   507  	GitHub = "jfrazelle"
   508  
   509  	[people.jlhawn]
   510  	Name = "Josh Hawn"
   511  	Email = "josh.hawn@docker.com"
   512  	Github = "jlhawn"
   513  
   514  	[people.lk4d4]
   515  	Name = "Alexander Morozov"
   516  	Email = "lk4d4@docker.com"
   517  	GitHub = "lk4d4"
   518  
   519  	[people.moxiegirl]
   520  	Name = "Mary Anthony"
   521  	Email = "mary.anthony@docker.com"
   522  	GitHub = "moxiegirl"
   523  
   524  	[people.nathanmccauley]
   525  	Name = "Nathan McCauley"
   526  	Email = "nathan.mccauley@docker.com"
   527  	GitHub = "nathanmccauley"
   528  
   529  	[people.runcom]
   530  	Name = "Antonio Murdaca"
   531  	Email = "me@runcom.ninja"
   532  	GitHub = "runcom"
   533  
   534  	[people.sday]
   535  	Name = "Stephen Day"
   536  	Email = "stephen.day@docker.com"
   537  	Github = "stevvooe"
   538  
   539  	[people.shykes]
   540  	Name = "Solomon Hykes"
   541  	Email = "solomon@docker.com"
   542  	GitHub = "shykes"
   543  
   544  	[people.sven]
   545  	Name = "Sven Dowideit"
   546  	Email = "SvenDowideit@home.org.au"
   547  	GitHub = "SvenDowideit"
   548  
   549  	[people.thajeztah]
   550  	Name = "Sebastiaan van Stijn"
   551  	Email = "github@gone.nl"
   552  	GitHub = "thaJeztah"
   553  
   554  	[people.theadactyl]
   555  	Name = "Thea Lamkin"
   556  	Email = "thea@docker.com"
   557  	GitHub = "theadactyl"
   558  
   559  	[people.tianon]
   560  	Name = "Tianon Gravi"
   561  	Email = "admwiggin@gmail.com"
   562  	GitHub = "tianon"
   563  
   564  	[people.tibor]
   565  	Name = "Tibor Vass"
   566  	Email = "tibor@docker.com"
   567  	GitHub = "tiborvass"
   568  
   569  	[people.vbatts]
   570  	Name = "Vincent Batts"
   571  	Email = "vbatts@redhat.com"
   572  	GitHub = "vbatts"
   573  
   574  	[people.vieux]
   575  	Name = "Victor Vieux"
   576  	Email = "vieux@docker.com"
   577  	GitHub = "vieux"
   578  
   579  	[people.vmarmol]
   580  	Name = "Victor Marmol"
   581  	Email = "vmarmol@google.com"
   582  	GitHub = "vmarmol"
   583  
   584  	[people.jnagal]
   585  	Name = "Rohit Jnagal"
   586  	Email = "jnagal@google.com"
   587  	GitHub = "rjnagal"
   588  
   589  	[people.mpatel]
   590  	Name = "Mrunal Patel"
   591  	Email = "mpatel@redhat.com"
   592  	GitHub = "mrunalp"
   593  
   594  	[people.unclejack]
   595  	Name = "Cristian Staretu"
   596  	Email = "cristian.staretu@gmail.com"
   597  	GitHub = "unclejack"
   598  
   599  	[people.vishh]
   600  	Name = "Vishnu Kannan"
   601  	Email = "vishnuk@google.com"
   602  	GitHub = "vishh"