Skip to content

Latest commit

 

History

History
412 lines (286 loc) · 14.9 KB

CONTRIBUTING.md

File metadata and controls

412 lines (286 loc) · 14.9 KB

Contributing

We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:

  • Reporting a bug
  • Discussing the current state of the code
  • Submitting a fix
  • Proposing new features
  • Becoming a maintainer

As you will read on the details of contributing, remember that when unsure about something, e.g. formatting or level of detail, err on the side of submitting those items. The formatting or details can always be filled in later, but your insight cannot be replaced.


Table of Content


Reporting Small Bugs, Quick Fixes, Typos

In these cases, you can either report it as a bug, or create a pull request right away, as the changes are likely to be accepted.

These are the bugs/fixes that do not introduce any new functionality or logic, as long as the change does not affect functionality. Some examples are:

  • Spelling / grammar fixes
  • Typo correction, white space and formatting changes
  • Comment clean up
  • Bug fixes that change default return values or or constants
  • Adding logging messages or debugging output
  • Changes to ‘metadata’ files like .gitignore, build scripts, etc.
  • Moving source files from one directory or package to another

Reporting Bugs

Report bugs using Github's issues

Issues are very valuable to this project:

  • Ideas are a valuable source of contributions others can make
  • Problems show where this project is lacking
  • With a question you show where contributors can improve the user experience

Thank you for creating them ❤️

Writing bug reports

The single most important thing is to report the bug. If you are unsure about some details or the format of the report, create an issue and write what you know!

Once that is done, there will be plenty of opportunities to refine the issue to ensure we all understand the topic clearly.

Generally, write bug reports with detail, background, and sample code. This is a good example of a bug report.

Great Bug Reports tend to have:

  • A quick summary and/or background.
  • Steps to reproduce.
    • Be specific!
    • Give sample code if you can.
  • What you expected would happen.
  • What actually happens.
  • Notes, possibly including why you think this might be happening, or stuff you tried that didn't work.

Thorough bug reports help tremendously in getting the ideas across.


Reporting Security Issues

If you find a security vulnerability, email juraj.oravec.josefson@gmail.com. Do not open an issue as publicizing the security vulnerability may put more people/data at risk.

Not sure if you came across a security issue? Ask yourself these two questions:

  • Can I access something that's not mine, or something I shouldn't have access to?
  • Can I disable something for other people?

If the answers are yes, or you are not sure, it's safer to get in touch.

When reporting the security issue, follow the same general rules as when writing a bug report. Share the details and be specific.


Suggesting a Feature or Enhancement

Is our project missing something? Maybe a new feature, support for a particular standard (think YAML vs JSON), or maybe documentation?

Whichever the area, if you think our porject should or could expand, share it with the rest of the community!

To suggest a feature, open a new issue and select the Feature request template. The template will guide you through what information is needed to be able to fairly evaluate the feature request.

Don't worry if you aren't sure about some of the details mentioned in the Feature request template! Fill in what you know, and if the suggestions is suitable to the project, we will guide you on the rest of the information needed.

After the feature request is submitted, congratulations! Now be sure to check out notifications on the issue and respond to questions or requests of more information from the rest of the community.

Once all necessary information is know, the feature request is formalized so it could be considered by the project's core team. You can see the state of the suggestion throughout our pipeline by following the suggestion through our issue labelling conventions.


Contribution Guidelines

Thank you for taking the time to read these guidelines. The aim of these guidelines is to ensure the time of contributors and maintainers is used as effectively as possible, so we all get more enjoyment from driving the project forward.

This section goes more in-depth of how things work, so buckle up!

Hosting Service

We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.

Workflow

We use Github Flow.

For more details on the workflow we use and integrations that help us with that see the page on Source Version Control and Workflow.

Pull requests are the best way to propose changes to the codebase. All code changes should happen through them.

We actively welcome your pull requests:

  1. Fork the repo and create your branch from master.
  2. If you've added code that should be tested, add tests.
  3. If you've changed APIs, update the documentation.
  4. Ensure the test suite passes.
  5. Make sure your code lints.
  6. Issue that pull request!

Logging

See our logging strategy and the tools we use here.

Code, commit message and labeling conventions

Commit messages are covered in Source Version Control and Workflow.

Label conventions are covered in Labelling Convention and Issue Pipeline.

Coding Style

For the styling details, see .eslintrc.js and .prettierrc (JS/TS files), .pug-lintrc.js (PUG files), stylelintrc.yml ((S)CSS files).

As a rule of thumb:

  • 2 spaces for indentation rather than tabs
  • 80 character line length
  • Run npm run lint to fix the style

Responsibilities

Community

Keeping a healthy community that is welcoming to newcomers and encourages new contributors from different walks of life is paramount to us. If you haven't done so yet, be sure to check out our Code of Conduct.

Transparency

Always create issues for any notable changes and enhancements that you wish to make. Discuss things transparently and get community feedback.

Cooperation

At times, we may ask you to provide additional information in issues or pull requests, or ask you to make changes to your contributions to ensure that your contribution fits in well with the rest of the code.

We do this as we strive for the balance of keeping the project as accessible as possible while making sure it's still progressing in the agreed-upon direction.

Quality

To guard for quality, follow our checklists when submitting pull requests. Your submissions may also be blocked by bot checks. In those cases we again ask you to refine the contribution to pass those checks.

Ways I can contribute

We have an open mind! Whether it's writing code, writing blogs, improving documentation, bug triaging, or writing tutorials are all examples of helpful contributions that mean less work for others.

And it doesn't have to stop there! Do you know of somebody who may benefit from our project? Or you want to mention us at your next conference? Suggestions for improving UX? The ways to help are truly endless!

AllContributors, has a list of pretty much every way how you can contribute.

After Contributing

We use AllContributors, to recognize the work of everyone who has contributed. Once you have contributed, we'd love to show the world that you are among our contributors.

For that we use the AllContributors Bot. To add you to the contributors, make a comment on an issue or a PR with text:

@all-contributors please add <your username> for <contributions>

where <contributions> is any of the emoji keys.

Adding Someone Else to Contributors

If the contributor doesn't add themselves, other community members might suggest to add them to recognize their contributions.

However not everybody might want to agree to it. We want to respect people's preferences, so if you want to add somebody, please first create an issue or a PR, mention the user there, and give them the chance to discuss it.


Pull Requests

Please see and use the available pull request template.

To use the pull request template in GitHub, simply create a new pull request, and the template will be automatically loaded. See GitHub's wiki for more details.

The template will guide you through the process of writing a pull request that contains all the information.

In short, the template ensure that each pull request:

States its intent

It should be clear which problem you're trying to solve with your contribution.

For example:

Add link to code of conduct in README.md

Doesn't say anything about why you're doing that.

Add link to code of conduct in README.md because users don't always look in the CONTRIBUTING.md

Mentions the problem that you have found, and the pull request shows the action you have taken to solve it.

Is traceable

Always include the reference to the issue that the pull request relates to. If there is no issue, keep them no-issue.

Is of good quality

The checklist in the pull request template serves as a reminder to keep the code quality high by including tests, linting or updating docs or metadata.

Is easy to read

By having a standard way to present the pull requests, we can get accustomed to that and learn to navigate them faster.

If you would need help with english language contributions, have a look at Grammarly or Hemingway App

Follows the contributor covenant

This repository has a code of conduct which should be followed.


Code Review Process

The code review process is formalized in .zappr.yml. Zappr is a GitHub bot which checks (among other), whether the required users or any members of certain groups have reviewed the pull request.

The maintainers aim to review the pull requests on a regular basis (every or every other week) and in response expect a reply within 2 weeks if any issues were raised.


Your First Contribution

Unsure where to begin contributing? You can start by looking through issues tagged with help wanted label.

New to Contributing to Open Source

Here is a couple of friendly tutorials:


License

In short, when you submit code changes, your submissions are understood to be under the same MIT License that covers the project. Feel free to contact the maintainers if that's a concern.


References

This document was created adapting the great guidance and ideas from Brian A. Danielak's (briandk) template, Billie Thompson's (PurpleBooth) template and Nadia Eghbal's (nayafia) template

In addition (or in some cases because of taking inspiration from the above), this document was adapted from the open-source contribution guidelines for dwyl, Facebook's Draft, Elasticsearch, React, and Chef.

Table of contents generated with markdown-toc.