# Contributing to Eclipse Hawk

Eclipse Hawk is a model indexing framework for fast, scalable querying of large
models. It mirrors a set of remote models (which may be broken up into many
small files) into a local database, so you can answer global queries without
having to keep the entire model in memory. Eclipse Hawk does not require you to
change modelling technology, and it allows for indexing model elements by
derived expressions and not just single attributes.

The main website is here:

  https://www.eclipse.org/hawk/

The website contains all the documentation needed to compile and run all
components of Hawk from source. If you would like to communicate with us, please
use the official Eclipse Hawk forum:

  https://www.eclipse.org/forums/index.php/f/442/

You can file bugs through the link in the website, which has links to the main
Git repository as well. If you would like to contribute changes, please submit a
patch together with your bug report. You will need to sign the Eclipse
Contributor Agreement before we can integrate your code:

  https://www.eclipse.org/legal/ECA.php
