You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: developers/contributing/index.qmd
+20-3Lines changed: 20 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -54,7 +54,7 @@ Or otherwise, set the global `ARGS` variable, and call `include("test/runtests.j
54
54
We merge all code changes through pull requests on GitHub.
55
55
To make a contribution to one of the Turing packages, fork it on GitHub, start a new branch on your fork, and add commits to it.
56
56
Once you're done, open a pull request to the main repository under [TuringLang](https://github.com/TuringLang).
57
-
Someone from the dev team will review your code (if they don't, ping `@TuringLang/maintainers` in a comment to get their attention) and check that the continuous integration tests pass.
57
+
Someone from the dev team will review your code (if they don't, ping `@TuringLang/maintainers` in a comment to get their attention) and check that the continuous integration tests pass (with some allowed exceptions, see below).
58
58
If all looks good, we'll merge your PR with much joy and gratitude If not, we'll help you fix it and then merge it with much joy and gratitude
59
59
60
60
Everything in this section about pull requests and branches applies to the Turing.jl and DynamicPPL.jl repositories.
@@ -63,7 +63,7 @@ As of August 2025 we are slowly moving towards having all repos do the full proc
63
63
64
64
#### Branches
65
65
66
-
Like Julia packages generally, Turing follows [semantic versioning](https://semver.org/).
66
+
Like Julia packages generally, Turing.jl follows [semantic versioning](https://semver.org/).
67
67
Because of this, we have two persistently alive branches in our repository: `main` and `breaking`.
68
68
All code that gets released as a new version of Turing gets merged into `main`, and a release is made from there.
69
69
However, any breaking changes should first be merged into `breaking`.
@@ -80,7 +80,7 @@ Meanwhile, breaking changes can be developed and merged into `breaking`, which i
80
80
Multiple breaking changes may be accumulated into `breaking`, before finally the `breaking`-to-`main` merge is done, and 0.20.0 is released.
81
81
On `breaking` the version number should then immediately be bumped to 0.21.
82
82
83
-
We do not generally bother doing backports of bug fixes, though we may consider them in special circumstances.
83
+
We do not generally back port of bug fixes, although we may consider doing so in special circumstances.
84
84
85
85
#### Change history
86
86
@@ -90,6 +90,23 @@ Any major new features should also be described in `HISTORY.md`, as may any othe
90
90
Bug fixes generally don't need an entry in `HISTORY.md`.
91
91
Any new breaking release must have an entry in `HISTORY.md`, entries for non-breaking releases are optional.
92
92
93
+
#### Continuous integration (CI) tests
94
+
95
+
We generally run the whole test suite of each repository in a GitHub action, typically for a few different versions of Julia, including the earliest supported version and the latest stable release.
96
+
On some repositories we also run a few other checks in CI, such as code formatting and simple benchmarks.
97
+
Generally all tests except those run on a prerelease version of Julia (e.g. a release candidate of an upcoming Julia release), and all code formatting checks, should pass before merging a PR.
98
+
Exceptions can be made if the cause of the failure is known and unrelated to the PR.
99
+
CI checks other than tests and formatting serve various purposes, and some of them can be allowed to fail.
100
+
Some examples are
101
+
102
+
- Anything running on a prerelease of Julia. These inform us of trouble ahead when that prerelease becomes an actual release, but don't require fixing for a PR to be merged.
103
+
- Any code coverage checks. Code coverate numbers can be helpful in catching missing tests or cases where the tests don't test what they are intended to. However, we do not insist on any particular coverage figures, since they are not a very good metric of a test suite's extensiveness.
104
+
- The benchmarks on DynamicPPL repo. These should be investigated to understand why they fail. If the reason is a bug in the PR, an actual test should be added to the test suite to catch it. However, sometimes they fail for unrelated reasons.
105
+
- Checks against some particular automatic differentiation backends. These are informative, telling us which backends have issues with which features, but often their breakage is beyond our control and we let it pass.
106
+
- The CI check in the `docs` repo for whether the docs are built with the latest Turing.jl release. This test failing is a reminder that we should make a PR to update to the latest version, but does not need fixing when working on a PR that makes unrelated changes to the documentation.
107
+
108
+
If you are ever unsure whether some CI check needs to pass, or if the reason why one is failing is mysterious or seems unrelated to the PR, ask a maintainer and they'll help you out.
109
+
93
110
#### Please make mistakes
94
111
95
112
Getting pull requests from outside the core developer team is one of the greatest joys of open source maintenance, and Turing's community of contributors is its greatest asset.
0 commit comments