Handly Contributor Guide
========================

Welcome to Handly, and thanks for your interest in this project.

Project description:
--------------------

Handly, a technology project at Eclipse, provides basic building blocks that
help developers create handle-based models similar in design principles to
the JDT Java model. The uniform API makes it possible to develop common
IDE components dealing with such models. Integration with Xtext is provided.

The intent is to come up with a really nice design in this problem area 
through an open and transparent development process primarily driven by 
community feedback.

For more information, visit the project's website.

- http://eclipse.org/handly/

Developer resources:
--------------------

Information regarding source code management and builds.

- https://projects.eclipse.org/projects/technology.handly/developer

Coding standards, bugs lifecycle, and more.

- https://wiki.eclipse.org/Handly/Committer_FAQ

Building locally:
-----------------

The build is based on Maven and Tycho and is easy to run on a local machine.

 1. Make sure you have JDK 7 and Maven 3 installed. Both should be on the path.
 2. Clone the Handly Git repository and pick the desired branch.
 3. Open a shell to the Git workspace and execute

    $ cd releng
    $ mvn clean install

Once the build completes, the `repository/target` folder in the Git workspace 
will contain a repository of build artifacts.

Setting up a developer workspace:
---------------------------------

Handly currently uses `JavaSE-1.6` for compilation. Please add a matching JRE. 
Perfect match (i.e. JDK 1.6) is recommended to avoid build warnings. You will
also need to add a `JavaSE-1.7` compatible JRE to be able to run predefined
launch configurations for Handly tests and examples.

Handly employs specific code formatting conventions. Please import and use 
the formatter profile from `tools/formatter.xml`.

Import all projects from the Git workspace (don't search for nested projects) 
and set the target platform using a `.target` file provided within the 
`targets` project.

There are currently two target platforms defined. The base platform 
(`base.target`) defines the base API level, whereas the latest platform 
(`latest.target`) defines the latest functional level. Development tends 
to be done against the base platform, while continuous integration tends 
to be done against the latest platform.

Handly Examples define some auxiliary Xtext-based languages. Note that for 
the MWE2 generator of the language Xtext infrastructure to work, the developer 
tool and the target platform should contain Xtext of the same version. A simple 
way to achieve that is to install the developer tool using one of the provided 
`.p2f` files that can be found in the Git workspace `tools` folder. They are 
designed to be consistent with their namesake `.target` files.

Contributing:
-------------

General process and policy for making a contribution.

- https://wiki.eclipse.org/Development_Resources/Contributing_via_Git

Project-specific details and further references.

- https://wiki.eclipse.org/Handly/Committer_FAQ

Contributor License Agreement:
------------------------------

Before your contribution can be accepted by the project, you need to create 
and electronically sign the Eclipse Foundation Contributor License Agreement 
(CLA).

- http://www.eclipse.org/legal/CLA.php

For more information, see CLA FAQ.

- https://www.eclipse.org/legal/clafaq.php

Contact:
--------

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

- https://dev.eclipse.org/mailman/listinfo/handly-dev

Search for bugs:
----------------

This project uses Bugzilla to track ongoing development and issues.

- https://bugs.eclipse.org/bugs/buglist.cgi?product=Handly

Create a new bug:
-----------------

Bug reporting FAQ.

- https://wiki.eclipse.org/Bug_Reporting_FAQ

Be sure to search for existing bugs before you create another one.

- https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Handly

Remember that contributions are always welcome!