Add cassandra-ecosystem blended files
Companion projects for Apache Cassandra®, co-located in a single repository so cross-cutting changes can be made, reviewed, tested, and released as one unit. This repository was created per CEP-63 by consolidating the former cassandra-analytics and cassandra-sidecar repositories.
| Project | Directory | What it is | Docs |
|---|---|---|---|
| Analytics | analytics/ | Spark bulk reader/writer connector for Cassandra (usable against non-Cassandra sources such as S3), the version-bridge layer, Spark/Avro converters, and the CDC implementation. | README_ANALYTICS.md |
| Sidecar | sidecar/ | Operational sidecar for Cassandra (health, rolling operations, streaming, CDC-to-Kafka) plus its client family and version adapters. | README_SIDECAR.md |
Each project is an independent Gradle build rooted in its own directory (its own settings.gradle, build.gradle, and gradle wrapper). Nothing about the individual builds changed as part of the merge, and today they still consume each other's published artifacts (0.4.0) rather than in-repo project dependencies. Breaking the remaining circular dependency (de-duplicating the Sidecar client, re-homing CDC) is a follow-up, not part of this initial consolidation.
To keep this repository focused and prevent it from becoming a “junk drawer”, a new top-level project may be added only if it is a companion to Apache Cassandra (not Cassandra core), is maintained by the Cassandra community, and benefits materially from co-location with the existing projects. Adding a new top-level project requires a lazy-consensus discussion on dev@cassandra.apache.org (or a follow-up CEP for anything large). Cassandra core does not live here.
Build each project from its own directory:
# Analytics (default profile: Spark 3 / Scala 2.12 / JDK 11; override via env vars) cd analytics && ./gradlew build # Sidecar (Java 11 server; requires dtest jars — see sidecar docs) cd sidecar && ./gradlew build
The analytics build profile is selected with the SPARK_VERSION, SCALA_VERSION, and JDK_VERSION environment variables (e.g. SPARK_VERSION=4 SCALA_VERSION=2.13 JDK_VERSION=17). A thin top-level Makefile provides convenience targets (make build-analytics, make build-sidecar, make build-all, make release VERSION=x.y.z) that delegate into each subdirectory.
All modules share a single, lock-step version line (both projects are currently 0.5-SNAPSHOT). A release stamps the same version into both analytics/gradle.properties and sidecar/gradle.properties; a release that only changes one project still bumps the other (noted in release notes). Published artifact names and coordinates are unchanged by the merge — analytics artifacts keep their ..._sparkN_scala suffixes and sidecar keeps its sidecar-* names.
CI runs per-project and only exercises what changed:
analytics-ci.yml and sidecar-ci.yml. Each always runs but gates its heavy jobs behind a change-detection step; an always-running aggregator (“Analytics CI Gate” / “Sidecar CI Gate”) is the single required status check per project, so a single-project PR merges cleanly while real failures still block..circleci/config.yml → continue-config.yml) uses path filtering to run only the changed project's workflow. Requires CircleCI “dynamic config” to be enabled (INFRA).Contributions are welcome. Join #cassandra-dev in ASF Slack. Issues are tracked in separate Jira projects — CASSANALYTICS for Analytics and CASSSIDECAR for Sidecar.
Apache License 2.0 — see LICENSE.txt.