Skip to content

Latest commit

 

History

History
102 lines (78 loc) · 4.13 KB

CONTRIBUTING.md

File metadata and controls

102 lines (78 loc) · 4.13 KB

Contributing

Bond welcomes contributions from the community.

Process

  1. Make a proposal.
  2. Implement the proposal and its tests.
  3. Rebase commits to tell a compelling story.
  4. Start a pull request & address comments.
  5. Merge.

Proposal

For things like fixing typos and small bug fixes, you can skip this step.

If your change is more than a simple fix, please don't just create a big pull request. Instead, start by opening an issue describing the problem you want to solve and how you plan to approach the problem. This will let us have a brief discussion about the problem and, hopefully, identify some potential pitfalls before too much time is spent.

Implementation

  • Fork the repository on GitHub.
  • Start on a new topic branch off of master.
  • Instructions for getting Bond building and running the tests are in the README.
  • Make small and atomic commits that include tests.
  • Make sure that all the tests continue to pass.
    • The CMake check target will run the C++ tests for you.
    • The C# unit tests can be run from the command line or from within Visual Studio.
  • Update the changelog.

Rebase commits

The commits in your pull request should tell a story about how the code got from point A to point B. Good stories are edited, so you'll want to rebase your commits so that they tell a good story. No "add missing semi-colon" commits, please. :-)

Each commit should build and pass all of the tests. If you want to add new tests for functionality that's not yet written, ensure the tests are added disabled.

  • For Haskell tests, add the tests functions, but don't add a test case for them.
  • For CTest tests, add the executable to the CMakeLists.txt file to ensure that it builds, but do not include a add_test() (or similar) entry for it.
  • For C# NUnit tests, use the [Ignore] attribute to annotate the test cases to be ignored.

Don't forget to run git diff --check to catch those annoying whitespace changes.

Please follow the established Git convention for commit messages. The first line is a summary in the imperative, about 50 characters or less, and should not end with a period. An optional, longer description must be preceded by an empty line and should be wrapped at around 72 characters. This helps with various outputs from Git or other tools.

You can update message of local commits you haven't pushed yet using git commit --amend or git rebase --interactive with reword command.

Pull request

Start a GitHub pull request to merge your topic branch into the main repository's master branch. (If you are a Microsoft employee and are not a member of the Microsoft organization on GitHub yet, please contact the Bond Development team via e-mail for instructions before starting your pull request. There's some process stuff you'll need to do ahead of time.)

If you haven't contributed to a Microsoft project before, you may be asked to sign a contribution license agreement. A comment in the PR will let you know if you do.

The project maintainers will review your changes. We aim to review all changes within three business days.

Address any review comments, force push to your topic branch, and post a comment letting us know that there's new stuff to review.

Merge

If the pull request review goes well, a project maintainer will merge your changes. Thank you for helping improve Bond!

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.