tolbertam commented on code in PR #2041:
URL: 
https://github.com/apache/cassandra-java-driver/pull/2041#discussion_r2976655487


##########
CONTRIBUTING.md:
##########
@@ -17,42 +17,154 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-# Contributing guidelines
+# Contributing to the Cassandra Java Driver
 
-## Code formatting
+Thank you for your interest in contributing!  
 
-### Java
+## Table of Contents
+- [Ways to Contribute](#ways-to-contribute)
+- [Contribution Process](#contribution-process)
+  - [Reporting Issues](#reporting-issues)
+  - [Submitting Changes (Pull Requests)](#submitting-changes-pull-requests)
+- [Development Setup](#development-setup)
+  - [Prerequisites](#prerequisites)
+  - [Building the Project](#building-the-project)
+  - [Running Tests](#running-tests)
+- [Coding Guidelines](#coding-guidelines)
+  - [General](#general)
+  - [Code Formatting and License Headers](#code-formatting-and-license-headers)
+  - [Javadoc](#javadoc)
+  - [Logging](#logging)
+  - [Don't abuse the stream API](#dont-abuse-the-stream-api)
+  - [Never assume a specific format for 
toString()](#never-assume-a-specific-format-for-tostring)
+  - [Concurrency annotations](#concurrency-annotations)
+  - [Nullability annotations](#nullability-annotations)
+- [Coding Guidelines for Tests](#coding-guidelines-for-tests)
+  - [Coding style -- test code](#coding-style----test-code)
+  - [Unit tests](#unit-tests)
+  - [Integration tests](#integration-tests)
 
-We follow the [Google Java Style 
Guide](https://google.github.io/styleguide/javaguide.html). See
-https://github.com/google/google-java-format for IDE plugins. The rules are 
not configurable.
+## Ways to Contribute
 
-The build will fail if the code is not formatted. To format all files from the 
command line, run:
- 
-```
-mvn fmt:format
-```
+There are many ways to contribute, including:
 
-Some aspects are not covered by the formatter: braces must be used with `if`, 
`else`, `for`, `do`
-and `while` statements, even when the body is empty or contains only a single 
statement.
+- **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.
 
-### XML
+### Communication
+1. **Mailing Lists**: Mail to [email protected] or 
[email protected] to join the [email protected] or 
[email protected] mailing lists.
+2. **Slack**: #cassandar-drivers channel in the Apache Software Foundation 
[Slack](https://infra.apache.org/slack.html). You can ask for an invite to the 
ASF Slack workspace in the mailing lists.
+3. **JIRA**: https://issues.apache.org/jira/projects/CASSJAVA
+4. **GitHub Repository**: https://github.com/apache/cassandra-java-driver
 
-The build will fail if XML files are not formatted correctly. Run the 
following command before you
-commit:
 
-```java
-mvn xml-format:xml-format
+## Contribution Process
+
+### Reporting Issues
+
+All issues must be tracked in **Apache JIRA**:  
+<https://issues.apache.org/jira/projects/CASSJAVA>
+
+When filing an issue:
+
+- Clearly describe the problem, expected behavior, and actual behavior.
+- Include driver version, Java version, and Cassandra cluster details.
+- Add reproduction steps or a minimal test case if possible.
+- Use the appropriate issue type (Bug, Improvement, New Feature, etc.).
+- Set the correct components (e.g., `core`, `mapper-runtime`, `quarkus`).
+
+Committers will help refine the ticket if needed.
+
+### Submitting Changes (Pull Requests)
+
+All code changes require:
+
+1. **A corresponding JIRA ticket** unless it's a ninja fix.  
+   Include the JIRA key in the PR title, e.g.:  
+   `CASSJAVA-40: Driver testing against Java 21`
+   
+2. **A pull request on GitHub**  
+   Repository: <https://github.com/apache/cassandra-java-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.
+
+**Do not** mix unrelated changes in one PR—keep contributions focused.
+
+**Do not** base a PR on another one.
+
+**Do not** squash commits before the PR is ready to merge.
+
+---
+
+## Development Setup
+
+### Prerequisites
+
+- **Java 8+** 
+- **Maven 3.8.1+** 
+
+### Building the Project
+
+- Ensure Maven is installed and you are using Java 8.
+- Build the project with:
+  ```
+  mvn clean package -DskipTests
+  ```
+- If using an IDE like IntelliJ and encountering issues with guava-shaded 
classes:
+   - Run:
+     ```
+     mvn clean install -DskipTests
+     ```
+   - If IntelliJ uses a different Maven version, use the Maven window in 
IntelliJ: under `Lifecycle`, click `clean` and then `install`.
+
+### Running Tests
+
+#### Unit Tests
+
+```bash
+mvn clean install -DskipTests
+mvn test
 ```
 
-The formatter does not enforce a maximum line length, but please try to keep 
it below 100 characters
-to keep files readable across all mediums (IDE, terminal, Github...).
+#### Integration Tests
+
+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. Run integration tests:
+   ```
+   mvn clean verify
+   ```
+   To target a specific Cassandra version or distribution:
+   ```
+   mvn verify -Dccm.version=3.11.0

Review Comment:
   Lets keep this @ 3.11.0 for now, as running with JDK 11 doesn't work 
reliably, will address in follow on



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to