# Contributing to CDO

Thanks for your interest in this project.

## Project description

The Eclipse CDO (Connected Data Objects) Model Repository is a distributed
shared model framework for EMF models and meta models. CDO is also a model
runtime environment with a focus on orthogonal aspects like model scalability,
transactionality, persistence, distribution, queries and more. CDO has a 3-tier
architecture supporting EMF-based client applications, featuring a central model
repository server and leveraging different types of pluggable data storage
back-ends like relational databases, object databases and file systems. The
default client/server communication protocol is implemented with the Net4j
Signalling Platform.

* https://projects.eclipse.org/projects/modeling.emf.cdo

## Developer resources

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

* https://projects.eclipse.org/projects/modeling.emf.cdo/developer

The project maintains the following source code repositories

* http://git.eclipse.org/c/cdo/cdo.git
* http://git.eclipse.org/c/cdo/cdo.incubator.git
* http://git.eclipse.org/c/cdo/cdo.infrastructure.git

This project uses Bugzilla to track ongoing development and issues.

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

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