Skip to content

Latest commit

 

History

History
55 lines (41 loc) · 2.79 KB

CONTRIBUTING.md

File metadata and controls

55 lines (41 loc) · 2.79 KB

How to contribute

We welcome contributions to Concordion.

Note that you will be asked to agree to the contributor license agreement when raising a pull request.

This document lists the guidelines for contributing.

Proposing a change

Firstly, you should create an issue for your enhancement request. You may also want to discuss the change with the concordion-dev list before implementation.

New feature proposals should be described with acceptance tests. For features not yet implemented, please add the @Unimplemented annotation.

Please note that, in order to keep Concordion clean and minimal, we consider all enhancement requests carefully. Should your enhancement not be appropriate for Concordion core, you may wish to package it as a Concordion extension.

Implementing a change

Concordion uses a "Fork & Pull" model for collaborative development. If you have changes that you would like us to consider for introduction to Concordion, you will need to:

  1. fork the repository,
  2. commit and push your changes to your forked project, and
  3. send us a pull request referencing the URL of the issue that you created.
  4. if this is your first pull request, you will be asked to sign the contributor license agreement.

Development Rules

  • Don't break existing behaviour. Backward compatibility is extremely important.
  • Follow the style and conventions of the existing code (basically Sun's conventions). In particular:
    • Use 4 spaces (not tabs)
    • Always use braces after "if" statements.
  • All code changes should have automated tests of some sort.
  • Never check a failing test into the repository. (Though you can check-in unimplemented acceptance test HTML for new feature ideas).

Building

Concordion ships with the Gradle wrapper.

Useful tasks include:

./gradlew clean test - to compile all and run all tests (Concordion output is written to ./build/reports/spec)

./gradlew clean distZip - to create the distribution zip file

./gradlew install - to build the jar file and install to the local Maven repository. (The concordion-screenshot-extension-demo project incudes a dev.gradle file with instructions on including the local Maven repository when finding the dependencies).

./gradlew tasks - to list all tasks

Docs

  • See the wiki for docs on making a release.
  • There are some sequence diagrams in the devdocs folder.