How to contribute to pySDC

Developments on the pySDC code use the classical approach of forks and pull requests. You can look at extended GitHub documentation for more details (skip this if you are already used to it). Furthermore, branches on pySDC follow a pre-defined structure. To contribute to any of them, please look at the pull request recommendations.

Additionally, a few rules are set to enforce code readability, consistency and reliability. Some of them are automatically tested with each commit, and summarized in the page on continuous integration (CI). Others are specific conventions chosen for the pySDC library, that may follow Python standards (or not …), detailed in the naming conventions page.

Finally, while pySDC provides many base functionalities that implement classical flavors of SDC, it also allows problem-specific applications through Object-Oriented Programming (OOP) and the implementation of custom inherited classes. This follows a specific OOP framework, you can look at the page on custom implementations for more details. Additional guideline are also given on how to document the code in pySDC.

📣 Some core components (collocation matrix, $Q-Delta$ coefficients, Lagrange barycentric interpolation)
are implemented and developed in the ``qmat` companion package <https://github.com/Parallel-in-Time/qmat>`_. Checkout its own contributing guide to add any new coefficient / feature on this part.

🤖 pySDC declares how much of its code was written with AI help in ``aidecl.yaml` <./aidecl>`, checked on every CI run. Two things help keep that honest: please keep the Co-authored-by: trailer that agents add to their commits (this mostly means not stripping it when squashing), and, if you contribute regularly, consider installing Git AI. It records which lines an agent wrote, needs no workflow changes, and is strongly recommended but entirely optional — without it your commits simply count as human-written.

  1. GitHub Forks and Pull Requests

  2. Pull Requests Recommendations

  3. Continuous Integration

  4. Naming Conventions

  5. Custom Implementations

  6. Documenting Code

  7. Adding a project

⬅️ Back to main page