Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exchange Config Framework #608

Open
t-ober opened this issue Sep 8, 2023 · 4 comments · May be fixed by #900
Open

Exchange Config Framework #608

t-ober opened this issue Sep 8, 2023 · 4 comments · May be fixed by #900
Assignees
Labels
duplicate This issue or pull request already exists enhancement New feature or request

Comments

@t-ober
Copy link
Contributor

t-ober commented Sep 8, 2023

Since we have had enough issues in the past with our current configuration derivation I think it's time to switch frameworks.

I'm currently considering https://pureconfig.github.io/ as the main option, as it it also reads HOCON files. We should be able to rip out the old framework, add the new one without breaking older configurations that we have used.

Switching to pureconfig also gives us much more flexibility on how we want to use and setup the configuration as well as the option to document the parameters meaning within the classes, allow more flexible converters for specific fields, e.g. DateTime fields and so on.

@t-ober t-ober added the enhancement New feature or request label Sep 8, 2023
@sebastian-peter
Copy link
Member

Duplicate of #551

@sebastian-peter sebastian-peter marked this as a duplicate of #551 Nov 6, 2023
@sebastian-peter sebastian-peter added the duplicate This issue or pull request already exists label Nov 6, 2023
@t-ober
Copy link
Contributor Author

t-ober commented Nov 7, 2023

Whoops my bad. Nevertheless I have made some considerable progress on that front that we can discuss 🙂

@sebastian-peter sebastian-peter changed the title Exchange Documentation Framework Exchange Config Framework Feb 1, 2024
@sebastian-peter
Copy link
Member

This issue is structured into several tasks: researching and deciding on config libraries, conceptualizing the new config structure and finally, implementation.

Research

First of all, we should look at the available libraries and evaluate their pros and cons.

Candidates

Criteria

  • How widely adapted is the library? What is the likelihood that it'll be supported in the future?
  • What config languages are supported? Preferably supports HOCON or YAML
  • How well does it integrate into Scala? (Scala 3 support as well)
  • How easy does the development process become; i.e. adding, removing, adapting configuration?
    • How does adapting the validation scripts play into this, i.e. how well connected are configuration definition and validation?
  • How easy does the application of configuration become; i.e. when we want to run simulations, how easily can the config be adapted and validated?
    • How does it behave when used in Intellij vs. in console?
  • ...

Concept

There has been some work put into the existing structure of the config. It's fine to start with what already exists and adapt where necessary. Some thought should be put into what parts of the config are or can be optional (and can thus be omitted), and what parts have to be defined for every simulation.

Implementation

... should only start once all tasks above have been solved. It is fine though to play around with the library candidates in order to evaluate the criteria above.

@sebastian-peter sebastian-peter linked a pull request Aug 14, 2024 that will close this issue
@sebastian-peter
Copy link
Member

sebastian-peter commented Aug 14, 2024

Since @t-ober already did a considerable implementation work with #900, we can skip the research task above for now. The implementation now mainly needs to be adapted to changes in dev. Beyond that, more issues might come up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
duplicate This issue or pull request already exists enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants