# Contributing to Eclipse MoDisco

Thanks for your interest in this project.

## Project description

Eclipse MoDisco provides an extensible framework to elaborate on model-driven
solutions supporting software reverse engineering and modernization use cases
such as technical migration, software improvement, documentation generation,
quality insurance, etc. Legacy systems embrace a large number of technologies,
making the development of tools to cope with legacy systems evolution a tedious
and time consuming task. As modernization projects face with both technologies
combination and various modernization situations, model-driven approaches and
tools offer the requisite abstraction level to build up mature and flexible
modernization solutions. Quality Assurance: verifying whether an existing system
meets the required qualities (detection of anti-patterns in existing code and
computation of metrics.) Documentation: extraction of information from an
existing system to help understanding one aspect of this system (structure,
behaviour, persistence, data-flow, change impact , etc). Improvement:
transformation of an existing system to integrate better coding norms or design
patterns. Migration: transformation of an existing system to change a component,
the framework, the language, or its architecture   more about MoDisco »    

* https://projects.eclipse.org/projects/modeling.modisco

## Terms of Use

This repository is subject to the Terms of Use of the Eclipse Foundation

* https://www.eclipse.org/legal/termsofuse.php

## Developer resources

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

* https://projects.eclipse.org/projects/modeling.modisco/developer

The project maintains the following source code repositories

* https://git.eclipse.org/r/modisco/org.eclipse.modisco
* https://github.com/eclipse/modisco-website

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

* https://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/modisco-dev

