AI and LLM policy¶
The purpose of this document is to gradually set boundaries about the use of LLMs, in order to avoid licensing conflicts and low effort contributions. We also want to be transparent about the way we use those tools, and about the way we expect others to do so when they contribute to this project. Keep in mind that AI tooling evolves rapidly, so we might have to frequently update this policy.
Logos, icons, and other assets¶
Using LLMs to generate assets is strictly prohibited. Our branding should reflect the purpose of the project, and there is clearly no room for licensing ambiguities in this case. We also have very strict rules regarding iconography (see src/icons/README.md).
Documentation¶
Using LLMs for extensive documentation is strongly discouraged. Documentation should help clarify things that are not apparent. In our experience, LLMs tend to do the exact opposite. They state the obvious and pollute the project with noise. Using them for a final pass to catch typos and other simple mistakes should be fine.
Core¶
Code contributions fully generated by AI tools will be rejected. The birth of this project predates LLMs. Its core is written by hand with minimal AI assistance, and we want to keep it that way to maintain ownership and control. Contributions partially assisted by AI tools are allowed, as long as they are not used to generate code. Using LLMs to ask questions, research, and to catch errors or fix typos before submitting a PR is allowed.
There is a huge gray area between LLM generated PRs and purely handwritten code, that is really hard to evaluate or validate, so we don't think there is a point trying to specify this further. For instance, repetitive changes that can be easily automated by an LLM, is an accepted use case. On the other hand, if your contribution is a prompt, opening a new issue is a better option.
Use your judgement, with or without the help of LLMs. If your understanding of the project decreases after creating a pull request, you should be alarmed.
Testing¶
Using LLMs to write tests is also discouraged. We prefer adding tests selectively, instead of blindly try to increase our test coverage. The "why" and "how" is more important than quantity.
Reviews¶
We do not use LLMs to review third party contributions. We might use them to review our own contributions, mainly due to the lack of other options. We may also use various models from time to time to review the whole project. The purpose is to find random issues that we missed (bugs, typos, security issues). Although LLMs can produce a lot of false positives, they can also quickly identify problems that would normally require a very thorough pass to catch them.
Translations and build tools¶
Those are the areas where we encourage generating content using LLMs.
Translations make the project widely accessible, and we don't have the capacity
to maintain user generated translations yet. They are also isolated, so
replacing or removing them won't affect the core product. Using LLMs to update
or add new languages under src/lang is allowed, but human intervention is
required to validate that the changes don't break existing functionality, or
reduce the quality of existing translations.
The same is also true for our build tools under src/build. They usually
contain throw-away code, since we are mainly interested in the artifacts they
produce. Those contributions should be reviewed and tested, regardless of the
way they were generated, to make sure that they don't introduce any bugs, or
reduce the quality of the code.
For now, we treat code generated by LLMs the same way we treat side effects. If we cannot avoid it, we try to isolate it as much as possible.
Even though our AGPL license should be compatible with most of the training material of LLM models, contributors should always ensure that their work does not violate any copyright laws. This also applies to AI generated code. Check the tool’s terms of use, to make sure you are not using copyrighted sources. You are advised to use models trained on content with compatible licensing.
Attribution¶
We currently don't require adding attribution notes to PRs and commits about LLM
usage. Choosing between words like assisted, created, co-authored, and
listing the used models and harnesses is hard, it cannot be enforced, and has
questionable value.