Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

initial draft of project charter; closes #4087 #4088

Merged
merged 1 commit into from Dec 3, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
107 changes: 107 additions & 0 deletions PROJECT_CHARTER.md
@@ -0,0 +1,107 @@
# Mocha Charter

This project charter serves as a statement of scope and objectives for the **Mocha** project.

## §1: Guiding Principles

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.

## §2: Scope

**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.

### §2.1: In-Scope

- 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](https://mochajs.org)) contents and design
- Test-writing and test-organizing APIs
- Reporters
- [Extensible APIs](https://mochajs.org/api)
- Tutorials and [code samples](https://github.com/mochajs/mocha-examples)
- Command-line execution and options
- Browser-based execution and options
- [Project administration](https://github.com/mochajs/admin)
- [Contribution guide](https://github.com/mochajs/mocha/blob/master/.github/CONTRIBUTING.md)
- 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

### §2.2: Out-of-Scope

- [Test assertions](https://wikipedia.org/wiki/Test_assertion) and [mocks](https://en.wikipedia.org/wiki/Mock_object) or related
- 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)
- 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](#%c2%a72-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]

## §3: 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 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.

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](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)

### §3.1: Other Formal Project Relationships

Section Intentionally Left Blank

## §4: Mocha's Governing Body

Mocha is governed by its maintainers. See [MAINTAINERS.md] for more information.

## §5: Roles & Responsibilities

The roles and responsibilities of Mocha's maintainers are described in [MAINTAINERS.md].

### §5.1: Project Operations & Management

Project operations and processes are described in [MAINTAINERS.md].

### §5.2: Decision-making, Voting, and/or Elections

Mocha uses a loose consensus-seeking process, described in [MAINTAINERS.md].

### §5.3: Other Project Roles

Section Intentionally Left Blank

## §6: Definitions

Section Intentionally Left Blank

[openjs foundation]: https://openjsf.org
[maintainers.md]: https://github.com/mochajs/mocha/blob/master/MAINTAINERS.md
[code of conduct]: https://github.com/mochajs/mocha/blob/master/.github/CODE_OF_CONDUCT.md