Project Principles
Octavian is a Python-first astrodynamics and trajectory optimization toolkit built around mission-script APIs. It should feel fast to iterate on, readable to aerospace engineers, and modular enough to grow from simple transfers to broader mission design.
Tagline: Trajectory optimization and astrodynamics in Python. Fast, adaptable, optimal.
Name: Optimal Control & Trajectory Analysis for Vehicles, Astrodynamics, and Navigation.
Python Is The Interface
Python is the primary user experience, configuration layer, and scripting surface. Mission scripts should read like clear configuration with real code semantics.
Good Octavian scripts make the user intent visible. They avoid hidden behavior that obscures what the user asked the solver to do.
Readability Beats Cleverness
Mission design code should be easy for aerospace engineers to scan and modify. Prefer explicit, well-named variables and straightforward control flow over compact internals that make the mission logic harder to understand.
Pragmatism Beats Ideology
Octavian should choose the simplest maintainable solution that solves the real problem. It should reuse proven tools instead of rebuilding them and should not introduce abstractions before the codebase clearly needs them.
Modular By Default
New capabilities should fit naturally into small composable pieces:
- configuration for user intent,
- compilation into solver structures,
- solving and numerical workflow,
- reporting, plots, exports, and summaries.
Keeping those concerns separate makes the system easier to extend without turning the core into a set of special cases.
Examples Are Product Features
Examples are not secondary extras. A feature is incomplete if users cannot see how to apply it. When a new user-facing capability is added, the relevant docs, example guide, and tutorial should be updated in the same change.
Design Test
Use this question when extending Octavian:
Does this change make Octavian feel more like one coherent system and less like a set of stitched-together features?