# Contributing to OCL

Thanks for your interest in this project.

## Project description

Eclipse OCL provides libraries and tools for the Object Constraint Language
(OCL) OMG standard using EMF-based models.

* https://projects.eclipse.org/projects/modeling.mdt.ocl

## Developer resources

Information regarding source code management, builds, coding standards, and
more.

* https://projects.eclipse.org/projects/modeling.mdt.ocl/developer

The project maintains the following source code repositories

* http://git.eclipse.org/c/ocl/org.eclipse.ocl.git

This project uses Bugzilla to track ongoing development and issues.

* Search for issues: https://eclipse.org/bugs/buglist.cgi?product=OCL&
* Create a new report: https://eclipse.org/bugs/enter_bug.cgi?product=OCL&

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://dev.eclipse.org/mailman/listinfo/mdt-ocl.dev
