Policy on AI-Assisted Contributions during GSoC 2026 (Draft)

This post outlines a draft of our proposed policy on AI-assisted contributions for GSoC.

If you are considering applying, please read it carefully and share your feedback. We want this policy to be fair, practical, and realistic for contributors, and we’re open to adjusting it based on your input!


Policy on AI-Assisted Contributions during GSoC 2026

We accept the use of AI tools (e.g. LLMs) to assist with contributions. However, strict rules apply.

1. Disclosure Requirement

All AI-assisted contributions must include a section at the top titled:

"AI Assistance Disclosure"

This section must clearly:

  • Describe what parts were generated or significantly modified using AI

  • Explain how AI was used (e.g. drafting code, refactoring, wording improvements, test suggestions, etc.)

  • Confirm that you have:

    • Reviewed the output carefully
    • Verified correctness
    • Fully understand the generated code or text

2. Proposals

  • You must not use AI to write your GSoC proposal.
  • It is acceptable to use AI tools to improve clarity, grammar, or wording.
  • Any such use must still be disclosed in an AI Assistance Disclosure section.

We expect original thinking and a genuine understanding of the project.

3. Quality Standards

Using AI does not lower our standards.

We are unlikely to accept pull requests that include:

  • Large auto-generated summaries
  • Excessively verbose documentation
  • Over-engineered or unnecessary code
  • Dozens of trivial tests for minimal changes
  • Unreviewed boilerplate content

LLMs are good at generating all this, but quantity does not mean quality.

You are responsible for reviewing, trimming, and refining any AI output. Only submit work that meets Joplin’s quality standards.

4. Contribution Guidelines Still Apply

All contributors must read and follow our official development guidelines:

https://joplinapp.org/help/dev/

If you use AI, you must ensure the generated output follows these rules as well.

AI tools frequently produce code that does not match our architecture, style, or project structure. It is your responsibility to correct this.

5. Understanding Requirement

You must fully understand any code you submit.

We will have live discussions during the programme. If you cannot explain the code you submitted, it will be clear.

6. Enforcement

Failure to:

  • Disclose AI usage
  • Review and validate generated output
  • Demonstrate understanding of submitted work

may result in immediate rejection of the proposal or pull request without further review.

AI can be a useful tool. It is not a substitute for understanding, judgement, or engineering discipline.

9 Likes

Thanks for mentioning all this .
looking forward into this :+1:

@laurent I had a read through the GSOC project ideas. For the 7th proposal gsoc/ideas.md at master · joplin/gsoc · GitHub I’d like to suggest that it could be more beneficial to implement an encrypted notebook feature, if already committing to dedicate a large amount of time on this. This would offer more flexibility than encrypting individual notes and their resources, as it would then offer the flexibility to encrypt multiple notes at once.

1 Like

Rather than having Joplin encrypt and decrypt notes as they are moved from one notebook to another, and end up with secure stuff wide open by mistake, have a secure profile. Everything done there is safe and you can even use CSS to give it a special appearance so the user knows the status. Notebooks, notes, resources, everything about this profile gets stored locally in encrypted form.

If you mean a profile in the sense of the existing profiles implemented in Joplin, that presents the issue of needing to use separate sync targets for separate profiles for many of the sync options, and essentially makes it a different feature, which is effectively add password / pin lock with encryption at rest. But the concept of a secure area / vault within the notebook list, which has it’s own notebook hierarchy within it would be excellent

1 Like

That would make sense I think, although I think some users might want to encrypt only certain notes within a notebook. Maybe the two features could be implemented at the same time

2 Likes

I just wanted to express appreciation for your work and for caring about these issues.

1 Like

Also:

2. AI-Generated note graphs

Sounds like it would be ‘Jopsidian’ :face_with_tongue:

The AI policy has now been published here:

If you are participating please make sure you read it.

So far almost all pull requests include these verbose AI-generated descriptions at the top - instead you need to select what makes sense to include and what doesn't, and that's true for the code too. We don't need 4 sections, 12 bullet points and 7 tests just because you changed a variable name.

Sometimes it helps to ask the AI to review what it has done and ask it to simplify.

1 Like

Please note that I have now also added this section:


Reviewer communication

You must not use AI to answer review comments or communicate with maintainers. We expect genuine engagement with feedback, not copy-pasted responses. Over-reliance on AI in discussions can quickly become obvious and may be perceived as a lack of respect for the review process.

Finally, remember that collaboration involves real conversations. If you progress through the programme, we will have live discussions, and your ability to explain and justify your work clearly will matter far more than any generated output.

6 Likes

Not really AI or security related (but neither is the LAN sync project?), but I think a good candidate for a GSOC project would be to implement some kind of automatic conflict resolution, where conflicts are resolved automatically where possible. On mobile in particular, it can be a real pain to resolve conflicts, especially for long notes

1 Like

Having needed to simply delete most if not all conflicts on mobile, automatic conflict resolution would be a great feature to have. It would also prevent having the Conflicts notebook sitting in the sidebar, which somehow still shows the new note button when opened.