Community

Guidelines for contributing to Hibernate projects

Project specifics

Each project has its own page dedicated to contributing: what’s needed and what is the process.

Below are some guidelines that stand true across all projects.

Design philosophy

Here is a set of principles driving the design of:

  • Hibernate Validator

  • Hibernate Search

  • Hibernate OGM

  • Bean Validation

The goal of these projects is to improve developer productivity and ease of use.

When adding a feature, we ask this pool of questions:

  1. Does it feel like the right way of doing things? If it is not we tend to wait till the idea matures

  2. Can it be done with an existing construct with similar or less complexity? Several ways of doing things is counter productive.

  3. Is this feature wrong? For example, does it encourage bad practice?

  4. Is this a popular request?

  5. Is this feature useful? That is the reason for asking "What’s your use case?"

  6. Is it the most readable approach?

  7. Is the feature designed consistently with the rest of the library?

None of these questions should slow down innovation but we want high quality libraries. Keeping them both useful and simple is a constant battle against the easier way of adding features ad nauseum. The team believes it is his responsibility to be the guardian of these principles. We are here to make the world a better place, not give food to guideline writers.

Back to top