Skip to content
froystig edited this page Sep 14, 2010 · 17 revisions

Committer access and agreements:

If you are already have Level 1 Access to commit within the Mozilla project, you can request direct push access to this repository. Email one of the existing authors of this repository and ask if you want to be contributing quickly and regularly this way.

More likely is a fork and pull-request. To accept code or documentation contributions (patches, pull requests and such) into this repository from persons outside the levels of the existing Mozilla Commit Access Policy, we require that the contributor has signed a Committer’s Agreement with the Mozilla Foundation.

Pull-requests will be treated as “review requests”, and we will give feedback we expect to see corrected on style and substance before pulling. Changes contributed via pull-request should focus on a single issue at a time, like any other. Do not try to use pull-requests as a way to “sneak” unrelated changes in.

Conduct

  • Please be kind and courteous. There’s no need to be mean or rude.
  • Respect that people have differences of opinion and that every design or implementation choice carries a trade-off and numerous costs. There is seldom a right answer.
  • Please keep unstructured critique to a minimum. If you have solid ideas you want to experiment with, make a fork and see how it works.
  • We will exclude you from interaction if you insult, demean or harass anyone. That is not welcome behaviour.
  • Likewise any spamming, trolling, flaming, baiting or other attention-stealing behaviour.

Contributed code requirements:

Pass the existing tests. If you have a good reason for breaking a test, XFAIL it. We aim for clean builds at all times.

Pay attention to portability:

  • You are responsible for clean-build condition on all platforms (linux, OSX, win32), including under valgrind on linux.
  • Temporary breakage is acceptable only on a per-platform basis if you’re on platform A and the breakage was on platform B that you happened to not be developing on today, and only if you fix it fast.
  • If you’re going to commit directly to this repo, or land other people’s work into it via pull-request, please make sure you have access to all 3 primary platforms and can fix per-platform breakage.
  • If you are doing a lot of changes likely to cause per-platform breakage (say, a lot of linkage or threading work) please use a staging branch.

Conform to source-formatting house style:

  • 78 column maximum lines
  • no tabs (except Makefiles)
  • indent ocaml code under emacs tuareg-mode defaults
  • stick to local naming and code-organization style

Issue tracking

Add a test for anything you’re unsure of or see breaking in passing. The test driver runs every non-XFAILed test in the compile-fail, run-fail, and run-pass subdirectories.

File bugs in the issue tracker here as well as adding tests, or instead if you can’t quite figure out how to test the thing you want to point out.

Tag bugs liberally. The bug tracker here currently has weak search capabilities. Github staff has made a variety of comments suggesting “they’re working on it”, but in the meantime tags are our only hope.

Add “FIXME (issue #NN): blah blah” in the source anywhere you see room for improvement, where #NN is the issue number in the tracker here. If you fix an issue on commit, remove the associated FIXMEs (grep for other occurrences) and put the exact phrase “Closes #NN” (with that capitalization) in the commit message and github will pick it up and link to the commit, close the issue.

Language changes

At the moment we’re going to avoid a formal change policy; it’s too early and we’re still changing too many things in an ad-hoc, informal way. If we get to the point of a full supported release cycle, we’ll set up a language-change process. Until then, we will accept or reject pull requests mostly as a matter of taste and available energy.

Library additions are probably the most likely to be accepted.

Clone this wiki locally