We prefer to receive code contributions in the form of github pull requests. When you submit a pull request, there are a few things to keep in mind. Please ensure code changes:

It's best to start small with bug fixes or smaller features. Please feel free to discuss things and ask for help on the mailing list if you are interested in contributing.

Changing the Public API

If you making changes to the public API, make sure dev@geode.apache.org is aware that the changes will affect the public API by sending an email with [DISCUSS] in the subject to describe your changes.  Due to the large number of Geode users, we try to avoid breaking compatibility between versions.

Backwards Compatibility

In general, nothing can be removed or modified in way that is not backward-compatible. If something is deprecated, it can be removed in the next major release, after discussion on the dev list.  Backwards compatibility affects API's, client applications, and WAN clusters.  Support for rolling upgrades is another important consideration.

Javadocs and @since tags

All public and internal APIs should have useful javadocs. For all public 
APIs (anything not in /internal/), new additions to the javadocs 
should include a @since tag to let the users know when the feature was 
added. Eg

/**
   * Returns a collection of all of the CacheServers
   * that can serve the contents of this Cache> to clients.
   *
   * @since 1.1
   */
  public List<CacheServer> getCacheServers();

Any feature which is deprecated should specify a link to the new alternative.

Use of hardcoded "/" in region paths or names

When writing code in a module which has a dependency on geode-core, Region.SEPARATOR and Region.SEPARATOR_CHAR constants should be used instead of hardcoded "/" characters in region names and paths.