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#
Licenses and Copyright#
Pystencils is free software, licensed under the GPL v3; its documentation is distributed under the CC BY-NC-SA 4.0 license. When contributing code and documentation to pystencils, you agree that your code will be placed under the respective licenses. We do not ask you to assign copyright; you retain all copyright to your work.
You must make sure that you either own the copyright for all contributed code, or that otherwise contributed code is available under a license compatible with the GPL. In the latter case you must give attribution to the code’s original authors. Do not mix code with several different licenses in one file.
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.