Contributing

Signal K server is an Open Source project and contributions are welcome.

Contributions are made by creating Pull Requests in the GitHub repository.

Working on your first Pull Request?

You can learn how from this free series How to Contribute to an Open Source Project on GitHub


Submitting a Pull Request (PR)

Before you submit your Pull Request (PR) consider the following guidelines:

  1. Fork the repository.

  2. Make your changes in a new git branch:

    git checkout -b my-fix-branch master
    
  3. Create your patch.

  4. Commit your changes using a descriptive commit message that follows the conventions outlined here. Whilst we are not 100% strict about this, it really helps when reviewing the PR and in making the commit history readable. The TL;DR of it is below.

    • The subject line should be in the format <type>: <subject>, where <type> should be one of:
      • feat (feature)
      • fix (bug fix)
      • docs (documentation)
      • style (formatting, missing semi colons, ...)
      • refactor
      • test (when adding missing tests)
      • chore (maintain)
    • <subject> should use imperative, present tense: "change" not "changed" or "changes"
    • Examples of good Subject Lines:
      • doc: clarify meta.units behaviour
      • chore: update keyswithmetadat.json
      • style: whitespace
      • fix: allow nextPoint to be an intermediate leaf
      • feature: push design object fields under value/values
    • Message body should also be in imperative, present tense and include motivation for the change and differences to previous behaviour.
    • Footer should reference any issues. If the PR should close issue(s) (assuming it is committed), use closes/fixes or resolves and the issue number. eg. "closes #18", "fixes #21 and resolves #23".
    • Subject, Body and Footer are separated by a blank line.
  5. Push your branch to GitHub:

    git push origin my-fix-branch
    
  6. In GitHub, create a pull request.

  • Use the same guidelines as commit messages to write the PR title and description. The server's release notes are automatically generated from PR titles, so think about how you can make them informative and easy to understand. The description should tell how the change affects the server's behavior and motivation for doing the change.
  • If we suggest changes to your PR we expect you to:
    • Implement the agreed changes.

    • Rebase your branch and force push to your GitHub repository (this will update your Pull Request):

      git rebase master -i
      git push -f
      

After your pull request is merged

After your pull request is merged, you can safely delete your branch and pull the changes from the main (upstream) repository:

  • Delete the remote branch on GitHub either through the GitHub web UI or your local shell as follows:

    git push origin --delete my-fix-branch
    
  • Check out the master branch:

    git checkout master -f
    
  • Delete the local branch:

    git branch -D my-fix-branch
    
  • Update your master with the latest upstream version:

    git pull --ff upstream master