We are glad you are reading this, because we need volunteer developers to help this project come to fruition.
If you don't have anything you are working on we have a list of newbie friendly issues you can help out with.
If you haven't already, come find us on our mailing list. We want you working on things you're excited about.
Harvey, like most other open source projects, has a Code of Conduct that it expects its contributors and core team members to adhere to.
Here are some important resources:
We make use Travis-CI and make sure we can build your pull-requests before we can accept your contributions.
Harvey uses Github Pull Requests to accept contributions.
git clone https://github.com/Harvey-OS/harvey.git
.
It is also possible to use git
instead of https
if you have an
SSH public key stored on Github:
git clone git@github.com:Harvey-OS/harvey.git
.
This makes submitting contributions easier. For the rest of this
manual we assume to use https.git checkout -b feature-name
.
For example, @keedon selected the branch name statscrash
for
issue #70.Commit with a descriptive message and signed-off-by::
$ git commit -m -s "A brief summary of the commit
>
> A paragraph describing what changed and its impact."
For a representative example, look at @keedon's
commit message
for issue #70 mentioned above. You can also use graphical git
tools such as git gui
if you like.
To sign off automatically, copy the script for a git hook:
cp util/prepare-commit-msg .git/hooks/
Add the repo as a remote (every time you clone the repository)
git remote add yourname https://github.com/yourusername/harvey.git
where "yourname" is your github login name.
git remote -v
should look like this:
$ git remote -v
yourname https://github.com/yourname/harvey.git (fetch)
yourname https://github.com/yourname/harvey.git (push)
origin https://github.com/Harvey-OS/harvey.git (fetch)
origin https://github.com/Harvey-OS/harvey.git (push)
Push your branch to your forked repository:
git push yourname feature-name
Create a pull request by going to
https://github.com/yourname/harvey/pull/new/feature-name
or clicking the PR button
Add details of what you have worked on and your motivation.
When you send a pull request, we greatly appreciate if you include
emu
output and additional tests: we can always use more test
coverage. Please follow our coding conventions and make sure all
of your commits are atomic in the sense of having one feature per
commit.
git pull yourname feature-name
and update
your local repo before committing more changes.If you're working in a branch that is outdated with respect to the
master branch, just do a git pull --rebase
. This will put your
changes after the pull. In the case that there would be conflicts, you
will have to solve them manually, but they are marked with something
like ">>>>>HEAD
" and git will tell you about which files are in
conflict.
The sign-off is a simple line at the end of the explanation for the patch. Your signature certifies that you wrote the patch or otherwise have the right to pass it on as an open-source patch. The rules are pretty simple: if you can certify the below (from developercertificate.org):
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
Then you just add a line to every git commit message:
Signed-off-by: Joe Smith <joe.smith@email.com>
Use your real name (sorry, no pseudonyms or anonymous contributions.)
If you set your user.name
and user.email
git configs, you can sign your
commit automatically with git commit -s
.
If you read the code you should get a hang of it but a loose listing of our Style-Guide exists, we recommend you check it out.
We have also automated the process via clang-format so before you submit a change please format your diff.
Adopted from Open Government Contribution Guidelines