Skip to content

Latest commit

 

History

History
191 lines (131 loc) · 10.7 KB

File metadata and controls

191 lines (131 loc) · 10.7 KB

Contributing to Mongock project

👍🎉 First off, thanks for taking the time to contribute! 🎉👍

The following is a set of guidelines for contributing to Mongock project which is hosted on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.

Table of contents

Code of Conduct

This project and everyone participating in it is governed by the Mongock Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to dev@cloudyrock.io.

It's just a question, I don't want to read this whole thing!!!

Note: Please don't file an issue to ask a question.

We have an official FAQ page where your question may be already answered. Otherwise an email to dev@cloudyrock will be the fastest way to get tour question resolved.

Mongock project packages

Mongock project contains 2 main areas.

  • mongock-core: Basic Mongock tool for standalone projects, although can be used perfectly with frameworks like Spring. Issue label is core-module
  • mongock-spring: Mongock module which takes advantage of Spring features. Issue label is spring-module

Reporting Bugs

This section guides you through submitting a bug report for Mongock project.

Note: If you find a Closed issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one.

Before Submitting A Bug Report

  • Check the FAQ page for a list of common questions and problems. You might find out your issue/question is clarified in this page.
  • Perform a cursory search to see if the problem has already been reported. If it has and the issue is still open, add a comment to the existing issue instead of opening a new one.

How Do I Submit A (Good) Bug Report?

Bugs are tracked as GitHub issues. Create an issue on the Mongock repository following the issue template. Please provide as much information as you can and add the following labels to make easier to categorise issues:

Suggesting Enhancements

This section guides you through submitting an enhancement suggestion for Mongock project, including completely new features and minor improvements to existing functionality.

Before Submitting An Enhancement Suggestion

How Do I Submit A (Good) Enhancement Suggestion?

Enhancement suggestions are tracked as GitHub issues. Create an enhancement on the main repository and provide the required information by filling in the enhancement template.

Please add the following labels to make easier to categorise issues:

  • The label feature
  • The module or modules involved: module labels
  • Severity of the bug: severity labels
  • If you feel confident to estimate how complex the development is, please provide a complexity label: [complexity labels](#complexity

Code Contribution

Synchronizing efforts

In order to let us known(and the rest of commiters) you are working on an issue, please add a comment in the issue itself. You don't need to provide any other information than a single "I'm working on this", as the issue will be used as communication channel. Obviously, If the issue you are about to work on already contains such a comment, you better don't work on this issue as there is someone else working already on it.

I just want to help: First code contribution

Unsure where to begin contributing to Mongock project? You can start by looking through these beginner and intermediate issues:

  • Beginner issues - issues which should only require a few lines of code, and a test or two.
  • Intermediate issues - issues which should be a bit more involved than beginner issues.

Code contribution steps

  1. Issue created: Before starting a code contribution, please make sure there is an issue for it.
  2. Fork repository: Fork this project to your own repository.
  3. Branch within forked repository: In your forked repository create a branch, in which you will do the change, using the pattern 'feature/issue_xx'.
  4. Coding: Make sure your code change fits our standards.
  5. Local verification: This stage is intended to verify the code fits some basic thresholds. See our verification process
  6. README update: Update README.md file when required.
  7. Pull request: Use our pull request template to provide the required information.

Once a pull request in in place, you can expect 1-2 days for us to start the review.

Part of the review involves sonar to check the code quality. Although it's already explained in our standards, please notice:

  • We use a quality profile, which is basically an small extension of the sonar way with few changes.
  • Our quality gate requires at least 85% test coverage and at most 3% code duplication for new code.

Issue and Pull Request Labels

This section lists the labels we use to help us track and manage issues and pull requests.

The labels are loosely grouped by their purpose, but it's not required that every issue have a label from every group or that an issue can't have more than one label from the same group. However, the more you provide, the easier and faster the issue can be fixed.

Please click on the search list the issues for the given label.

Type of issue

Label name Search in github 🔎 Description
bug search Bug issues
feature search Feature issues
docs/ops search Issues which just require documentation or some management work

Module

Label name Search in github 🔎 Description
core-module search Issues to be fixed in the core
spring-module search Issues to be fixed in the server module

Severity

Label name Search in github 🔎 Description
critical search Blocking issues
high [search][search-repo-label-high] Very important, but non-blocking, issues
normal search Normal non-blocking issues that needs to be fixed sooner than later
minor search Low priority issues

Complexity

Label name Search in github 🔎 Description
beginner search Issues which should only require a few lines of code, and a test or two
intermediate search Issues which should be a bit more involved than beginner issues
advanced search Issues that require some deep knowledge, expertise or just time consuming

Others

Label name Search in github 🔎 Description
invalid/won't fix search issues which won't be worked on