Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: expressjs/express
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 6da454c7fb37e68ed65ffe0371aa688b89f5bd6e
Choose a base ref
...
head repository: expressjs/express
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 3d7fce56a35f4f73fa437866cd1401587a212334
Choose a head ref

Commits on May 18, 2017

  1. examples: fix route in params example

    closes #3310
    hiowenluke authored and dougwilson committed May 18, 2017
    Copy the full SHA
    fde8f64 View commit details
  2. Copy the full SHA
    60f87f8 View commit details
  3. Copy the full SHA
    cf37240 View commit details
  4. Copy the full SHA
    9f019c8 View commit details

Commits on Jun 4, 2017

  1. build: Node.js@7.10

    dougwilson committed Jun 4, 2017
    Copy the full SHA
    9467a39 View commit details
  2. build: mocha@3.4.2

    dougwilson committed Jun 4, 2017
    Copy the full SHA
    48777dc View commit details

Commits on Jul 1, 2017

  1. deps: qs@6.5.0

    dougwilson committed Jul 1, 2017
    Copy the full SHA
    deffce5 View commit details
  2. deps: debug@2.6.8

    closes #3286
    closes #3337
    dougwilson committed Jul 1, 2017
    Copy the full SHA
    bd5951e View commit details
  3. Copy the full SHA
    1adee79 View commit details

Commits on Jul 26, 2017

  1. build: Node.js@6.11

    dougwilson committed Jul 26, 2017
    Copy the full SHA
    04beebb View commit details
  2. docs: fix GitHub capitalization

    closes #3353
    piperchester authored and dougwilson committed Jul 26, 2017
    Copy the full SHA
    43dff4c View commit details
  3. Copy the full SHA
    5e16f40 View commit details
  4. deps: proxy-addr@~1.1.5

    dougwilson committed Jul 26, 2017
    Copy the full SHA
    582381b View commit details

Commits on Aug 3, 2017

  1. deps: depd@~1.1.1

    dougwilson committed Aug 3, 2017
    Copy the full SHA
    3eb16c2 View commit details
  2. build: ejs@2.5.7

    dougwilson committed Aug 3, 2017
    Copy the full SHA
    b2af101 View commit details

Commits on Aug 4, 2017

  1. examples: fix path join in ejs example

    fixes #3382
    closes #3383
    closes #3385
    Hung HOANG authored and dougwilson committed Aug 4, 2017
    Copy the full SHA
    daf66be View commit details
  2. deps: finalhandler@~1.0.4

    dougwilson committed Aug 4, 2017
    Copy the full SHA
    85770a7 View commit details
  3. build: mocha@3.5.0

    dougwilson committed Aug 4, 2017
    Copy the full SHA
    e0aa8bf View commit details

Commits on Aug 6, 2017

  1. tests: fix incorrect should usage

    closes #3387
    Lysander6 authored and dougwilson committed Aug 6, 2017
    Copy the full SHA
    713d2ae View commit details
  2. Copy the full SHA
    56e90e3 View commit details
  3. Copy the full SHA
    1dbaae5 View commit details
  4. 1
    Copy the full SHA
    44881fa View commit details
  5. Copy the full SHA
    e006622 View commit details
  6. deps: send@0.15.4

    dougwilson committed Aug 6, 2017
    Copy the full SHA
    e2d725e View commit details
  7. deps: serve-static@1.12.4

    dougwilson committed Aug 6, 2017
    Copy the full SHA
    a50f109 View commit details

Commits on Aug 7, 2017

  1. 4.15.4

    dougwilson committed Aug 7, 2017
    Copy the full SHA
    a4bd437 View commit details

Commits on Aug 18, 2017

  1. Copy the full SHA
    48817a7 View commit details

Commits on Sep 14, 2017

  1. build: mocha@3.5.3

    dougwilson committed Sep 14, 2017
    Copy the full SHA
    78e5510 View commit details
  2. build: should@13.0.1

    dougwilson committed Sep 14, 2017
    Copy the full SHA
    b208b24 View commit details

Commits on Sep 18, 2017

  1. Copy the full SHA
    de5fb62 View commit details

Commits on Sep 22, 2017

  1. deps: fresh@0.5.2

    dougwilson committed Sep 22, 2017
    Copy the full SHA
    9e067ad View commit details
  2. deps: send@0.15.5

    dougwilson committed Sep 22, 2017
    Copy the full SHA
    9e0fa7f View commit details
  3. deps: serve-static@1.12.5

    dougwilson committed Sep 22, 2017
    Copy the full SHA
    961dbff View commit details
  4. build: should@13.1.0

    dougwilson committed Sep 22, 2017
    Copy the full SHA
    d7da225 View commit details
  5. Copy the full SHA
    19a2eeb View commit details

Commits on Sep 23, 2017

  1. deps: debug@2.6.9

    dougwilson committed Sep 23, 2017
    Copy the full SHA
    9395db4 View commit details
  2. deps: finalhandler@~1.0.6

    dougwilson committed Sep 23, 2017
    Copy the full SHA
    bd1672f View commit details
  3. deps: send@0.15.6

    dougwilson committed Sep 23, 2017
    Copy the full SHA
    7137bf5 View commit details
  4. deps: serve-static@1.12.6

    dougwilson committed Sep 23, 2017
    Copy the full SHA
    40435ec View commit details

Commits on Sep 25, 2017

  1. 4.15.5

    dougwilson committed Sep 25, 2017
    Copy the full SHA
    ea3d605 View commit details

Commits on Sep 26, 2017

  1. build: support Node.js 8.x

    dougwilson committed Sep 26, 2017
    Copy the full SHA
    94fdb67 View commit details
  2. Copy the full SHA
    c3fb7e5 View commit details
  3. Copy the full SHA
    80f1ea9 View commit details
  4. Copy the full SHA
    48940e6 View commit details
  5. deps: setprototypeof@1.1.0

    dougwilson committed Sep 26, 2017
    Copy the full SHA
    550043c View commit details

Commits on Sep 28, 2017

  1. deps: accepts@~1.3.4

    dougwilson committed Sep 28, 2017
    Copy the full SHA
    9a99c15 View commit details
  2. deps: content-type@~1.0.4

    dougwilson committed Sep 28, 2017
    Copy the full SHA
    70589c3 View commit details
  3. deps: etag@~1.8.1

    dougwilson committed Sep 28, 2017
    Copy the full SHA
    e62bb8b View commit details
  4. deps: qs@6.5.1

    dougwilson committed Sep 28, 2017
    Copy the full SHA
    ad7d96d View commit details
  5. deps: parseurl@~1.3.2

    dougwilson committed Sep 28, 2017
    Copy the full SHA
    5cc761c View commit details
Showing with 5,837 additions and 873 deletions.
  1. +2 −0 .eslintignore
  2. +8 −0 .eslintrc.yml
  3. +161 −0 .github/workflows/ci.yml
  4. +5 −16 .gitignore
  5. +0 −31 .travis.yml
  6. +92 −0 Charter.md
  7. +139 −0 Code-Of-Conduct.md
  8. +6 −3 Collaborator-Guide.md
  9. +36 −8 Contributing.md
  10. +264 −9 History.md
  11. +31 −14 Readme.md
  12. +4 −0 Security.md
  13. +63 −0 Triager-Guide.md
  14. +82 −9 appveyor.yml
  15. +1 −4 benchmarks/middleware.js
  16. +30 −0 examples/README.md
  17. +8 −6 examples/auth/index.js
  18. +2 −0 examples/auth/views/head.ejs
  19. +2 −3 examples/auth/views/login.ejs
  20. +3 −1 examples/content-negotiation/db.js
  21. +2 −0 examples/content-negotiation/index.js
  22. +1 −0 examples/content-negotiation/users.js
  23. +4 −3 examples/cookie-sessions/index.js
  24. +4 −3 examples/cookies/index.js
  25. +3 −0 examples/downloads/files/notes/groceries.txt
  26. +15 −7 examples/downloads/index.js
  27. +3 −1 examples/ejs/index.js
  28. +1 −1 examples/ejs/public/stylesheets/style.css
  29. +1 −0 examples/ejs/views/header.html
  30. +2 −2 examples/ejs/views/users.html
  31. +4 −2 examples/error-pages/index.js
  32. +2 −2 examples/error-pages/views/404.ejs
  33. +2 −2 examples/error-pages/views/500.ejs
  34. +2 −0 examples/error-pages/views/error_header.ejs
  35. +2 −0 examples/error-pages/views/index.ejs
  36. +3 −1 examples/error/index.js
  37. +3 −1 examples/hello-world/index.js
  38. +2 −0 examples/markdown/index.js
  39. +2 −0 examples/multi-router/controllers/api_v1.js
  40. +2 −0 examples/multi-router/controllers/api_v2.js
  41. +3 −1 examples/multi-router/index.js
  42. +2 −0 examples/multipart/index.js
  43. +3 −1 examples/mvc/controllers/main/index.js
  44. +2 −0 examples/mvc/controllers/pet/index.js
  45. +2 −0 examples/mvc/controllers/pet/views/edit.ejs
  46. +2 −0 examples/mvc/controllers/pet/views/show.ejs
  47. +2 −0 examples/mvc/controllers/user-pet/index.js
  48. +2 −0 examples/mvc/controllers/user/index.js
  49. +2 −0 examples/mvc/controllers/user/views/edit.hbs
  50. +2 −0 examples/mvc/controllers/user/views/list.hbs
  51. +2 −0 examples/mvc/controllers/user/views/show.hbs
  52. +3 −1 examples/mvc/db.js
  53. +3 −2 examples/mvc/index.js
  54. +2 −0 examples/mvc/lib/boot.js
  55. +1 −1 examples/mvc/public/style.css
  56. +1 −0 examples/mvc/views/404.ejs
  57. +1 −0 examples/mvc/views/5xx.ejs
  58. +6 −1 examples/online/index.js
  59. +4 −2 examples/params/index.js
  60. +4 −2 examples/resource/index.js
  61. +7 −4 examples/route-map/index.js
  62. +5 −3 examples/route-middleware/index.js
  63. +3 −2 examples/route-separation/index.js
  64. +2 −0 examples/route-separation/post.js
  65. +3 −1 examples/route-separation/site.js
  66. +2 −0 examples/route-separation/user.js
  67. +1 −0 examples/route-separation/views/header.ejs
  68. +3 −3 examples/route-separation/views/index.ejs
  69. +2 −2 examples/route-separation/views/posts/index.ejs
  70. +2 −2 examples/route-separation/views/users/edit.ejs
  71. +2 −2 examples/route-separation/views/users/index.ejs
  72. +2 −2 examples/route-separation/views/users/view.ejs
  73. +6 −1 examples/search/index.js
  74. +4 −2 examples/search/public/client.js
  75. +1 −0 examples/search/public/index.html
  76. +6 −1 examples/session/index.js
  77. +2 −0 examples/session/redis.js
  78. +2 −0 examples/static-files/index.js
  79. +1 −1 examples/static-files/public/js/app.js
  80. +2 −0 examples/vhost/index.js
  81. +3 −1 examples/view-constructor/github-view.js
  82. +2 −1 examples/view-constructor/index.js
  83. +3 −1 examples/view-locals/index.js
  84. +2 −0 examples/view-locals/user.js
  85. +1 −0 examples/view-locals/views/index.ejs
  86. +13 −8 examples/web-service/index.js
  87. +3 −3 lib/application.js
  88. +10 −5 lib/express.js
  89. +2 −1 lib/middleware/query.js
  90. +11 −3 lib/request.js
  91. +103 −32 lib/response.js
  92. +9 −3 lib/router/index.js
  93. +2 −2 lib/router/route.js
  94. +26 −22 lib/utils.js
  95. +9 −2 lib/view.js
  96. +44 −39 package.json
  97. +8 −8 test/Route.js
  98. +29 −19 test/Router.js
  99. +16 −1 test/acceptance/auth.js
  100. +4 −4 test/acceptance/cookie-sessions.js
  101. +17 −0 test/acceptance/downloads.js
  102. +2 −5 test/acceptance/error-pages.js
  103. +1 −1 test/acceptance/error.js
  104. +21 −0 test/acceptance/hello-world.js
  105. +1 −1 test/acceptance/multi-router.js
  106. +2 −2 test/acceptance/params.js
  107. +1 −1 test/acceptance/route-map.js
  108. +5 −5 test/acceptance/web-service.js
  109. +8 −5 test/app.all.js
  110. +1 −0 test/app.del.js
  111. +10 −8 test/app.engine.js
  112. +8 −10 test/app.head.js
  113. +40 −18 test/app.js
  114. +1 −5 test/app.listen.js
  115. +9 −7 test/app.locals.js
  116. +1 −0 test/app.options.js
  117. +17 −18 test/app.param.js
  118. +32 −33 test/app.render.js
  119. +120 −0 test/app.request.js
  120. +114 −15 test/app.response.js
  121. +2 −0 test/app.route.js
  122. +62 −40 test/app.router.js
  123. +9 −6 test/app.routes.error.js
  124. +33 −18 test/app.use.js
  125. +7 −6 test/config.js
  126. +31 −4 test/exports.js
  127. +665 −0 test/express.json.js
  128. +388 −0 test/express.raw.js
  129. +814 −0 test/express.static.js
  130. +442 −0 test/express.text.js
  131. +735 −0 test/express.urlencoded.js
  132. 0 test/fixtures/broken.send
  133. 0 test/fixtures/empty.txt
  134. +1 −0 test/fixtures/nums.txt
  135. +1 −0 test/fixtures/pets/names.txt
  136. 0 test/fixtures/snow ☃/.gitkeep
  137. +1 −0 test/fixtures/todo.html
  138. +1 −0 test/fixtures/todo.txt
  139. +1 −0 test/fixtures/users/index.html
  140. +1 −0 test/fixtures/users/tobi.txt
  141. +4 −1 test/middleware.basic.js
  142. +0 −1 test/mocha.opts
  143. +1 −0 test/regression.js
  144. +1 −0 test/req.accepts.js
  145. +3 −2 test/req.acceptsCharset.js
  146. +3 −2 test/req.acceptsCharsets.js
  147. +19 −16 test/req.acceptsEncoding.js
  148. +20 −17 test/req.acceptsEncodings.js
  149. +29 −25 test/req.acceptsLanguage.js
  150. +29 −25 test/req.acceptsLanguages.js
  151. +1 −0 test/req.baseUrl.js
  152. +1 −0 test/req.fresh.js
  153. +1 −0 test/req.get.js
  154. +1 −1 test/req.host.js
  155. +51 −1 test/req.hostname.js
  156. +17 −1 test/req.ip.js
  157. +1 −0 test/req.ips.js
  158. +1 −0 test/req.is.js
  159. +2 −2 test/req.param.js
  160. +1 −0 test/req.path.js
  161. +1 −0 test/req.protocol.js
  162. +7 −4 test/req.query.js
  163. +1 −1 test/req.range.js
  164. +7 −4 test/req.route.js
  165. +1 −0 test/req.secure.js
  166. +2 −1 test/req.signedCookies.js
  167. +1 −0 test/req.stale.js
  168. +1 −0 test/req.subdomains.js
  169. +23 −55 test/req.xhr.js
  170. +1 −0 test/res.append.js
  171. +3 −1 test/res.attachment.js
  172. +1 −0 test/res.clearCookie.js
  173. +24 −23 test/res.cookie.js
  174. +120 −2 test/res.download.js
  175. +11 −8 test/res.format.js
  176. +1 −0 test/res.get.js
  177. +39 −1 test/res.json.js
  178. +95 −53 test/res.jsonp.js
  179. +1 −0 test/res.links.js
  180. +5 −6 test/res.locals.js
  181. +1 −0 test/res.location.js
  182. +14 −2 test/res.redirect.js
  183. +21 −4 test/res.render.js
  184. +57 −11 test/res.send.js
  185. +138 −50 test/res.sendFile.js
  186. +1 −1 test/res.sendStatus.js
  187. +1 −0 test/res.set.js
  188. +1 −0 test/res.status.js
  189. +3 −1 test/res.type.js
  190. +1 −1 test/res.vary.js
  191. +1 −1 test/support/env.js
  192. +1 −0 test/support/tmpl.js
  193. +34 −0 test/support/utils.js
  194. +21 −20 test/utils.js
2 changes: 2 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
coverage
node_modules
8 changes: 8 additions & 0 deletions .eslintrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
root: true

rules:
eol-last: error
eqeqeq: [error, allow-null]
indent: [error, 2, { MemberExpression: "off", SwitchCase: 1 }]
no-trailing-spaces: error
no-unused-vars: [error, { vars: all, args: none, ignoreRestSiblings: true }]
161 changes: 161 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
name: ci

on:
- pull_request
- push

jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
name:
- Node.js 0.10
- Node.js 0.12
- io.js 1.x
- io.js 2.x
- io.js 3.x
- Node.js 4.x
- Node.js 5.x
- Node.js 6.x
- Node.js 7.x
- Node.js 8.x
- Node.js 9.x
- Node.js 10.x
- Node.js 11.x
- Node.js 12.x
- Node.js 13.x
- Node.js 14.x

include:
- name: Node.js 0.10
node-version: "0.10"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: Node.js 0.12
node-version: "0.12"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: io.js 1.x
node-version: "1.8"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: io.js 2.x
node-version: "2.5"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: io.js 3.x
node-version: "3.3"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: Node.js 4.x
node-version: "4.9"
npm-i: mocha@5.2.0 nyc@11.9.0 supertest@3.4.2

- name: Node.js 5.x
node-version: "5.12"
npm-i: mocha@5.2.0 nyc@11.9.0 supertest@3.4.2

- name: Node.js 6.x
node-version: "6.17"
npm-i: mocha@6.2.2 nyc@14.1.1 supertest@6.1.6

- name: Node.js 7.x
node-version: "7.10"
npm-i: mocha@6.2.2 nyc@14.1.1 supertest@6.1.6

- name: Node.js 8.x
node-version: "8.17"
npm-i: mocha@7.2.0

- name: Node.js 9.x
node-version: "9.11"
npm-i: mocha@7.2.0

- name: Node.js 10.x
node-version: "10.24"
npm-i: mocha@8.4.0

- name: Node.js 11.x
node-version: "11.15"
npm-i: mocha@8.4.0

- name: Node.js 12.x
node-version: "12.22"

- name: Node.js 13.x
node-version: "13.14"

- name: Node.js 14.x
node-version: "14.19"

steps:
- uses: actions/checkout@v2

- name: Install Node.js ${{ matrix.node-version }}
shell: bash -eo pipefail -l {0}
run: |
nvm install --default ${{ matrix.node-version }}
dirname "$(nvm which ${{ matrix.node-version }})" >> "$GITHUB_PATH"
- name: Configure npm
run: |
npm config set loglevel error
npm config set shrinkwrap false
- name: Install npm module(s) ${{ matrix.npm-i }}
run: npm install --save-dev ${{ matrix.npm-i }}
if: matrix.npm-i != ''

- name: Remove non-test dependencies
run: npm rm --silent --save-dev connect-redis

- name: Setup Node.js version-specific dependencies
shell: bash
run: |
# eslint for linting
# - remove on Node.js < 10
if [[ "$(cut -d. -f1 <<< "${{ matrix.node-version }}")" -lt 10 ]]; then
node -pe 'Object.keys(require("./package").devDependencies).join("\n")' | \
grep -E '^eslint(-|$)' | \
sort -r | \
xargs -n1 npm rm --silent --save-dev
fi
- name: Install Node.js dependencies
run: npm install

- name: List environment
id: list_env
shell: bash
run: |
echo "node@$(node -v)"
echo "npm@$(npm -v)"
npm -s ls ||:
(npm -s ls --depth=0 ||:) | awk -F'[ @]' 'NR>1 && $2 { print "::set-output name=" $2 "::" $3 }'
- name: Run tests
shell: bash
run: npm run test-ci

- name: Lint code
if: steps.list_env.outputs.eslint != ''
run: npm run lint

- name: Collect code coverage
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
flag-name: run-${{ matrix.test_number }}
parallel: true

coverage:
needs: test
runs-on: ubuntu-latest
steps:
- name: Upload code coverage
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true
21 changes: 5 additions & 16 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,26 +1,15 @@
# OS X
.DS_Store*
Icon?
._*

# Windows
Thumbs.db
ehthumbs.db
Desktop.ini

# Linux
.directory
*~


# npm
node_modules
package-lock.json
*.log
*.gz


# Coveralls
.nyc_output
coverage

# Benchmarking
benchmarks/graphs

# ignore additional files using core.excludesFile
# https://git-scm.com/docs/gitignore
31 changes: 0 additions & 31 deletions .travis.yml

This file was deleted.

92 changes: 92 additions & 0 deletions Charter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Express Charter

## Section 0: Guiding Principles

The Express project is part of the OpenJS Foundation which operates
transparently, openly, collaboratively, and ethically.
Project proposals, timelines, and status must not merely be open, but
also easily visible to outsiders.

## Section 1: Scope

Express is a http web server framework with a simple and expressive API
which is highly aligned with Node.js core. We aim to be the best in
class for writing performant, spec compliant, and powerful web servers
in Node.js. As one of the oldest and most popular web frameworks in
the ecosystem, we have an important place for new users and experts
alike.

### 1.1: In-scope

Express is made of many modules spread between three GitHub Orgs:

- [expressjs](http://github.com/expressjs/): Top level middleware and
libraries
- [pillarjs](http://github.com/pillarjs/): Components which make up
Express but can also be used for other web frameworks
- [jshttp](http://github.com/jshttp/): Low level http libraries

### 1.2: Out-of-Scope

Section Intentionally Left Blank

## Section 2: Relationship with OpenJS Foundation CPC.

Technical leadership for the projects within the OpenJS Foundation is
delegated to the projects through their project charters by the OpenJS
Cross Project Council (CPC). In the case of the Express project, it is
delegated to the Express Technical Committee ("TC").

This Technical Committee is in charge of both the day-to-day operations
of the project, as well as its technical management. This charter can
be amended by the TC requiring at least two approvals and a minimum two
week comment period for other TC members or CPC members to object. Any
changes the CPC wishes to propose will be considered a priority but
will follow the same process.

### 2.1 Other Formal Project Relationships

Section Intentionally Left Blank

## Section 3: Express Governing Body

The Express project is managed by the Technical Committee ("TC").
Members can be added to the TC at any time. Any committer can nominate
another committer to the TC and the TC uses its standard consensus
seeking process to evaluate whether or not to add this new member.
Members who do not participate consistently at the level of a majority
of the other members are expected to resign.

## Section 4: Roles & Responsibilities

The Express TC manages all aspects of both the technical and community
parts of the project. Members of the TC should attend the regular
meetings when possible, and be available for discussion of time
sensitive or important issues.

### Section 4.1 Project Operations & Management

Section Intentionally Left Blank

### Section 4.2: Decision-making, Voting, and/or Elections

The Express TC uses a "consensus seeking" process for issues that are
escalated to the TC. The group tries to find a resolution that has no
open objections among TC members. If a consensus cannot be reached
that has no objections then a majority wins vote is called. It is also
expected that the majority of decisions made by the TC are via a
consensus seeking process and that voting is only used as a last-resort.

Resolution may involve returning the issue to committers with
suggestions on how to move forward towards a consensus. It is not
expected that a meeting of the TC will resolve all issues on its
agenda during that meeting and may prefer to continue the discussion
happening among the committers.

### Section 4.3: Other Project Roles

Section Intentionally Left Blank

## Section 5: Definitions

Section Intentionally Left Blank
Loading