blob: 45a79d45a1c410e0583bd23cbe137ecad8581d56 [file] [view]
# Contributing
Thank you for your interest in contributing to the Apache Cassandra Node.js Driver! This repository is now part of the Apache Software Foundation (ASF) and follows Apache contribution practices.
## Ways to Contribute
There are many ways to contribute, including:
- **Bug Reports**: Identify incorrect behavior, inconsistencies, or regressions in the driver. Provide reproduction steps when possible.
- **Feature Requests**: Propose improvements or new functionality. Please describe the use case (not just a proposed API).
- **Documentation Improvements**: Enhance guides, examples, javadocs, or configuration explanations.
- **Pull Requests**: Submit fixes, enhancements, performance improvements, or refactorings.
- **Testing Contributions**: Add missing tests, improve coverage, or enhance test infrastructure.
- **Support & Triage**: Help evaluate reported issues or contribute to discussions.
- **Verify Releases**: Verify the release artifacts work correctly in your environment, when a release is proposed in the mailing list.
### Communication
1. **Mailing List**:
- https://lists.apache.org/list.html?dev@cassandra.apache.org
2. **JIRA**:
- https://issues.apache.org/jira/projects/CASSNODEJS
- Older issues before the donation can be found at:
- https://datastax-oss.atlassian.net/projects/NODEJS
3. **GitHub Repository**: https://github.com/apache/cassandra-nodejs-driver
4. **Slack**: #cassandar-drivers channel, in the Apache Software Foundation [Slack](https://infra.apache.org/slack.html).
Ask in the mailing list for an invite to the Slack workspace.
## Submitting changes
### Submitting Changes (Pull Requests)
All code changes require:
1. **A corresponding JIRA ticket**
Include the JIRA key in the PR title, e.g.:
`NODEJS-696: Migrate Travis CI to Github Action`
2. **A pull request on GitHub**
Repository: <https://github.com/apache/cassandra-nodejs-driver>
3. **Tests**
Every fix or feature should include or update tests. PRs without tests are rarely accepted.
4. **Documentation updates**
Update manual, javadocs, examples, or reference docs when applicable.
5. **Passing CI**
PRs must pass all CI jobs unless reviewers explicitly allow exceptions.
6. **Code Review**
All PRs require at least two approvals from Apache committers before merging.
7. **Squash after review**
After committers' approvals and before merging, please squash commits into one, with a commit message in the following format:
```
NODEJS-696: Migrate Travis CI to Github Action
patch by Jane He; reviewed by Abe Ratnofsky and Bret McGuire for NODEJS-696
```
## Development Setup
### Prerequisites
- Node.js v20 or later
- npm
### Running Tests Locally
1. Install Cassandra Cluster Manager (CCM) following its [README](https://github.com/apache/cassandra-ccm).
2. On MacOS only, enable loopback aliases:
```shell
for i in {2..255}; do sudo ifconfig lo0 alias 127.0.0.$i up; done
```
Note: This may slow down networking. To remove the aliases after testing:
```shell
for i in {2..255}; do sudo ifconfig lo0 -alias 127.0.0.$i up; done
```
3. Install project dependencies: `npm install`
4. Run the tests: `npx mocha test/unit test/integration/short --recursive --exit`.
You can specify the Cassandra version by the `CCM_VERSION` environment variable, e.g.:
`CCM_VERSION=5.0.2 npx mocha test/unit test/integration/short --recursive --exit`.
## License and CLA
All contributions are made under the Apache License, Version 2.0. The ASF requires a signed Contributor License Agreement (CLA) for non-trivial contributions.