# Contributing to Jakarta Annotations

Thanks for your interest in this project.

## Project description

**Jakarta Annotations** defines a collection of annotations representing common
semantic concepts that enable a declarative style of programming that applies
across a variety of Java technologies.

 * https://projects.eclipse.org/projects/ee4j.ca

## Developer resources

Information regarding source code management, builds, coding standards, and
more.

 * https://projects.eclipse.org/projects/ee4j.ca/developer

The project maintains the following source code repositories

 * https://github.com/eclipse-ee4j/common-annotations-api

## Eclipse Contributor Agreement

Before your contribution can be accepted by the project team contributors must
electronically sign the Eclipse Contributor Agreement (ECA).

 * http://www.eclipse.org/legal/ECA.php

Commits that are provided by non-committers must have a Signed-off-by field in
the footer indicating that the author is aware of the terms by which the
contribution has been provided to the project. The non-committer must
additionally have an Eclipse Foundation account and must have a signed Eclipse
Contributor Agreement (ECA) on file.

For more information, please see the Eclipse Committer Handbook:
https://www.eclipse.org/projects/handbook/#resources-commit

## Contact

Contact the project developers via the project's "dev" list.

 * https://accounts.eclipse.org/mailing-list/ca-dev
