# Eclipse WTP Source Editing

Thanks for your interest in this project. Check the [contributing](CONTRIBUTING.md) document for information on that.

## Project description

The Eclipse Web Tools Platform Source Editing project provides source editing support for typical
"web" languages and the mixing of them, with a focus on making the editors
extensible and easily reusable. Here you will find tools for working with XML,
XML Schema, XSL, HTML, CSS, JSON, DTD, and JSP resources, as well as an XML
Perspective.

* https://projects.eclipse.org/projects/webtools.sourceediting
* Announcements and reminders for periodic meetings are sent out using the [wtp-dev](https://accounts.eclipse.org/mailing-list/wtp-dev) mailing list. You do not need to be a Committer to participate in either.

## Developer resources

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

* https://projects.eclipse.org/projects/webtools.sourceediting/developer

The project maintains the following source code repository (this is not a cloning URL):

* http://git.eclipse.org/c/sourceediting/webtools.sourceediting

The 5 other similarly named repositories have been merged into the main for some time.

This project uses Bugzilla to track ongoing development and issues.

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

Be sure to search for existing bugs before you create another one. Remember that
contributions are always welcome!

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

* https://eclipse.org/projects/dev_process
* https://www.eclipse.org/org/documents/Eclipse_IP_Policy.pdf

## Eclipse Contributor Agreement

In order to be able to contribute to Eclipse Foundation projects you must
electronically sign the Eclipse Contributor Agreement (ECA).

* http://www.eclipse.org/legal/ECA.php

The ECA provides the Eclipse Foundation with a permanent record that you agree
that each of your contributions will comply with the commitments documented in
the Developer Certificate of Origin (DCO). Having an ECA on file associated with
the email address matching the "Author" field of your contribution's Git commits
fulfills the DCO's requirement that you sign-off on your contributions.

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