# Contributing to Nebula NatTable

Thanks for your interest in this project.

## Project description:

NatTable is a powerful and flexible SWT table/grid widget that is built to handle very large data sets, real-time updates, dynamic styling, and more.
NatTable is a subproject of the Nebula Project, the home of further supplemental custom widgets for SWT.

* https://projects.eclipse.org/projects/technology.nebula.nattable

Developer resources:

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

* https://projects.eclipse.org/projects/technology.nebula.nattable/developer

The project maintains the following source code repository:

* https://git.eclipse.org/c/nattable/org.eclipse.nebula.widgets.nattable.git/

This project uses Bugzilla to track ongoing development and issues.

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

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

