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

Create IDEasy service #780

Open
hohwille opened this issue Nov 20, 2024 · 0 comments
Open

Create IDEasy service #780

hohwille opened this issue Nov 20, 2024 · 0 comments
Labels
CLI IDEasy command-line-interface (parsing args, etc.) enhancement New feature or request Epic something big that needs to be split into smaller stories (issues)

Comments

@hohwille
Copy link
Member

This is a large and complex epic that needs to be split into smaller stories that can be implemented stepwise.
The vision and idea is that we create a background service for IDEasy that is running all the time as a process (daemon).
The end-user CLI (ide command) will then just be a simple front-end communicating with that background service.
This allows several great advantages:

  • better performance: We do not need to bootstrap the IDEasy process - all is already in memory and initialized.
  • this opens the door for advanced caching and we can stop writing some information to disc (e.g. cache timestamp to MTIMES of git files, maybe even git commit IDs, Module structures for Add icd command #778, etc.)
  • we can implement advanced security features: during installation if admin permissions are available, we can create a dedicated user / permission for IDEasy and require that for modifying $IDE_ROOT/_ide folder that contains the software repository and additionally even all software folders in IDE_HOME projects. The end user will only have read permissions to software but cannot write or modify the installations but only IDEasy background service can do if the end-user calls according command (ide install ..., ide update, etc.).

In case you want to look at a working example using this service or daemon approach from a Java + GraalVM CLI tool, you can get inspired by mvnd that has implemented this and is already working.

So far this epic is just a vision and it needs further refinement.
Currently we have IdeContext and IdeLogger designed in a way that we start a single invocation, initialize everything for that specific case (directory, project, workspace, etc.) and after processing ramp everything down.
To create a service that is running all the time, we might need several changes in our design.
Before even trying to specify all the demands and details what to implement here, we need several rounds of refinement, brainstorming, analysis, experiments, PoCs, etc.

@hohwille hohwille added enhancement New feature or request Epic something big that needs to be split into smaller stories (issues) CLI IDEasy command-line-interface (parsing args, etc.) labels Nov 20, 2024
@github-project-automation github-project-automation bot moved this to 🆕 New in IDEasy board Nov 20, 2024
@hohwille hohwille moved this from 🆕 New to Refinement in IDEasy board Nov 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLI IDEasy command-line-interface (parsing args, etc.) enhancement New feature or request Epic something big that needs to be split into smaller stories (issues)
Projects
Status: Refinement
Development

No branches or pull requests

1 participant