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"