|
| 1 | +# Mocha Charter |
| 2 | + |
| 3 | +This project charter serves as a statement of scope and objectives for the **Mocha** project. |
| 4 | + |
| 5 | +## §1: Guiding Principles |
| 6 | + |
| 7 | +The **Mocha** 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. |
| 8 | + |
| 9 | +## §2: Scope |
| 10 | + |
| 11 | +**Mocha** is a unopinionated, _general-purpose testing framework_ for the JavaScript community. **Mocha** favors flexibility over rigidity, stability over disruption, and deliberation over agility. **Mocha** aims to do one thing, and do it well. **Mocha** will strive to evolve with the needs of the community, but will make every effort not to abandon its current users in doing so. |
| 12 | + |
| 13 | +### §2.1: In-Scope |
| 14 | + |
| 15 | +- APIs ("interfaces") to write and organize tests written in JavaScript or compile-to-JavaScript languages |
| 16 | +- Command-line executable to run tests in a Node.js-based terminal environment |
| 17 | +- API to run tests in a browser environment |
| 18 | +- Output test results and errors (provide "reporters") to: |
| 19 | + - Terminal |
| 20 | + - File |
| 21 | + - Browser |
| 22 | + - Memory |
| 23 | +- APIs to extend functionality |
| 24 | +- File-based and code-based configuration |
| 25 | +- Internal test coverage for all of the above |
| 26 | +- Documentation including (but not limited to): |
| 27 | + - Website ([https://mochajs.org](https://mochajs.org)) contents and design |
| 28 | + - Test-writing and test-organizing APIs |
| 29 | + - Reporters |
| 30 | + - [Extensible APIs](https://mochajs.org/api) |
| 31 | + - Tutorials and [code samples](https://github.com/mochajs/mocha-examples) |
| 32 | + - Command-line execution and options |
| 33 | + - Browser-based execution and options |
| 34 | + - [Project administration](https://github.com/mochajs/admin) |
| 35 | + - [Contribution guide](https://github.com/mochajs/mocha/blob/master/.github/CONTRIBUTING.md) |
| 36 | +- General support for multiple levels of tests, including (but not limited to): |
| 37 | + - Unit tests |
| 38 | + - Integration tests |
| 39 | + - Functional/end-to-end tests |
| 40 | + - Operational readiness tests |
| 41 | +- Tool configuration for project tests, build, documentation or website deployment |
| 42 | +- Bespoke tools, if needed |
| 43 | +- LTS (long-term support) policies, processes, and release cadence |
| 44 | +- Third-party service integrations (e.g., bots, CI servers, SCM) |
| 45 | +- Project-endorsed spaces for collaboration (chat rooms, mailing lists, forums, etc.) |
| 46 | +- Project-maintained social media, if any |
| 47 | + |
| 48 | +### §2.2: Out-of-Scope |
| 49 | + |
| 50 | +- [Test assertions](https://wikipedia.org/wiki/Test_assertion) and [mocks](https://en.wikipedia.org/wiki/Mock_object) or related |
| 51 | +- Compatibility with other 3rd-party libraries not hosted under GitHub's [mochajs organization](https://github.com/mochajs) unless explicitly stated in [§2: Scope](#%c2%a72-scope) |
| 52 | + - Note: _existence of "official" code samples does not imply explicit support_ |
| 53 | + - Efforts must be made to retain compatibility with popular libraries, frameworks and tools, but not at the expense of Mocha itself |
| 54 | +- Use within _unmaintained_ versions of Node.js |
| 55 | +- Use within browsers not meeting a threshold decided upon by maintainers |
| 56 | +- Use within non-Node.js or non-browser environments, unless otherwise explicitly stated in [§2: Scope](#%c2%a72-scope) |
| 57 | +- "Unofficial" collaboration or Q&A spaces (including Stack Overflow and Quora) |
| 58 | +- Certain classes of contributions: |
| 59 | + - Bug fixes or enhancements without associated test coverage |
| 60 | + - Features having limited general-purpose use (as determined by maintainers) |
| 61 | + - Bug fixes which "break" more users than are affected by the bug itself, _regardless_ of "correctness" |
| 62 | + - Breaking changes to API without demonstrated need, especially those which would cause correct, currently-passing tests to fail |
| 63 | + - Changes that significantly negatively impact performance without demonstrated need |
| 64 | + - Code reviews, issue comments or pull requests which are dogmatic, demanding, or excessively critical as to discourage contributions by others |
| 65 | + - Those which violate Mocha's [Code of Conduct] |
| 66 | + |
| 67 | +## §3: Relationship with OpenJS Foundation CPC |
| 68 | + |
| 69 | +Technical leadership for the projects within the [OpenJS Foundation] is delegated to the projects through their project charters by the [OpenJS Foundation Cross-Project Council](https://openjsf.org/about/governance/) (CPC). In the case of the Mocha project, it is delegated exclusively to the maintainers of Mocha. The OpenJS Foundation's business leadership is the Board of Directors. |
| 70 | + |
| 71 | +Changes to the following **cannot** unilaterally be applied by project leadership, and must be ratified by the CPC: |
| 72 | + |
| 73 | +- Mocha's Project Charter (this document) |
| 74 | +- Mocha's [Code of Conduct] |
| 75 | +- Mocha's licenses: [MIT](https://github.com/mochajs/mocha/blob/master/LICENSE) (for code) and [CC-BY-4.0](https://github.com/mochajs/mocha/blob/master/docs/LICENSE-CC-BY-4.0) (for documentation/website) |
| 76 | + |
| 77 | +### §3.1: Other Formal Project Relationships |
| 78 | + |
| 79 | +Section Intentionally Left Blank |
| 80 | + |
| 81 | +## §4: Mocha's Governing Body |
| 82 | + |
| 83 | +Mocha is governed by its maintainers. See [MAINTAINERS.md] for more information. |
| 84 | + |
| 85 | +## §5: Roles & Responsibilities |
| 86 | + |
| 87 | +The roles and responsibilities of Mocha's maintainers are described in [MAINTAINERS.md]. |
| 88 | + |
| 89 | +### §5.1: Project Operations & Management |
| 90 | + |
| 91 | +Project operations and processes are described in [MAINTAINERS.md]. |
| 92 | + |
| 93 | +### §5.2: Decision-making, Voting, and/or Elections |
| 94 | + |
| 95 | +Mocha uses a loose consensus-seeking process, described in [MAINTAINERS.md]. |
| 96 | + |
| 97 | +### §5.3: Other Project Roles |
| 98 | + |
| 99 | +Section Intentionally Left Blank |
| 100 | + |
| 101 | +## §6: Definitions |
| 102 | + |
| 103 | +Section Intentionally Left Blank |
| 104 | + |
| 105 | +[openjs foundation]: https://openjsf.org |
| 106 | +[maintainers.md]: https://github.com/mochajs/mocha/blob/master/MAINTAINERS.md |
| 107 | +[code of conduct]: https://github.com/mochajs/mocha/blob/master/.github/CODE_OF_CONDUCT.md |
0 commit comments