Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
93bd66d
Update actions/setup-java action to v6
xdev-renovate Aug 25, 2026
725993c
Merge pull request #304 from xdev-software/renovate/actions-setup-jav…
AB-xdev Aug 31, 2026
ee3a9cb
Add new CheckStyle rules for v14
AB-xdev Aug 31, 2026
501e65a
Update dependency com.mycila:license-maven-plugin to v5.1.2
xdev-renovate Sep 1, 2026
70c3524
Update net.sourceforge.pmd to v7.27.0
xdev-renovate Sep 1, 2026
77fb755
Update dependency com.puppycrawl.tools:checkstyle to v14
xdev-renovate Sep 1, 2026
1005278
Merge pull request #303 from xdev-software/renovate/com.mycila-licens…
AB-xdev Sep 1, 2026
0ee3b7e
Merge pull request #301 from xdev-software/renovate/com.puppycrawl.to…
AB-xdev Sep 1, 2026
88a50b5
Merge pull request #305 from xdev-software/renovate/net.sourceforge.pmd
AB-xdev Sep 1, 2026
3070996
PMD 7.27: Fix deprecation
AB-xdev Sep 1, 2026
c94f8c2
Merge branch 'master' into update-from-template-github_com_xdev-softw…
xdev-gh-bot Sep 1, 2026
f1f37fe
Merge branch 'master' into update-from-template-github_com_xdev-softw…
xdev-gh-bot Sep 1, 2026
ac8a777
Add centralized contribution guide with AI policy attached to it
AB-xdev Sep 15, 2026
1cb7ab0
Update renovate.json5
AB-xdev Sep 16, 2026
8a4f172
Fix typo and reword
AB-xdev Sep 16, 2026
a8a76d2
Merge pull request #16 from xdev-software/ai-policy
AB-xdev Sep 16, 2026
1566844
Merge branch 'master' into update-from-template-github_com_xdev-softw…
xdev-gh-bot Sep 16, 2026
bed3494
Merge remote-tracking branch 'origin/update-from-template-github_com_…
AB-xdev Sep 16, 2026
54a6f60
Fill in DEVELOPING.md
AB-xdev Sep 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .config/checkstyle/checkstyle.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
<module name="ExplicitInitialization">
<property name="severity" value="info"/>
</module>
<module name="ExpressionOverBlockLambda"/>
<module name="FinalClass"/>
<module name="FinalParameters"/>
<module name="GenericWhitespace"/>
Expand Down Expand Up @@ -144,6 +145,7 @@
<module name="UnnecessarySemicolonInTryWithResources"/>
<module name="UnusedImports"/>
<module name="UnusedLocalVariable"/>
<module name="UnusedPrivateField"/>
<!-- Disabled by default; should be enabled on Java 25+ -->
<!-- <module name="UnusedTryResourceShouldBeUnnamed"/> -->
<module name="UpperEll"/>
Expand Down
2 changes: 1 addition & 1 deletion .config/pmd/java/ruleset.xml
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@
<rule ref="category/java/errorprone.xml/UnconditionalIfStatement"/>
<rule ref="category/java/errorprone.xml/UnnecessaryCaseChange"/>
<rule ref="category/java/errorprone.xml/UnsupportedJdkApiUsage"/>
<rule ref="category/java/errorprone.xml/UselessPureMethodCall"/>
<rule ref="category/java/errorprone.xml/UnusedReturnValue"/>


<rule ref="category/java/multithreading.xml">
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/check-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
- uses: actions/checkout@v7

- name: Set up JDK
uses: actions/setup-java@v5
uses: actions/setup-java@v6
with:
distribution: ${{ matrix.distribution }}
java-version: ${{ matrix.java }}
Expand Down Expand Up @@ -87,7 +87,7 @@ jobs:
- uses: actions/checkout@v7

- name: Set up JDK
uses: actions/setup-java@v5
uses: actions/setup-java@v6
with:
distribution: ${{ matrix.distribution }}
java-version: ${{ matrix.java }}
Expand Down Expand Up @@ -123,7 +123,7 @@ jobs:
- uses: actions/checkout@v7

- name: Set up JDK
uses: actions/setup-java@v5
uses: actions/setup-java@v6
with:
distribution: ${{ matrix.distribution }}
java-version: ${{ matrix.java }}
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
- uses: actions/checkout@v7

- name: Set up JDK
uses: actions/setup-java@v5
uses: actions/setup-java@v6
with:
java-version: '17'
distribution: 'temurin'
Expand Down Expand Up @@ -124,7 +124,7 @@ jobs:
git pull

- name: Set up JDK
uses: actions/setup-java@v5
uses: actions/setup-java@v6
with: # running setup-java overwrites the settings.xml
distribution: 'temurin'
java-version: '17'
Expand All @@ -141,7 +141,7 @@ jobs:
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}

- name: Set up JDK
uses: actions/setup-java@v5
uses: actions/setup-java@v6
with: # running setup-java again overwrites the settings.xml
distribution: 'temurin'
java-version: '17'
Expand Down Expand Up @@ -172,7 +172,7 @@ jobs:
git pull

- name: Setup - Java
uses: actions/setup-java@v5
uses: actions/setup-java@v6
with:
java-version: '17'
distribution: 'temurin'
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
- uses: actions/checkout@v7

- name: Set up JDK
uses: actions/setup-java@v5
uses: actions/setup-java@v6
with: # running setup-java overwrites the settings.xml
distribution: 'temurin'
java-version: '17'
Expand All @@ -31,7 +31,7 @@ jobs:
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}

- name: Set up JDK
uses: actions/setup-java@v5
uses: actions/setup-java@v6
with: # running setup-java again overwrites the settings.xml
distribution: 'temurin'
java-version: '17'
Expand Down
78 changes: 30 additions & 48 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,74 +1,56 @@
## Contributing
# Contributing

We would absolutely love to get the community involved, and we welcome any form of contributions comments and questions on different communication channels, issues and pull request and anything that you build and share using our components.
We would absolutely love to get the community involved and we welcome any form of contributions - comments and questions, issues, pull request and anything that you build and share using our project.

### Communication channels
## Communication channels
* Communication is primarily done using issues.
* If you need support as soon as possible and you can't wait for any pull request, feel free to use [our support](https://xdev.software/en/services-products/support).
* As a last resort measure or on otherwise important matter you may also [contact us directly](https://xdev.software/en/about-us/contact).

### Ways to help
* **Report bugs**<br/>Create an issue or send a pull request
## Ways to help
* **Report bugs**<br/>Create an issue and send a pull request
* **Send pull requests**<br/>If you want to contribute code, check out the development instructions below.
* However when contributing larger new features, please first discuss the change you wish to make via issue with the owners of this repository before making it.<br/>Otherwise your work might be rejected and your effort was pointless.
* Please also note that your pull request might not be noticed immediately when it's not attached to an issue.

We also encourage you to read the [contribution instructions by GitHub](https://docs.github.com/en/get-started/exploring-projects-on-github/contributing-to-a-project).

## Developing

### Software Requirements
You should have the following things installed:
* Git
* Java 25 - should be as unmodified as possible (Recommended: [Eclipse Adoptium](https://adoptium.net/temurin/releases/))
* Maven (Note that the [Maven Wrapper](https://maven.apache.org/tools/wrapper/) is shipped with the repo)
Project specific development instructions can be found in [DEVELOPING.md](./DEVELOPING.md)

### Recommended setup
* Install `IntelliJ`
* Recommended setup actions
* Disable not needed plugins
* Disable [telemetry](https://www.jetbrains.com/help/idea/settings-usage-statistics.html)
* Configure the available memory
* Import the project
* You will get prompted to install the required plugins
* Ensure that everything is encoded in `UTF-8`
* Ensure that the JDK/Java-Version is correct

## On AI use / LLM generated content

## Releasing [![Build](https://img.shields.io/github/actions/workflow/status/xdev-software/template-placeholder/release.yml?branch=master)](https://github.com/xdev-software/template-placeholder/actions/workflows/release.yml)
_Our reason for the strict policy is due to [unqualified people using the technology](https://en.wikipedia.org/wiki/AI_slop)._

Before releasing:
* Consider doing a [test-deployment](https://github.com/xdev-software/template-placeholder/actions/workflows/test-deploy.yml?query=branch%3Adevelop) before actually releasing.
* Check the [changelog](CHANGELOG.md)
<sup>This policy was inspired by the AI policies of `curl`, `MESA`, `matplotlib` and `Ghostty`.</sup>

If the ``develop`` is ready for release, create a pull request to the ``master``-Branch and merge the changes
### Issues and security reports

When the release is finished do the following:
* Merge the auto-generated PR (with the incremented version number) back into the ``develop``
If you asked an AI tool to find problems in the project, you must make sure to reveal this fact in your issue.

### Release failures
You must also double-check the findings carefully before reporting them to us to validate that the issue is indeed existing and working exactly as the AI says. AI-based tools frequently generate inaccurate or fabricated results.

There are 2 modes of release failure:
1. The remote server was e.g. down and non of the artifacts got published
2. There was a build failure during release and only parts of the artifacts got released
Further: It is rarely a good idea to copy and paste an AI generated report to the project. Those are typically too wordy and rarely to the point - in addition to the common fabricated details.<br/>
If you actually find a problem with an AI and you have verified it yourself to be true: Write the issue/report yourself and explain the problem as you have learned it. This makes sure the AI-generated inaccuracies and invented issues are filtered out early before they waste more people's time.

In case 1 we can re-release the existing version,<br/>in case 2 we have to release a new version when we can't get the artifacts deleted (as is the case with Maven Central)
As we take security reports seriously, we investigate each report with priority. This work is both time and energy consuming and pulls us away from doing other meaningful work. Fake and otherwise made up security problems effectively prevent us from doing real project work and make us waste time and resources.

#### How-to: Re-Releasing an existing version
We will ban and report users who submit made up fake reports.

1. Delete the release on GitHub
2. Delete the release Git tag from the repo (locally and remote!)
3. Delete the ``master``-Branch and re-create it from the ``develop`` branch (or reset it to the state before the release-workflow commits have been done)
* This requires __temporarily__ removing the branch protection
* Once this was done a new release is triggered immediately!
### Pull requests

#### How-to: Releasing a new version
When contributing content to the project, you give us permission to use it as-is and you must make sure you are allowed to distribute it to us. By submitting a change to us, you agree that the changes can and should be adopted and get redistributed under the project's license. Authors should be explicitly aware that the burden is on them to ensure no unlicensed code is submitted to the project.

1. Merge the ``master`` branch back into ``develop`` (or another temporary branch)
2. Make sure all master branch versions are prepared for a new release<br/>e.g. if the broken release was ``1.0.0`` the version should now be at ``1.0.1-SNAPSHOT`` - the ``SNAPSHOT`` is important for the workflow!
3. Mark the broken release as broken e.g. inside the Changelog, GitHub Release page, etc.<br/>
You can use something like this:
```
> [!WARNING]
> This release is broken as my cat accidentally clicked the abort button during the process
```
4. Merge the changes back into the ``master`` branch to trigger a new release
This is independent if AI is used or not.

When contributing a pull request you should of course always make sure that the proposal is good quality and a best effort that follows our guidelines. A basic rule of thumb is that if someone can spot that the contribution was made with the help of AI, you have more work to do.

We can accept code written with the help of AI into the project, but the code must still follow coding standards, be written clearly and adhere to all the normal requirements we have.

### Further notices

* External AI tooling (e.g. bots, agents) directly interacting with the project - without a human - are not allowed and will be banned and reported.
* For commit messages the same guidelines as described above for issues apply - fully generated messages are not allowed.
* AI assisted/generated commits can NOT use the `Co-authored-by` tag as this is reserved for humans - use `Assisted-by`/`Generated-by` instead.
56 changes: 56 additions & 0 deletions DEVELOPING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
### Software Requirements
You should have the following things installed:
* Git
* Java 25 - should be as unmodified as possible (Recommended: [Eclipse Adoptium](https://adoptium.net/temurin/releases/))
* Maven (Note that the [Maven Wrapper](https://maven.apache.org/tools/wrapper/) is shipped with the repo)

### Recommended setup
* Install `IntelliJ`
* Recommended setup actions
* Disable not needed plugins
* Disable [telemetry](https://www.jetbrains.com/help/idea/settings-usage-statistics.html)
* Configure the available memory
* Import the project
* You will get prompted to install the required plugins
* Ensure that everything is encoded in `UTF-8`
* Ensure that the JDK/Java-Version is correct


## Releasing [![Build](https://img.shields.io/github/actions/workflow/status/xdev-software/template-placeholder/release.yml?branch=master)](https://github.com/xdev-software/template-placeholder/actions/workflows/release.yml)

Before releasing:
* Consider doing a [test-deployment](https://github.com/xdev-software/template-placeholder/actions/workflows/test-deploy.yml?query=branch%3Adevelop) before actually releasing.
* Check the [changelog](CHANGELOG.md)

If the ``develop`` is ready for release, create a pull request to the ``master``-Branch and merge the changes

When the release is finished do the following:
* Merge the auto-generated PR (with the incremented version number) back into the ``develop``

### Release failures

There are 2 modes of release failure:
1. The remote server was e.g. down and non of the artifacts got published
2. There was a build failure during release and only parts of the artifacts got released

In case 1 we can re-release the existing version,<br/>in case 2 we have to release a new version when we can't get the artifacts deleted (as is the case with Maven Central)

#### How-to: Re-Releasing an existing version

1. Delete the release on GitHub
2. Delete the release Git tag from the repo (locally and remote!)
3. Delete the ``master``-Branch and re-create it from the ``develop`` branch (or reset it to the state before the release-workflow commits have been done)
* This requires __temporarily__ removing the branch protection
* Once this was done a new release is triggered immediately!

#### How-to: Releasing a new version

1. Merge the ``master`` branch back into ``develop`` (or another temporary branch)
2. Make sure all master branch versions are prepared for a new release<br/>e.g. if the broken release was ``1.0.0`` the version should now be at ``1.0.1-SNAPSHOT`` - the ``SNAPSHOT`` is important for the workflow!
3. Mark the broken release as broken e.g. inside the Changelog, GitHub Release page, etc.<br/>
You can use something like this:
```
> [!WARNING]
> This release is broken as my cat accidentally clicked the abort button during the process
```
4. Merge the changes back into the ``master`` branch to trigger a new release
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>13.10.0</version>
<version>14.1.0</version>
</dependency>
</dependencies>
<configuration>
Expand Down Expand Up @@ -83,12 +83,12 @@
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-core</artifactId>
<version>7.26.0</version>
<version>7.27.0</version>
</dependency>
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-java</artifactId>
<version>7.26.0</version>
<version>7.27.0</version>
</dependency>
</dependencies>
</plugin>
Expand Down
10 changes: 10 additions & 0 deletions renovate.json5
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"rebaseWhen": "behind-base-branch",
"packageRules": [
{
"description": "Don't manage Java version in actions",
"matchDepTypes": [
"uses-with"
],
"matchDatasources": [
"java-version"
],
"enabled": false
},
{
"description": "Ignore project internal dependencies",
"packagePattern": "^software.xdev:template-placeholder",
Expand Down
8 changes: 4 additions & 4 deletions template-placeholder/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>5.1.1</version>
<version>5.1.2</version>
<configuration>
<properties>
<email>${project.organization.url}</email>
Expand Down Expand Up @@ -215,7 +215,7 @@
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>13.10.0</version>
<version>14.1.0</version>
</dependency>
</dependencies>
<configuration>
Expand Down Expand Up @@ -253,12 +253,12 @@
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-core</artifactId>
<version>7.26.0</version>
<version>7.27.0</version>
</dependency>
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-java</artifactId>
<version>7.26.0</version>
<version>7.27.0</version>
</dependency>
</dependencies>
</plugin>
Expand Down