Skip to content

Latest commit

 

History

History
200 lines (158 loc) · 9.87 KB

CONTRIBUTING.md

File metadata and controls

200 lines (158 loc) · 9.87 KB

Contributing to CaimCore.jl

Thanks for taking the time to make CaimCore.jl better! 🎉 😄

Note: These contributing guidelines are adapted from the Atom Project's Contributing Guidelines.

Table of Contents

Code of Conduct

How can I contribute?

Style Guides

Additional Notes

Code of Conduct

This project, and everyone participating in it, is governed by the CaimCore.jl Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].

How can I contribute?

Reporting Bugs

This section guides you through submitting a bug report for CaimCore.jl. Following these guidelines helps maintainers and the community understand your report, reproduce the behavior, and find related reports.

Before creating bug reports, 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. 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.

How do I submit a bug report?

Bugs are tracked as GitHub issues. After you are sure the bug is either new, or needs to be readdressed, create an issue and provide the following information by filling in the template.

Explain the problem and include addition details to help maintainers reproduce the problem:

  • Use a clear and descriptive title for the issue to identify the problem.
  • Describe the exact steps which reproduce the problem in as many details as possible. For example, include a minimal script to reproduce the bug.
  • Describe the behavior you observed from the script and point out exactly what the problem is with that behavior. For example, include any output you observe and explain what is wrong with it.
  • Explain what behavior you expected to see instead and why.

Provide more context by answering these questions:

  • Did the problem start happening recently (e.g. after updating to a new version of CaimCore.jl) or was this always a problem?
  • If this problem started recently, can you reproduce the problem in an older version of CaimCore.jl? What is the most recent version of CaimCore.jl which does not have this bug?
  • Can you reliably reproduce the issue? If not, provide details about how often the problem happens and under which conditions it typically occurs.
  • If the problem is related to working with external resources (e.g. data files, network connections, etc...), does the problem happen for all resources, or only some? For example, is there a particular data file that seems to cause problems, or are all data file an issue?

Include details about your configuration

  • Which version of CaimCore.jl are you using?
  • What's the name and version of the Operating System you are using?

Suggesting Features

This section guides you through submitting an feature suggestion for CaimCore.jl, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion, find related suggestions, and prioritize feature development.

Before creating a feature request, perform a cursory search to see if it has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.

How do I submit a feature request?

Feature requests are tracked GitHub issues. After you are sure the request is not a duplicate, create an issue and provide the following information by filling in the template.

  • Use a clear and descriptive title for the issue to identify the suggestion.
  • Provide a description of the feature in as much detail as possible.
  • Propose an API for the feature to demonstrate how that feature fits in with the rest of CaimCore.jl.
  • Give and example usage for the proposed API. Of course, the output is not necessary.
  • Reference any resources on which the feature is based. The references should any mathematical details necessary for implementing the feature, e.g. defining equations.

Your First Code Contribution

Your contributions are more than welcome! before you get started It's also advisable that you read through the API documentation to make sure that you fully understand how the various components of CaimCore.jl interact.

For external contributions, we use GitHub forks and pull requests workflow. To get started with contributing code, you first need to fork CaimCore.jl to one of your accounts. As you begin development, have several recommendations that will make your life easier.

  • Do not work directly on master. Create a branch for whatever feature or bug you are currently working on.
  • Create a draft pull request after you first push to your fork. This will ensure that the rest of the CaimCore.jl community knows that you are working on a given feature or bug.
  • Fetch changes from dglmoore/CaimCore.jl's master branch often and merge them into your working branch. This will reduce the number and severity of merge conflicts that you will have to deal with. How do I fetch changes from dglmoore/CaimCore.jl?

Pull Requests

The Fork-Pull Request process described here has several goals:

  • Maintain CaimCore.jl's quality
  • Quickly fix problems with CaimCore.jl that are important to users
  • Enage the community in working to make CaimCore.jl as near to perfect as possible
  • Enable a sustainable system for CaimCore.jl's maintainers to review contributions

Please follow these steps to have your contribution considered by the maintainers:

  1. Use a clear and descriptive title for your pull request.
  2. Follow all instructions in the pull request template.
  3. Follow the styleguides
  4. After you submit your pull request, verify that all status checks are passing.
    What if the status checks are failing? If a status check is failing, it is your responsibility to fix any problems. Of course the maintainers are here to help, so please post a comment on the pull request if you need any support from us. If you believe that the failure is unrelated to your change, please leave a comment on the pull request explaining why you believe that to be the case. A maintainer will re-run the status checks for you. If we conclude that the failure was a false positive, then we will open an issue to track that problem with our own status check suite.

Style Guides

Git Commit Messages

  • Use the present tense ("Add PrisonersDilemma" not "Added PrisonersDilemma")
  • Use the imperative mood ("Add duration parameter..." not "Adds duration parameter...")
  • Limit the first line to 72 characters or less
  • Reference isses and pull requests liberally after the first line
  • When only changing documentation, include [ci skip] in the commit title
  • Consider starting the commit message with an applicable emoji:
    • 🎨 :art: when improving the format/structure of the code
    • 🐎 :racehorse: when improving performance
    • 📝 :memo: when writing documentation
    • 🐧 :penguin: when fixing something on Linux
    • 🍎 :apple: when fixing something on maxOS
    • 🏁 :checkered_flag: when fixing something on Window
    • 🐛 :bug: when fixing a bug
    • 🔨 :hammer: when adding code or files
    • 🔥 :fire: when removing code or files
    • 💚 :green_heart: when fixing the CI build
    • ✔️ :heavy_check_mark: when adding tests
    • ⬆️ :arrow_up: when upgrading dependencies
    • ⬇️ :arrow_down: when downgrading dependencies
    • 👕 :shirt: when dealing with linter warnings

Additional Notes

How do I fetch changes from dglmoore/CaimCore.jl?

After you have cloned your fork, add the dglmoore/CaimCore.jl as a remote:

$ git add remote dglmoore https://github.com/dglmoore/CaimCore.jl.git

To fetch changes from dglmoore/CaimCore.jl's master branch:

$ git fetch dglmoore master

This will get all of the changes from the main repository's master branch, but it will not merge any of those changes into your local working branchs. To do that, use merge:

$ git checkout master
$ git merge dglmoore/master
...

You can then merge the changes into your feature branch (say transfer-entropy)

$ git checkout transfer-entropy
$ git merge master

and then deal with any merge conflicts as usual.