# Contributing to Eclipse Photran

Thanks for your interest in this project.

## Project description

The aim of the Parallel Tools Platform project is to produce an open-source
industry-strength platform that provides a highly integrated environment
specifically designed for parallel application development. The project will
provide a standard, portable parallel IDE that supports a wide range of parallel
architectures and runtime systems; a scalable parallel debugger; support for the
integration of a wide range of parallel tools; and an environment that
simplifies the end-user interaction with parallel systems.

* https://projects.eclipse.org/projects/tools.ptp.photran

## Developer resources

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

* https://projects.eclipse.org/projects/tools.ptp.photran/developer

The project maintains the following source code repositories

* http://git.eclipse.org/c/ptp/org.eclipse.photran.git

This project uses Bugzilla to track ongoing development and issues.

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

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/photran
