Contribution guidelines
We are really glad you are seeing this and are considering contributing to the development of the Negotiator. We welcome any pull requests that help us grow as open-source software!
Development Environment
Our core developers use the IntelliJ IDEA and UNIX based Operating systems. and can therefore be more helpful in debugging any potential problems in your local development environment.
Running the backend in development mode
Prerequisites
- Java 21
- Maven 3.9 and newer
- Docker Engine 27.0 and newer (Application will spin up a PostgreSQL databse using the testcontainers framework)
- Unallocated Ports 8081 and 5432
To run the backend in development mode, run the following command. Spring applications support hot reload with some limitations, for a detailed explanation refer to their documentation.
mvn clean spring-boot:test-run -Dspring-boot.run.profiles=dev
TIP
The Database is available at the URL visible bellow with default credentials negotiator:negotiator: jdbc:postgresql://localhost:5432/negotiator
Known problems
WSL
The current development environment setup is problematic with the WSL. Make sure your networking configuration is properly adjusted, especially when using an OIDC provider or a UI client.
Code style
For maintaining a uniform code style through the code base, please adhere to the Google Java Style. To enforce this, we have set up a GitHub action that checks the code style of any modified files using the fmt-maven-plugin. You can also set up an IntelliJ IDEA plugin google-java-format.
Commit messages
Please follow the Conventional Commits specification.
Versioning
For versioning of releases and tags please follow Semantic Versioning.
Submitting changes
Please send us a GitHub Pull Request with a clear description. We have also provided a template with a checklist to help you with providing a high-quality contribution.
Releasing
Currently, the project does not require a regular release schedule. Changelog is kept in the form of GitHub releases and their description. Below is an example of a release description, please follow this structure!
- Added for new features/additions
- Fixed for bug fixes
- Internal, for chores and other changes that do not impact the functionality.
What's New in v1.4.0
- ✨ Added export to CSV (#52)
- 🐛 Fixed issue with date parsing (#48)
- 🧹 Internal refactor of logging module
Thanks to alice and bob for contributions! To create a release, simply go to Releases → Draft a new release → Choose new tag → Generate release notes → Edit to follow structure above → Publish release
Good luck and thank you! 🙇🏻♂️