# Contributing to Eclipse Apogy

Thanks for your interest in this project.

## Project description

The Eclipse Apogy open source project provides a set of frameworks, Eclipse EMF
models, and Graphical User Interface components that simplify the creation of
the software required to operate a physical system.

* https://projects.eclipse.org/projects/technology.apogy

## Developer resources

Information regarding source code management, builds, coding standards, and
more.

* https://projects.eclipse.org/projects/technology.apogy/developer

The project maintains the following source code repositories

* http://git.eclipse.org/c/apogy/apogy.git

This project uses Bugzilla to track ongoing development and issues.

* Search for issues: https://eclipse.org/bugs/buglist.cgi?product=Apogy
* Create a new report: https://eclipse.org/bugs/enter_bug.cgi?product=Apogy

Be sure to search for existing bugs before you create another one. Remember that
contributions are always welcome!

## 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/apogy-dev

