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.
- 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.
- As a last resort measure or on otherwise important matter you may also contact us directly.
- Report bugs
Create an issue or send a pull request - Send pull requests
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.
Otherwise your work might be rejected and your effort was pointless.
- 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.
We also encourage you to read the contribution instructions by GitHub.
You should have the following things installed:
- Git
- Java 21 - should be as unmodified as possible (Recommended: Eclipse Adoptium)
- Maven (Note that the Maven Wrapper is shipped with the repo)
- Install
IntelliJ
(Community Edition is sufficient)- Install the following plugins:
- Save Actions - Provides save actions, like running the formatter or adding
final
to fields - SonarLint - CodeStyle/CodeAnalysis
- You may consider disabling telemetry in the settings under
Tools > Sonarlint -> About
- You may consider disabling telemetry in the settings under
- Checkstyle-IDEA - CodeStyle/CodeAnalysis
- Save Actions - Provides save actions, like running the formatter or adding
- Import the project
- Ensure that everything is encoded in
UTF-8
- Ensure that the JDK/Java-Version is correct
- To enable AUTOMATIC reloading/restarting while developing and running the app do this (further information in "
SpringBoot-Devtools" section below; Source):
Settings > Build, Execution, Deployment > Compiler
:
EnableBuild project automatically
Settings > Advanced Settings
:
EnableAllow auto-make to start even if developed application is currently running
- To launch the Demo execute the predefined (launch) configuration
Run Demo
- Install the following plugins:
... should automatically be enabled.
If you are changing a file and build the project, parts of the app get restarted.
Bigger changes may require a complete restart.
- Vaadin automatically reloads the UI on each restart.
You can control this behavior with thevaadin.devmode.liveReload.enabled
property (default:true
).
Before releasing:
- Consider doing a test-deployment before actually releasing.
- Check the changelog
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
- Ensure that Vaadin Directory syncs the update and maybe update the component / version there
There are 2 modes of release failure:
- The remote server was e.g. down and non of the artifacts got published
- 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,
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)
- Delete the release on GitHub
- Delete the release Git tag from the repo (locally and remote!)
- Delete the
master
-Branch and re-create it from thedevelop
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!
- Merge the
master
branch back intodevelop
(or another temporary branch) - Make sure all master branch versions are prepared for a new release
e.g. if the broken release was1.0.0
the version should now be at1.0.1-SNAPSHOT
- theSNAPSHOT
is important for the workflow! - Mark the broken release as broken e.g. inside the Changelog, GitHub Release page, etc.
You can use something like this:> [!WARNING] > This release is broken as my cat accidentally clicked the abort button during the process
- Merge the changes back into the
master
branch to trigger a new release