ArcadeDB is licensed under the Apache License 2.0. By submitting a contribution (pull request, patch, or any other form), you agree that your contribution is licensed under the same terms, as stated in Section 5 of the Apache License 2.0. This means:
- You keep your copyright. You are not transferring ownership of your code to anyone.
- You grant a perpetual license. Your contribution is irrevocably available under Apache 2.0, including copyright and patent grants (Sections 2 and 3).
- No CLA required. We deliberately do not use a Contributor License Agreement. This keeps the copyright distributed among all contributors, which structurally prevents any single entity from changing the project's license. See our Governance for details.
By submitting a contribution, you represent that you have the right to license it under the Apache License 2.0 — i.e., the work is your own, or you have permission from the copyright holder.
-
Do not open up a GitHub issue if the bug is a security vulnerability, and instead write to support -at- arcadedb.com.
-
Ensure the bug was not already reported by searching on GitHub under Issues.
-
If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring. Importantly, note the ArcadeDB version, JVM type and version exhibiting the issue.
-
Open a new GitHub pull request with the patch.
-
Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable.
Changes that are cosmetic in nature and do not add anything substantial to the stability, functionality, or testability will generally not be accepted.
-
Suggest your change in the ArcadeDB Community and start writing code.
-
Do not open an issue on GitHub until you have collected positive feedback about the change. GitHub issues are primarily intended for bug reports and fixes.
When adding new third-party dependencies to ArcadeDB:
-
Check License Compatibility - Ensure the license is compatible with Apache License 2.0
- ✅ Compatible: Apache 2.0, MIT, BSD (2/3-Clause), EPL, UPL, EDL, public domain
- ❌ Incompatible: GPL, AGPL, proprietary licenses without explicit permission
-
Update Attribution Files:
- Add the dependency to ATTRIBUTIONS.md in the appropriate section
- If the dependency is Apache-licensed and includes a NOTICE file, incorporate required notices into the main NOTICE file
- If introducing a new license type, add the full license text to the
LICENSES/directory
-
Maintain SPDX Compliance - All new source files must include:
SPDX-FileCopyrightText:with copyright holder and years
SPDX-License-Identifier:with the SPDX license identifier (e.g., Apache-2.0)
For questions about licensing, please ask in the discussion forum before adding the dependency.
This project uses pre-commit. Every developer should install it locally, please follow installation instructions for your operative system.
In order to use the latest distribution before the official release, you have to build it from the latest SNAPSHOT version in
the main branch of GitHub. All you need is:
- Java v21 for the runtime or major
- Apache Maven, to build the distribution
- Docker, to build the container images
It's super easy, just follow the following steps:
(1) Download the sources
If you have git installed, execute the following command on a shell or command prompt:
$ git clone [email protected]:ArcadeData/arcadedb.gitWith this command above you have just cloned the main branch continaing the latest updates. If you don't have git installed, you
can always download the latest souces
from GitHub as a zip file. After downloaded, unzip the file on
a local folder.
(2) Now build the project using Maven.
Assure you have Apache Maven installed on your computer and execute the following commands:
$ cd arcadedb
$ mvn clean install -DskipTestsThe build should take less than a minute.
(3) Use the fresh built distribution
You will find a fresh built distribution under the directory package/target/arcadedb-<version>.dir/arcadedb-<version>/.
For example, if the latest release is the 25.1.1-SNAPSHOT, then the release will be available under the
directory package/target/arcadedb-25.1.1-SNAPSHOT.dir/arcadedb-25.1.1-SNAPSHOT/
Build and run default tests:
$ mvn clean installTests run in parallel by default: classes execute concurrently across multiple JVM forks (forkCount=0.5C, i.e. half the available CPU cores). No extra flags needed.
Run only unit tests for the engine module, skipping slow/benchmark tests:
$ mvn test -pl engine -DskipITs -Dgroups='!slow,!benchmark'Override the number of parallel JVM forks (e.g. use all cores):
$ mvn test -pl engine -DskipITs -Dforkcount=1CRun a single test class:
$ mvn test -pl engine -Dtest=MyTestClass -DskipITsTo run additional integration test locally use:
$ mvn clean install -P integrationRebuild Docker images for e2e tests:
$ mvn clean install -DskipTests -PdockerBuild and run in fail-at-end mode:
$ mvn clean install -faePrint dependency tree:
$ mvn dependency:tree