-
Notifications
You must be signed in to change notification settings - Fork 0
Architectural Decision Notes
For every important change or event related to Pyra, this page should include the date, what has changed/happened, the reason for it, and the people involved. One can link issues, pull requests, or releases if available.
Release v4.0.5
includes static types for the whole codebase. Additionally, we run strict Mypy checks on the whole code to detect any typing issues. The initial addition of static types is a significant amount of work for big codebases, but it has many benefits. So now, we have it.
Moritz decided this, and Patrick agreed. Note added on 2023-08-21.
Release v4.0.5
implements an upload client for the interferograms. We used to have some bash scripts in the style of the old Pyra (no version control or documentation), which used to work, but then I (Moritz) could not find a way to change or restart them. Since there were no tests for the scripts either, I (Moritz) decided to rewrite these upload scripts and include them in the Pyra codebase. The upload is fully statically typed and tested. The tests generate a bunch of sample directories, upload them to an actual remote server and check if the final state (uploaded correctly and removed locally) is as expected.
This first implementation of the upload only included the upload of the interferograms, not any other files, because of time reasons. The implementation of an upload for arbitrary directories of a specific date schema will be released in September 2023 (see below). The progress of this generalized upload can be tracked here: https://github.com/tum-esm/pyra/issues/112.
Moritz decided this, and Patrick agreed. Note added on 2023-08-21.
Release v4.0.7
refactors Helios greatly. This release is related to my (Moritz) IDP about Helios. Helios first replaced VBDSD in v4.0.4
and was rebranded to helios in v4.0.5
.
Moritz decided this, and Patrick agreed in July 2022, when starting with the IDP. Note added on 2023-08-21.
Release v4.0.7
introduced a tiny bug - not crucial but annoying. The bug is described in issue #151. This bug made it into the release because we tested 4.0.7
on our ma system, which was the only one not affected by the bug. The one-line fix was implemented locally instead of waiting for the next release and included in release v4.0.8
.
Moritz developed, tested, and released 4.0.7
after talking with Patrick about it. He notified Patrick and Andreas about the bug and its fix. Note added on 2023-08-21.
Release v4.0.8
started moving some of the utility functionality out of the Pyra codebase to the Python library tum-esm-utils
(https://github.com/tum-esm/utils). The functionality stays the same but is better tested, documented, and reusable in other projects.
Moritz decided this and wrote the tum-esm-utils
library. Patrick agreed that this was a good idea when I (Moritz) proposed this idea to him in February/March 2023. Note added on 2023-08-21.
Release v4.1.0
(not released yet) will implement an improved version working for arbitrary directories. The milestone https://github.com/tum-esm/pyra/milestone/9 includes all changes desired to be implemented in this release. This release moves the upload code out of the Pyra codebase (similar to tum-esm-utils
) because it can be better tested, documented, and reused there. This was proposed and agreed upon here: https://github.com/tum-esm/pyra/issues/112#issuecomment-1627820402. This release also improves the transparency of the upload - "What is the upload doing right now?".
Moritz planned this release in 2022-09 with feedback from Andreas regarding the UI for logs/upload information. Note added on 2023-08-21.
Instead of implementing our own UI primitives (text fields, buttons, etc.) I want to relay more on libraries. The problem with common UI libraries is that you install it into a dependency folder - like node_modules/
- and cannot easily include personal changes in your repository. The approach of TailwindUI gives you the component code for copying and pasting it. However, TailwindUI does not turn its primitives into React components - like a reusable button component - but leaves that to the user. shadcn/ui is similar to TailwindUI in terms of looks but makes it very easy to copy the primitives into your project and - most importantly - gives you the primitives. The refinement of the UI is tracked here: https://github.com/tum-esm/pyra/issues/175.
Moritz decided this on his own because he is the only one working on UI code, and it will not change any UI logic. Note added on 2023-08-21.
Poetry breaks very often and changes installation mechanisms frequently. Every time we do a Pyra update, something inside Poetry is broken. That is why I no longer want to depend on poetry in production environments.
With Poetry I would have to poetry export -f requirements.txt, every time, I change dependencies and include the requirements.txt in the repository. In production, I can pip install -r requirements.txt.
PDM is an alternative to Poetry and produces a pyproject.toml that is directly usable by pip. On top of that it seems to be be more stable (less breaking releases, constant installation instructions).
Moritz decided this on his own because he developed the DevOps and the setup tool and is the only active developer of Pyra. Note added on 2024-01-10.