# Contributing to Eclipse GlassFish

Thanks for your interest in this project.

## Project description

Eclipse GlassFish is a complete application server that implements the Jakarta
EE specification. GlassFish includes implementations of all required and
optional Jakarta EE APIs, and passes all Jakarta EE TCKs. GlassFish also
includes a complete administration console, clustering support, and other
developer and production focused tools and features.

* https://projects.eclipse.org/projects/ee4j.glassfish

## Developer resources

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

* https://projects.eclipse.org/projects/ee4j.glassfish/developer

The project maintains the following source code repositories

* https://github.com/eclipse-ee4j/glassfish-ha-api
* https://github.com/eclipse-ee4j/glassfish-logging-annotation-processor
* https://github.com/eclipse-ee4j/glassfish-shoal
* https://github.com/eclipse-ee4j/glassfish-cdi-porting-tck
* https://github.com/eclipse-ee4j/glassfish-jsftemplating
* https://github.com/eclipse-ee4j/glassfish-hk2-extra
* https://github.com/eclipse-ee4j/glassfish-hk2
* https://github.com/eclipse-ee4j/glassfish-fighterfish
* https://github.com/eclipse-ee4j/glassfish
* https://github.com/eclipse-ee4j/glassfish-maven-embedded-plugin
* https://github.com/eclipse-ee4j/bvtck-porting

## 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://accounts.eclipse.org/mailing-list/glassfish-dev

