Skip to content

Latest commit

 

History

History
160 lines (101 loc) · 6.56 KB

File metadata and controls

160 lines (101 loc) · 6.56 KB

Java CI - deploy License

How to contribute to ArcadeDB

Contribution License

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.

Did you find a bug?

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

Did you write a patch that fixes a bug?

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

Did you fix whitespace, format code, or make a purely cosmetic patch?

Changes that are cosmetic in nature and do not add anything substantial to the stability, functionality, or testability will generally not be accepted.

Do you intend to add a new feature or change an existing one?

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

Are you adding a new dependency?

When adding new third-party dependencies to ArcadeDB:

  1. 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
  2. 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
  3. 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.

Prepare your environment

Pre-commit

This project uses pre-commit. Every developer should install it locally, please follow installation instructions for your operative system.

Developer guide

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

With 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 -DskipTests

The 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/

Some build targets

Build and run default tests:

$ mvn clean install

Tests 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=1C

Run a single test class:

$ mvn test -pl engine -Dtest=MyTestClass -DskipITs

To run additional integration test locally use:

$ mvn clean install -P integration

Rebuild Docker images for e2e tests:

$ mvn clean install -DskipTests -Pdocker

Build and run in fail-at-end mode:

$ mvn clean install -fae

Print dependency tree:

$ mvn dependency:tree