# Contributing to Jakarta JSON Processing

Thanks for your interest in this project.

## Project description

Eclipse Project for JSON-P is a Java API to process (e.g. parse, generate,
transform and query) JSON documents. It produces and consumes JSON in a
streaming fashion (similar to StAX API for XML) and allows to build a Java
object model for JSON using API classes (similar to DOM API for XML).

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

## Developer resources

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

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

The project maintains the following source code repositories

* https://github.com/eclipse-ee4j/jsonp

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