# Contributing to Eclipse Object Teams

Thanks for your interest in this project.

## Project description

Eclipse Object Teams adds new dimensions of modularity for extreme re-use while
sustaining a crisp architecture that's a breeze to maintain during long-term
software evolution. — This is done by extending object oriented programming
with the concept of Roles which are grouped into Teams. — The Object Teams
Development Tooling supports efficient development using OT/J by seamlessly and
comprehensively extending JDT.

* https://projects.eclipse.org/projects/tools.objectteams

## Developer resources

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

* https://projects.eclipse.org/projects/tools.objectteams/developer

The project maintains the following source code repositories

* https://git.eclipse.org/r/plugins/gitiles/objectteams/org.eclipse.objectteams

Production builds are documented in the wiki (irrelevant during development):

* https://wiki.eclipse.org/OTBuilding

This project uses Bugzilla to track ongoing development and issues.

* Search for issues:
   https://bugs.eclipse.org/bugs/buglist.cgi?product=Objectteams
* Create a new report:
   https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Objectteams

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/objectteams-dev

Or ask questions in the project's forum

* http://www.eclipse.org/forums/eclipse.objectteams
