Information for contributors and maintainers of the ALF codebase.
Getting Started¶
See CONTRIBUTING.md for the full community guidelines. Key points:
ALF is released under GPL v3 with an attribution clause.
Bug fixes and portability patches are welcome from everyone via pull requests.
New features should be discussed in a GitHub issue first.
Access Levels¶
| Level | Who | How to get access |
|---|---|---|
| User | Anyone | Clone the public repo |
| Contributor | Anyone | Submit a pull request |
| Developer (write access) | By application | Open a public issue + non-interference declaration |
| Core developer (owner) | By vote | Open a public issue + unanimous vote of existing owners |
Development Workflow¶
Create a feature branch from
masterBuild with the
develflag for extra runtime checks:source configure.sh GNU nompi develRun the test suite (see [[Test Suite]])
Update
CHANGELOG.mdwith your changesSubmit a pull request — CI runs automatically
Building for Development¶
The devel flag in configure.sh enables:
Array bounds checking
Floating-point exception traps (NaN, overflow)
Additional compiler warnings
source configure.sh GNU nompi devel
make cleanlib cleanprog
make -j5 programCode Style¶
Fortran 2008 with submodule support
Modules use
_modsuffix, submodules use_smodsuffixHamiltonians are submodules of
Hamiltonian_mainUse
Kind=Kind(0.d0)for double precisionMPI/OpenMP code is guarded by preprocessor macros (
#ifdef MPI,#ifdef TEMPERING)
Sub-Pages¶
[[Test Suite]] — Running and writing tests
[[Code Architecture]] — Module structure and data flow
[[Release Process]] — Versioning and release cycle