ContributingToObjectify - objectify/objectify Wiki

How to help out

Interested in helping out with this project? GREAT! Here's some advice to get you started.

Discussions on the Objectify Google Group are often helpful.

The Repository

GitHub holds the "official" git repository for Objectify at https://github.com/objectify/objectify

Check Out And Build

git clone git://github.com/objectify/objectify.git
cd objectify
mvn package

Lombok

You will need the lombok plugin for your IDE. Visit https://projectlombok.org/ for more details. This is a build-time dependency only.

Code Standards

Objectify code uses 4-space HARD tabs. It uses K&R style bracing conventions. Look at existing source code for an example and follow the pattern.

All code submissions should be well-commented and include Junit5 unit tests.

Running Unit Tests

Junit5 tests can be run from your IDE, or mvn test.

  • You will need to install Google's cloud datstore emulator. You don't need to run it by hand; the test harness starts/stops the emulator.
  • You will need to have memcached running on your system. Install from brew (or wherever) and run by hand.
  • Some tests require GOOGLE_APPLICATION_CREDENTIALS to a live scratch datastore.

All tests on master are expected to pass.

Submitting Code

Submit pull requests to https://github.com/objectify/objectify

Welcome Aboard!

The Objectify team is very interested your ideas and submissions. That said, we are also very picky about what features we include in the core - Objectify is intended to be a thin, convenient layer on top of the low-level datastore API rather than a "kitchen sink" framework. We are happy to link to related projects from the Extensions page.

If you are wondering where to start, look through the issue tracker. Start a discussion early on the Objectify Google Group - we will take the time to offer API advice and architectural guidance as well as to evaluate the proposal.

The absolute best way to start is to submit a pull request with some unit tests - even (especially!) if they fail.