# Contributing to Jakarta Expression Language

Thanks for your interest in this project.

## Project description

Jakarta Expression Language provides an important mechanism
for enabling the presentation layer (web pages) to communicate with the
application logic (managed beans). Jakarta Expression Language is used by several Jakarta EE
technologies, such as Jakarta Faces, Jakarta Server Pages, Jakarta Security and Contexts and
Dependency Injection for Jakarta EE (CDI). 

Jakarta Expression Language can also be used in stand-alone environments.

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

## Developer resources

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

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

The project maintains the following source code repositories

* https://github.com/eclipse-ee4j/el-ri

## 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

## 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.

The Jakarta EE Specification Committee has adopted the Jakarta EE Specification
Process (JESP) in accordance with the Eclipse Foundation Specification Process
v1.2 (EFSP) to ensure that the specification process is complied with by all
Jakarta EE specification projects.

* https://eclipse.org/projects/dev_process
* https://www.eclipse.org/org/documents/Eclipse_IP_Policy.pdf
* https://jakarta.ee/about/jesp/
* https://www.eclipse.org/legal/efsp_non_assert.php

## Contact

Contact the project developers via the project's "dev" list.

* 
