Contribution Guide#

Welcome to the Contributor’s Guide to pystencils! If you are interested in contributing to the development of pystencils, this is the place to start. Before starting to code, please read the following pages carefully.

Technical Guides#

Policy for the Use of LLMs#

We strongly discourage the use of LLM-based systems (ChatGPT, GitHub copilot, coding agents, any so-called “generative AI”) in the development of pystencils.

As a developer, you bear full responsibility for all your contributions; you must be able to explain, in your own words, every design decision and its consequences, and every line of code you contribute. Furthermore, as stated above, you must hold the copyright to all your contributions. Both requirements are subverted by the extensive use of LLMs.

On the one hand, under US and EU law, humans cannot claim copyright on LLM-generated content. On the other hand, LLM use incentivizes quick-turnover workflows where the essential steps of understanding a problem, and planning its solution, are skipped by delegating to a machine agent. This means that developers never go through the crucial cognitive processes necessary to fully understand an issue. As pystencils is primarily an academic and research project, focused on exploring innovative approaches to scientific computing, such workflows are especially harmful to it.

Disallowed Uses of LLMs#

We prohibit any contributions essentially produced by LLMs. We draw the line wherever the use of LLMs goes beyond mechanical assistance (grammar improvement, minor refactorings, …) into replacing actual human creative effort.

You may not

  • contribute code or documentation primarily produced by an LLM, or

  • post LLM-generated comments, issues, merge request descriptions, or reviews on GitLab.

Permitted, but Discouraged, Uses of LLMs#

Assistive use of LLMs outside and before the actual implementation are permitted, but still discouraged. Instead of using an LLM to explain the codebase to you, we encourage you to read this documentation and talk to the developers directly. Instead of trying to solve complex issues through LLM assistance without understanding the system, familiarize yourself with the codebase through smaller and simpler issues.

For Novices#

We recognize that LLMs appear especially attractive to students, novices, and inexperienced programmers, as they seemingly lower the entry barrier to complex software projects. However, it is exactly this group that should be the most wary about LLM use, as it heavily sabotages the learning process they must go through to improve their skills. As a novice programmer seeking to contribute to pystencils, we encourage you to avoid LLM use altogether;
instead start with simple issues, carefully read our documentation, and reach out to the maintainers for feedback and support.