Theta is written in Java 17 using
- Gradle as a build system,
- Git and GitHub for version control,
- GitHub actions for continuous integration,
- Codacy for static code analysis,
- Docker for packaging.
Theta uses semantic versioning in a MAJOR.MINOR.PATCH
format, e.g., v1.2.3
.
Binaries are uploaded to major/minor releases, but (currently) not for patches.
Any change that is not visible from the user's perspective (e.g., the frontends), should be a patch increment (e.g., bugfixes, small performance improvements).
Changes visible to the user (e.g., a new option in an algoritmh) should be at least minor increment, but if the change is big enough (e.g., new formalism, new tool) a major increment can be performed.
We usually develop on separate branches and increment the version number just before merging to the main branch.
As the main repository is read-only, we suggest you to create your own fork. Within your fork, we also recommend to create new branches for your development. This enables us later on to easily integrate your work into the main repository by using pull requests.
As the framework is under development, we suggest you to sync your fork often and rebase your development branch(es) onto the master branch.
See Build.md.
- Theta can be imported into IntelliJ IDEA as an existing Gradle project by selecting the build.gradle.kts file in the root of the repository.
- If you want to build the whole project (and not just run a single test for example), make sure to run the build task of the whole project. This can be done by opening the Gradle tab, and then selecting theta / theta / Tasks / build / build, right clicking and selecting Run.
- Code styling and copyright noticing should be automatically set up for the ones accepted by the Github CI. It is not recommended to change them.