# Contributing to Eclipse emfatic

Thanks for your interest in this project.

## Project description

A textual syntax for EMF Ecore (meta-)models.

* https://projects.eclipse.org/projects/modeling.emft.emfatic

## Developer resources

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

* https://projects.eclipse.org/projects/modeling.emft.emfatic/developer

The project maintains the following source code repositories

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

This project uses Bugzilla to track ongoing development and issues.

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

Be sure to search for existing bugs before you create another one. Remember that
contributions are always welcome!

## Eclipse Development Process

This Eclipse Foundation open project is governed by the Eclipse Foundation
Development Process and operates under the terms of the Eclipse IP Policy.

## 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/emft-dev

## Bumping the version before a new release

If you need to change the project version, use the provided "bump-version.sh"
script.

You will need to install Maven and xmlstarlet first. In an Ubuntu-based
system, this can be done with "sudo apt-get install xmlstarlet".

Once you have the dependencies installed, you can run the script to bump the
version to 1.1.0 (as an example) as follows:

  ./bump-version.sh 1.1.0
