Hi,

Some weeks (months?) ago we discussed the need for some general contribution guidelines with mato. That issue has now percolated to the top in the usual weirdly non-linear pipelined brain process, so here goes my proposal. The document is mainly meant to point newcomers to the right place, and also to establish common procedure for us old ... um ... hackers.

Initial draft follows. Comments on either content or wording/grammar? nb. it's not intended to be a legal document.

When we have agreed on the guidelines, I'll commit the guidelines to the rumpkernel.org site and add a link to the "community section" on the wiki.

=== snip ===
The goal of the rump kernel project is to offer free, re-usable, kernel-quality drivers. Additionally, we offer products built on top of those drivers, such as the rumprun unikernel.

The emphasis of development is on a well-architected and modular infrastructure providing the maximal amount of features with the minimal amount of code. As a rule of thumb, we do not write, port or maintain code that we can use unmodified and readily tested from other sources.


        Contributions

Contributions to the rump kernel project are defined as changes hosted under repo.rumpkernel.org and include, but are not limited to, documentation and code. All code contributions are to be covered by a 2-clause BSD license. In exceptional circumstances we will also accept a BSD-like license, e.g. when a key part of a contribution consists of code from a third party. Contributions are also to be free of all legal encumberment such as, but not limited to, software patents. If you are not the owner of the contribution, e.g. in case working for a company, you must have appropriate authorization. Copyright remains with the contributors.

Contributions are divided roughly into two groups: ones needing public review discussions and ones not needing them. Large, architectural and controversial changes need public review. Simple and "obviously correct" changes to not need it. It is not possible to precisely define the subjective term "obviously", so when in doubt, it is better to err on the side of too much review. You can find the review process detailed below in the section "Review process".

When the appropriate review has been undertaken, if you have push access to the repository you are contributing to, you can push your change. Otherwise, submit a pull request to the appropriate repository. We do not require {Approved,Reviewed,etc}-by tags in the commits.

We encourage contributions in the size of minimal self-contained functional units. For example, if bug fixes are made while working on a larger feature, it is best to submit the bug fixes independently -- trivial bug fixes also do not need review. Also, if independently useful functionality is developed as part of a larger change, contributing it individually is encouraged.

Do not submit changes based on subjective improvements, e.g. "make X faster" without conducting at least one performance measurement, or perform churn that "improves" readability. As usual, common sense prevails here too, e.g. switching from an O(n^2) algorithm to an O(n log n) may be so "obviously" correct that it does not need benchmarking.


        Review process

Review happens by sending a patch to the appropriate mailing list (currently always [email protected]) with a descriptive subject. We prefer a single patch and mail for a single contribution instead of a series of mails and patches (nb. you can still issue the pull request as a series of commits). Include a few lines of background information on your contribution so that people not intimately familiar with the area of your patch can still understand how the patch fits into the big picture of the rump kernel ecosystem.


        Bugs reports

Submit bug reports as issues to the appropriate repositories. If you have a proposed fix, follow the contribution procedure as described above. A proposed fix is never required for submitting a bug report. If you are working on a fix, but it will take some time, submit the bug report and note that you are working on a fix. We would rather have the majority of our bugs be known bugs instead of unknown bugs.
=== snip ===

Reply via email to