# Contributing to EMF Client

Thanks for your interest in this project.

## Project description

The Eclipse EMF Client Platform is a framework for building EMF-based client
applications. The goal is to provide reusable, adaptable and extensible UI
components to develop applications based on a given EMF model. All components
can be used stand-alone and be embedded into your own application. To get
started, ECP provides a demo application, which integrates all provided
components. This demo application allows you to get started by only providing
your EMF model. 

* https://projects.eclipse.org/projects/modeling.ecp

## Developer resources

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

* https://projects.eclipse.org/projects/modeling.ecp/developer

The project maintains the following source code repositories

* http://git.eclipse.org/c/emfclient/org.eclipse.emf.ecp.core.git
* http://git.eclipse.org/c/emfclient/org.eclipse.emf.ecp.other.git
* http://git.eclipse.org/c/emfclient/org.eclipse.emf.ecp.releng.git

This project uses Bugzilla to track ongoing development and issues.

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

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