:orphan:
.. role:: raw-html-m2r(raw)
:format: html
.. _CONTRIBUTING/how-to-contribute-to-pysdc:
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 :doc:`pull request recommendations <./docs/contrib/01_pull_requests>`.
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 :doc:`continuous integration (CI) <./docs/contrib/02_continuous_integration>`.
Others are specific conventions chosen for the pySDC library,
that may follow Python standards (or not ...), detailed in the
:doc:`naming conventions <./docs/contrib/03_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
:doc:`custom implementations <./docs/contrib/04_custom_implementations>`
for more details. Additional guideline are also given on how to
:doc:`document the code <./docs/contrib/05_documenting_code>` in ``pySDC``.
..
📣 Some core components (collocation matrix, $Q-\Delta$ coefficients, Lagrange barycentric interpolation)\ :raw-html-m2r:`
`
are implemented and developed in the `\ ``qmat`` companion package `_.
Checkout its own `contributing guide `_
to add any new coefficient / feature on this part.
#. `GitHub Forks and Pull Requests `_
#. :doc:`Pull Requests Recommendations <./docs/contrib/01_pull_requests>`
#. :doc:`Continuous Integration <./docs/contrib/02_continuous_integration>`
#. :doc:`Naming Conventions <./docs/contrib/03_naming_conventions>`
#. :doc:`Custom Implementations <./docs/contrib/04_custom_implementations>`
#. :doc:`Documenting Code <./docs/contrib/05_documenting_code>`
#. :doc:`Adding a project <./docs/contrib/06_new_project>`
|:arrow_left:| :doc:`Back to main page <./index>`