Project: Slurm (Orchestration & Management / Scheduling & Orchestration)
File: CONTRIBUTING.md

NOTES FOR GITHUB DEVELOPERS The official issue tracker for Slurm is at https://bugs.schedmd.com/ We welcome code contributions and patches, but we do not accept Pull Requests through GitHub at this time. Please submit patches as attachments to new bugs under the "C - Contributions" severity level. TARGET RELEASES Changes involving adding new functionality, functional changes to the command line tools (either in adding new options, or changing the output formats), any RPC protocol changes or state file format modifications, and similar work is only considered for inclusion on the master branch (which will become the next stable Slurm release). Bug fixes themselves are considered for inclusion on the most recent stable release, although may be deferred to the next major release at the reviewers' discretion. All contributed patches are subject to review by SchedMD. CODING GUIDELINES -- Slurm loosely follows the Linux Kernel style guidelines (https://www.kernel.org/doc/html/latest/process/coding-style.html). If in doubt, please follow their example. A brief overview, with some notable exceptions: Tabs not spaces, tabs are 8-spaces wide. Lines should be less than 80-characters wide. Except that error message and other log messages should not be broken up mid-sentence. They should be split on a format sequence, comma, or period instead. (This is to make it easier to grep for that string in the source code at a later point.) Use K&R style for braces. Slurm does use typedef's for certain types, ignore Chapter 5 of the kernel guidelines. Comments can be in either C-style `/ comment /` or C++ style `// comment` formats. Follow the rest of Chapter 8's recommendations for multi-line comments though. BUILD SYSTEM CHANGES -- Please submit changes to `Makefile.am`, but not to `Makefile.in`. We will regenerate those files to minimize the differences in the commit. We want to avoid noise generated by differences in libtool installations. Changes to `configure.ac` or `auxdir/*` will take additional time to review - Slurm is built on a wide variety of distributions and architectures, and even minor differences can cause unintended consequences. PATCH SUBMISSION An entry in `NEWS` should describe the change or new functionality. Please break patches up into logically separate chunks, while ensuring that each patch can still be compiled. (Anticipate that a developer using `git bisect` may pick any intermediate commit at some point.) If you decided to reformat a file, please submit non-functional changes (spelling corrections, formatting discrepancies) in a separate patch. This makes reviewing substantially easier, and allows us to focus our attention on the functional differences. If you make an automated change (changing a function name, fixing a pervasive spelling mistake), please send the command/regex used to generate the changes along with the patch, or note it in the commit message. While not required, we encourage use of `git format-patch` to generate the patch. This ensures the relevant author line and commit message stay attached. Plain `diff`'d output is also okay. In either case, please attach them to the bug for us to review. Spelling corrections or documentation improvements can be suggested without attaching the patch as long as you describe their location. LEGAL -- We ask that a contributor licensing agreement be signed for all substantial contributions. Please see https://slurm.schedmd.com/contributor.html for details.