mig/CONTRIBUTING.md

64 строки
3.2 KiB
Markdown

# Welcome to the Mozilla InvestiGator project!
MIG is an open source Mozilla project. We welcome all contributions and will
help you get started and submit your first patch. The best place to get your
questions answered is in the `#mig` channel on
[irc.mozilla.org](https://wiki.mozilla.org/IRC).
If you're new to Mozilla, you may find the [Contributing to the Mozilla
codebase](https://developer.mozilla.org/en-US/docs/Introduction) page on MDN
full of interesting information.
## Looking for a place to start?
Take a look at the list of [issues labelled "up for grabs"](https://github.com/mozilla/mig/issues?q=is%3Aopen+is%3Aissue+label%3Aup-for-grabs) and pick you that interests you. If you want more information, ping "alm" and "ulfr" on the #mig IRC channel on irc.mozilla.org.
## Coding guidelines
* Commits must be descriptive of the change that is being made to the
source code.
* If your commit is linked to a github issue, please add a reference
to it in the commit message.
ex: `fix bad counter on agent stats, fixes #125123`
* Pull requests must represent the final state of your commit. If you spent two
weeks working on code, please only submit the commits that represent the
latest version of your code at the moment of the submission. While keeping a
history of your personal progress may be interesting to you, it makes reviews
longer and more difficult. `git rebase` is your friend here.
* Inform your reviewer that you have corrected something in a subsequent commit,
to help the reviewer follow up. For example:
- reviewer: `please check len(string) prior to calling string[10:15]`
- committer: `fixed in 452ced1c`
* All Go code must be formatted using `gofmt`.
* External dependencies must be vendored, the source of the repository must be
added into the Makefile under `go_vendor_dependencies`. Your patch must
include the vendored packages in a separate commit.
* When writing modules, follow the documentation at [Modules
writing](https://github.com/mozilla/mig/blob/master/doc/modules.rst) and check that:
- tests have been added that cover the core functionalities of the module
- documentation has been written into modules/<modulename>/doc.rst
Please don't pick a cute or clever name for your module. Pick a name that is
as explicit as possible. For example, a module that inspects files on the file
system would be called `file`. A module that lists packages is called `pkg`.
* In modules, you can set GOMAXPROCS to 1, or you can leave it unset and it will
be defined somewhere else. Never set GOMAXPROCS to something greater than 1,
we care about the impact the agent has on the cpu usage of its host.
* While we do not enforce line size or function length, please be mindful of the
readability of your code. A single function that is longer than 100 lines, or
larger than 120 columns should probably be rewritten into smaller and cleaner
functions.
## Licensing
All contributions to MIG must be placed under the Mozilla Public License Version
2.0. We don't ask you to sign anything, but we expect everyone to follow these
guidelines: [Commit Access Requirements](https://www.mozilla.org/en-US/about/governance/policies/commit/requirements/)