Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / CONTRIBUTING.md
1 Guidelines
2 ==========
3
4 When contributing to the Mono project, please follow the [Mono Coding
5 Guidelines][1].  We have been using a coding style for many years,
6 please make your patches conform to these guidelines.
7
8 [1]: http://www.mono-project.com/community/contributing/coding-guidelines/
9
10 Etiquette
11 =========
12
13 In general, we do not accept patches that merely shuffle code around,
14 split classes in multiple files, reindent the code or are the result
15 of running a refactoring tool on the source code.  This is done for
16 three reasons: (a) we have our own coding guidelines; (b) Some modules
17 are imported from upstream sources and we want to respect their coding
18 guidelines and (c) it destroys valuable history that is often used to
19 investigate bugs, regressions and problems.
20
21 License
22 =======
23
24 The Mono runtime, compilers, and tools and most of the class libraries
25 are licensed under the MIT license. But include some bits of code
26 licensed under different licenses. The exact list is [available here](https://github.com/mono/mono/blob/master/LICENSE).
27
28 Different parts of Mono use different licenses.  The actual details of
29 which licenses are used for which parts are detailed on the LICENSE
30 file in this directory.
31
32 CLA
33 =======
34
35 Contributions are now taken under the [.NET Foundation CLA](https://cla2.dotnetfoundation.org/).
36
37 Code Review
38 =======
39 We are requiring code reviews before merging a pull request.
40 GitHub won't let you merge a PR until someone from the Mono team approves it.
41
42 Testing
43 =======
44
45 Pull requests go through testing on our [Jenkins server][2]. We will
46 usually only merge a pull request if it causes no regressions in a
47 test run there.
48
49 When you submit a pull request, one of two things happens:
50
51 * If you are a new contributor, Jenkins will ask for permissions (on
52   the pull request) to test it. A maintainer will reply to approve
53   the test run if they find the patch appropriate. After you have
54   submitted a few patches, a maintainer will whitelist you so that
55   all of your future pull requests are tested automatically.
56 * If you are a well-known, whitelisted contributor, Jenkins will go
57   ahead and test your pull request as soon as a test machine is
58   available.
59
60 When your pull request has been built, Jenkins will update the build
61 status of your pull request. If it succeeded and we like the changes,
62 a maintainer will likely merge it. Otherwise, you can amend your pull
63 request to fix build breakage and Jenkins will test it again.
64
65 [2]: http://jenkins.mono-project.com/
66
67 # Inactivity
68
69 Occasionally, a pull request sits for several months without any
70 response from the author. This isn't necessarily an issue, but we may
71 sometimes decide to close pull requests that have not seen any
72 progress for a long time. This is in interest of keeping the pull
73 request list clean so that other pull requests don't get lost in the
74 clutter.
75
76 If we do close your pull request due to inactivity, you're more than
77 welcome to submit it anew after you address any comments or issues that
78 were brought up on the original pull request.