Developer Guide¶ Developing Galacticus The Galacticus Build System Editor Setup Visual Studio Code Fortran language server Indentation and formatting Formatting module use blocks Formatting variable declarations How the formatting is rolled out Embedded languages in Fortran source The Galacticus extension Coding Galacticus Style Conventions Node Class Hierarchy Builder Galacticus Preprocessor Directives Numerical Tools Computation Dependencies and Data Files Optimization Global Functions Galacticus Metadata Enumerations Defined Constants Classes Error Handling Reporting a fatal error Reporting a recoverable failure Warnings Allocation failures Signals and crash context Testing and Continuous Integration Test suites The CI pipeline Git hooks Before opening a pull request Merging pull requests Adding New Classes Code Directives Identifying Components and Mass Types Components Existing Classes Analytic Solvers Subsystems Creating a New Class Overview of Classes Creating a new class Traversing a Merger Tree The treeNode class Traversing examples The Dark-Matter Constraint Pipeline Architecture Cross-stage coupling The stage state machine Convergence diagnostics for a DE ensemble Extending the pipeline Building Docker Images Build Environment Galacticus itself Versions and Releases Semantic Versioning When to Create a Release Determining the Exact Version Used Release Steps Publishing the Python Package to PyPI