2017-11-21 16:41:28 +01:00
..
2017-11-21 16:41:28 +01:00

Guidelines for Feature Request(s)

This document covers, how to contribute new feature(s) or significant design changes to BigchainDB. Since, contribution of such functionality involves design discussion and might take multiple releases to complete, we expect the contributors to follow certain guidelines before proceeding with the implementation.

Classification

How to classify your contribution as a feature and determine if it needs design discussion.

Here are some baseline criterion that can help you classify your idea, as a feature:

  • Requires significant effort/changes to the current BigchainDB implementation and it is not self contained (e.g. API changes, introducing a new component, takes more than 20 Wrigleys (Wrigley is a man day @ BigchainDB))
  • Impacts the clients and drivers.
  • Can we write a blog post about it?
  • Requires collaboration with multiple teams in terms of development, operations and testing.
  • Impacts documentation significantly.

It is not a feature if:

  • It is straightforward enough and might not need a design discussion.
    • Test case fixes
    • Fixing typos/grammar in documentation.
    • Refactoring code
    • Adding error or log messages.

Classified as a Feature?

Create a new issue on our GitHub repository with a Feature-Request label, once you have classified your proposal as a feature and:

  • Scratched the surface.
  • Optional: Have a working prototype.
  • Worked out the resources and people, who can contribute towards this feature.

Submit Spec

After creating an issue with an appropriate problem statement and details, submit a design specification document of your feature. The spec needs to be submitted at:

$ /path/to/repo/bigchaindb/docs/specs/features/release-<latest-release>

The PR for the specification document should be linked to the GitHub issue you created and marked with Spec label.

Note: Feature(s) cannot be backported. Hence, only commit your proposal to the latest release.

How do I write a design specification document?

Almost there

Once, you have submitted the design specification document:

  • Get it reviewed.
  • Discuss.
  • Address comments(if any).
  • Get it merged.
  • Start implementing.

Once your spec is merged, you can start with the implementation. Voila!