# Open science in space: Tudat # Project details: **Applicant:** Dominic Dirkx **Faculty:** Aerospace Engineering **DCC members** Niket Agrawal, Yasel Quintero Lares **Support period** December 2023 - Novermber 2024 **Repository/Archive:** - [https://github.com/tudat-team/tudat] - [https://github.com/tudat-team/tudatpy] **Research Background**: Tudat is an open-source software suite (C++ code with Python interface) for numerical state propagation and estimation of spacecraft and natural solar system bodies. Its modular and flexible setup allow it to be used in applications ranging from orbit determination, space situational awareness, re-entry vehicle design, space mission optimization, etc. Tudat is used in two MSc courses ( approximately 40-50 students per year) and in 20-30 MSc thesis projects. It is currently part of ongoing 5 Ph.D. projects **Project Description:** The applicant has requested support from the DCC on the following aspects of the Tudat software package that contributes to its better development, maintainability, sustainability, and usability among the research community: 1. Continuous Integration Unit tests are run only when the Conda package is made and not when the source code on the GitHub is modified via commits. The code reviewer currently runs the tests locally (on a PC with sufficient hardware resources) to verify the changes in a pull request. It is desired to have this process automated in the GitHub repository. Long time (~3-4 hours) to compile and run the tests is the bottleneck here. 2. API documentation * The team sees the current setup to generate API documentation as cumbersome and extending documentation is not easy. It is desired to have this process simplified. * Currently, a separate repository tudat-multidoc is used to generate the API documentation for the bindings. It uses a custom yml format to specify the docstrings and a separate docstrings.h file to generate the docstrings in NumPy doc style. * Currently, the docstrings in the native python code in tudatpy repository are not rendered in html format on the tudat docs website. Only the API docs are rendered. It is desired to have both docs rendered as html on the public facing documentation. * The Azure pipelines build and test the source code for 12 combinations (3 operating systems and 4 python versions each). Currently, the API docs are updated on the website if one of these passes (Linux Python 3.8?). It is desired to have the API docs updated only when the build and test pass for all platforms and python versions. 3. Review and simplify conda packaging pipeline * The current Conda packaging pipeline is not documented and well understood by the team. Steps to create a Conda package involve some manual steps and debugging in an event of failure is not easy. It is desired to have this pipeline reviewed and subsequently simplified. * Previously, each commit to dev or master branch of tudat would result in a commit to the corresponding dev or master branch of tudat-feedstock which would then trigger the azure pipelines that build and test the source files. This is currently done manually. When the dev or master of tudat reaches a point when a new version can be released, tudat-feedstock is updated manually by changing the version number field in meta.yml file. Do the same process apply for tudatpy and tudatpy-feedstock? It is desired to have this process automated. **Project goals** - Setup automated testing for the tudat GitHub repository to facilitate developers and code reviewers to get quick feedback on the changes in the pull requests. - Review and simplify the process of adding/updating the API docs with an aim to reduce the technical debt. - Make the conda packaging pipeline less prone to error by automating the manual steps. ## Project Results **Links to output** - [Project board](https://github.com/orgs/tudat-team/projects/17) - [Continuous Integration workflow for tudat (C++ code base)](https://github.com/tudat-team/tudat/blob/develop/.github/workflows/build_and_test.yml) - [Automated workflow for bumping dev version and releasing new dev conda package](https://github.com/tudat-team/tudat/blob/master/.github/workflows/bump_dev_version_nightly.yml)