This project charter serves as a statement of scope and objectives for the Mocha project.
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.
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.
- APIs ("interfaces") to write and organize tests written in JavaScript or compile-to-JavaScript languages
- Command-line executable to run tests in a Node.js-based terminal environment
- API to run tests in a browser environment
- Output test results and errors (provide "reporters") to:
- Terminal
- File
- Browser
- Memory
- APIs to extend functionality
- File-based and code-based configuration
- Internal test coverage for all of the above
- Documentation including (but not limited to):
- Website (https://mochajs.org) contents and design
- Test-writing and test-organizing APIs
- Reporters
- Extensible APIs
- Tutorials and code samples
- Command-line execution and options
- Browser-based execution and options
- Project administration
- Contribution guide
- General support for multiple levels of tests, including (but not limited to):
- Unit tests
- Integration tests
- Functional/end-to-end tests
- Operational readiness tests
- Tool configuration for project tests, build, documentation or website deployment
- Bespoke tools, if needed
- LTS (long-term support) policies, processes, and release cadence
- Third-party service integrations (e.g., bots, CI servers, SCM)
- Project-endorsed spaces for collaboration (chat rooms, mailing lists, forums, etc.)
- Project-maintained social media, if any
- Test assertions and mocks or related
- Compatibility with other 3rd-party libraries not hosted under GitHub's mochajs organization unless explicitly stated in §2: Scope
- Note: existence of "official" code samples does not imply explicit support
- Efforts must be made to retain compatibility with popular libraries, frameworks and tools, but not at the expense of Mocha itself
- Use within unmaintained versions of Node.js
- Use within browsers not meeting a threshold decided upon by maintainers
- Use within non-Node.js or non-browser environments, unless otherwise explicitly stated in §2: Scope
- "Unofficial" collaboration or Q&A spaces (including Stack Overflow and Quora)
- Certain classes of contributions:
- Bug fixes or enhancements without associated test coverage
- Features having limited general-purpose use (as determined by maintainers)
- Bug fixes which "break" more users than are affected by the bug itself, regardless of "correctness"
- Breaking changes to API without demonstrated need, especially those which would cause correct, currently-passing tests to fail
- Changes that significantly negatively impact performance without demonstrated need
- Code reviews, issue comments or pull requests which are dogmatic, demanding, or excessively critical as to discourage contributions by others
- Those which violate Mocha's Code of Conduct
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 (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.
Changes to the following cannot unilaterally be applied by project leadership, and must be ratified by the CPC:
- Mocha's Project Charter (this document)
- Mocha's Code of Conduct
- Mocha's licenses: MIT (for code) and CC-BY-4.0 (for documentation/website)
Section Intentionally Left Blank
Mocha is governed by its maintainers. See MAINTAINERS.md for more information.
The roles and responsibilities of Mocha's maintainers are described in MAINTAINERS.md.
Project operations and processes are described in MAINTAINERS.md.
Mocha uses a loose consensus-seeking process, described in MAINTAINERS.md.
Section Intentionally Left Blank
Section Intentionally Left Blank