Skip to content

Commit a6b6bdf

Browse files
RamSawcopybara-github
authored andcommitted
Add issue coordination guidelines to CONTRIBUTING.md.
This change introduces a new section on how to coordinate work on issues, including checking for existing PRs, claiming issues, waiting for assignment, and handling stale assignments. Minor formatting adjustments were also made to the style guide section. PiperOrigin-RevId: 860272108
1 parent 4569c52 commit a6b6bdf

File tree

1 file changed

+59
-36
lines changed

1 file changed

+59
-36
lines changed

CONTRIBUTING.md

Lines changed: 59 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,27 @@
33
We welcome small patches related to bug fixes, but we do not plan to accept
44
major changes to this repository at this time.
55

6+
## Coordination & Claiming Issues
7+
8+
To avoid duplicate effort and ensure your work can be merged, please follow
9+
these steps:
10+
11+
* **Check for existing PRs and Issues:** Before starting work, search the
12+
issue tracker and active PRs to see if the feature/bug is already being
13+
addressed.
14+
15+
* **Claim the issue:** If an issue exists, comment on it expressing your
16+
intent to work on it (e.g., "I'd like to work on this"). A maintainer will
17+
then assign it to you.
18+
19+
* **Wait for Assignment:** Do not start a large-scale implementation until a
20+
maintainer has acknowledged your comment. This prevents multiple people from
21+
working on the same fix simultaneously.
22+
23+
* **Stale Assignments:** If an assigned issue hasn't seen progress or
24+
communication for 14 days, the assignment may be cleared to allow others to
25+
contribute.
26+
627
## Contributor License Agreement
728

829
Contributions to this project must be accompanied by a Contributor License
@@ -25,45 +46,47 @@ information on using pull requests.
2546
## Style guide
2647

2748
Code in this library generally follows the
28-
[Google Style Guide](https://google.github.io/styleguide/pyguide.html).
29-
We aim to keep APIs, names, and design patterns in line with the broader JAX
30-
ecosystem as much as possible, with immutability and functional purity being a
31-
key guiding principles we adhere to across our library. Below are some more
32-
detailed conventions depending on what is being contributed.
33-
34-
1. **Public Facing Functions**: Public facing functions are those that are
35-
exposed to the **users** of JAX Privacy (usually surfaced via \_\_init\_\_.py).
36-
Public facing functions and classes should **always** have full docstrings, type
37-
annotations, and example usages in the form of
38-
[doctests](https://docs.python.org/3/library/doctest.html). Doctests
39-
provides useful documentation that stays up-to-date with code changes, and
40-
is a useful litmus test on the simplicity and usability of the API surface.
41-
42-
1. **Internal functions used across files**: For maintainability of the core
43-
library, it is sometimes beneficial to define a function in one file and have it
44-
be used by another file within the jax_privacy package. These functions are not
45-
intended to be consumed by JAX Privacy users (although may be encountered by
46-
developers / contributors). These functions should generally have
47-
descriptive names, type annotations. Internal functions should have a one-line
48-
docstring explaining what they do. A full docstring is encouraged if the
49-
function has non-obvious side effects, complex arguments,
50-
or implements a multi-step algorithm that isn't clear from the code alone.
51-
52-
1. **File-local private functions**: These function should always have a
53-
leading "_". This signals to developers that the function is not part of the
54-
public API and is subject to change without notice. These functions should have
55-
1-line docstrings; type annotations are optional and context-dependent. Example
56-
usages are not needed as they can be found in the corresponding _test.py file.
57-
58-
1. **Nested functions**: Functions defined within other functions should
59-
generally be as simple as possible; we prefer to keep the boilerplate minimal
60-
on these (no docstrings + type annotations), inline comments can be used, but
61-
should be used sparingly.
49+
[Google Style Guide](https://google.github.io/styleguide/pyguide.html). We aim
50+
to keep APIs, names, and design patterns in line with the broader JAX ecosystem
51+
as much as possible, with immutability and functional purity being a key guiding
52+
principles we adhere to across our library. Below are some more detailed
53+
conventions depending on what is being contributed.
54+
55+
1. **Public Facing Functions**: Public facing functions are those that are
56+
exposed to the **users** of JAX Privacy (usually surfaced via
57+
\_\_init\_\_.py). Public facing functions and classes should **always** have
58+
full docstrings, type annotations, and example usages in the form of
59+
[doctests](https://docs.python.org/3/library/doctest.html). Doctests
60+
provides useful documentation that stays up-to-date with code changes, and
61+
is a useful litmus test on the simplicity and usability of the API surface.
62+
63+
1. **Internal functions used across files**: For maintainability of the core
64+
library, it is sometimes beneficial to define a function in one file and
65+
have it be used by another file within the jax_privacy package. These
66+
functions are not intended to be consumed by JAX Privacy users (although may
67+
be encountered by developers / contributors). These functions should
68+
generally have descriptive names, type annotations. Internal functions
69+
should have a one-line docstring explaining what they do. A full docstring
70+
is encouraged if the function has non-obvious side effects, complex
71+
arguments, or implements a multi-step algorithm that isn't clear from the
72+
code alone.
73+
74+
1. **File-local private functions**: These function should always have a
75+
leading "_". This signals to developers that the function is not part of the
76+
public API and is subject to change without notice. These functions should
77+
have 1-line docstrings; type annotations are optional and context-dependent.
78+
Example usages are not needed as they can be found in the corresponding
79+
_test.py file.
80+
81+
1. **Nested functions**: Functions defined within other functions should
82+
generally be as simple as possible; we prefer to keep the boilerplate
83+
minimal on these (no docstrings + type annotations), inline comments can be
84+
used, but should be used sparingly.
6285

6386
## Linting and testing
6487

65-
We use `flake8`, `pylint` and `pytype` for linting and type checking. Please
66-
run the following commands locally before submitting a pull request:
88+
We use `flake8`, `pylint` and `pytype` for linting and type checking. Please run
89+
the following commands locally before submitting a pull request:
6790

6891
```bash
6992
$ flake8 jax_privacy/**.py

0 commit comments

Comments
 (0)