Developer Guide
Welcome to the Jobmon Developer Guide. This section is for contributors who want to develop, extend, or maintain Jobmon itself.
If you’re looking to use Jobmon for your workflows, see the User Guide instead.
Getting Started
New to Jobmon development? Start here:
General - Set up your development environment
Testing - Run and write tests
Continuous Integration - CI/CD pipeline overview
Development Workflow
The standard workflow for contributing to Jobmon:
Create a feature branch from the release branch
Make your changes
Add or modify unit tests
Run tests:
nox -s testsLint code:
nox -s lintType check:
nox -s typecheckCreate a pull request
Gain approval from reviewers
Quick Commands
# Run all tests
nox -s tests -- tests/
# Run specific test file
nox -s tests -- tests/integration/client/test_workflow.py
# Lint and format
nox -s lint
nox -s format
# Type checking
nox -s typecheck
# Generate ERD diagram
nox -s schema_diagram
Repository Structure
jobmon/
├── jobmon_core/ # Core library (config, requester, etc.)
├── jobmon_client/ # Python client (Tool, Workflow, Task)
├── jobmon_server/ # REST API server
├── jobmon_gui/ # React frontend
├── tests/ # Test suite
├── docsource/ # This documentation
└── design/ # Design documents
Sections
- General
- Running unit tests
- End-to-end tests
- Linting and Typechecking
- Pull Requests
- Testing
- Continuous Integration
- Deployments
- Logging Architecture
- Overview
- Context Isolation System
- Telemetry Isolation Processor
- Structlog Configuration Strategy
- Python Logging Handlers
- Direct-rendering Forwarding Shim
- Thread-local Event Storage
- Architecture Detection
- Handler Configuration Examples
- Thread-local Storage and OTLP Handlers
- Testing Strategy
- Troubleshooting Tips
- Performance Notes
- Maintenance Checklist
- Document History
See Also
Architecture and Design - System architecture and design