-
Notifications
You must be signed in to change notification settings - Fork 30
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
Migrate devonfw-ide from bash to IDEasy with GraalVM #5
Labels
enhancement
New feature or request
Epic
something big that needs to be split into smaller stories (issues)
Milestone
Comments
alfeilex
added
enhancement
New feature or request
Epic
something big that needs to be split into smaller stories (issues)
labels
Sep 19, 2023
alfeilex
changed the title
Migrate devonfw-ide from bash to Java with GraalVM
Migrate devonfw-ide from bash to IDEasy with GraalVM
Sep 19, 2023
hohwille
added a commit
that referenced
this issue
Sep 22, 2023
hohwille
added a commit
to hohwille/IDEasy
that referenced
this issue
Sep 22, 2023
hohwille
added a commit
to hohwille/IDEasy
that referenced
this issue
Sep 22, 2023
hohwille
added a commit
to hohwille/IDEasy
that referenced
this issue
Sep 22, 2023
hohwille
added a commit
that referenced
this issue
Sep 22, 2023
hohwille
added a commit
to hohwille/IDEasy
that referenced
this issue
Sep 22, 2023
hohwille
added a commit
to hohwille/IDEasy
that referenced
this issue
Sep 22, 2023
hohwille
added a commit
to hohwille/IDEasy
that referenced
this issue
Sep 22, 2023
hohwille
added a commit
that referenced
this issue
Sep 22, 2023
moritzLanger
referenced
this issue
in moritzLanger/IDEasy
Sep 29, 2023
fixed bug where assertLogMessage would only check the Warning level
hohwille
pushed a commit
that referenced
this issue
Sep 29, 2023
Merged
moritzLanger
referenced
this issue
in moritzLanger/IDEasy
Oct 9, 2023
moritzLanger
referenced
this issue
in moritzLanger/IDEasy
Oct 9, 2023
VersionSetCommandletTest is not working as expected, therefore a TODO was added
moritzLanger
referenced
this issue
in moritzLanger/IDEasy
Oct 9, 2023
VersionSetCommandletTest is not working as expected, therefore a TODO was added
moritzLanger
referenced
this issue
in moritzLanger/IDEasy
Oct 9, 2023
moritzLanger
referenced
this issue
in moritzLanger/IDEasy
Oct 9, 2023
moritzLanger
referenced
this issue
in moritzLanger/IDEasy
Oct 10, 2023
fixed the bug, where Save would not keep the existing content of the file it was writing in
hohwille
pushed a commit
that referenced
this issue
Oct 10, 2023
This was
linked to
pull requests
Oct 10, 2023
Merged
hohwille
added a commit
to hohwille/IDEasy
that referenced
this issue
Oct 24, 2023
hohwille
pushed a commit
to hohwille/IDEasy
that referenced
this issue
Oct 24, 2023
hohwille
added a commit
to hohwille/IDEasy
that referenced
this issue
Oct 24, 2023
hohwille
pushed a commit
to hohwille/IDEasy
that referenced
this issue
Oct 24, 2023
hohwille
added a commit
to hohwille/IDEasy
that referenced
this issue
Nov 7, 2023
hohwille
added a commit
that referenced
this issue
Nov 7, 2023
hohwille
pushed a commit
that referenced
this issue
Dec 11, 2023
hohwille
pushed a commit
that referenced
this issue
Jan 4, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
enhancement
New feature or request
Epic
something big that needs to be split into smaller stories (issues)
This is maybe the biggest epic we ever created:
The plan is to reimplement devonfw-ide with pure Java. As devonfw-ide wants to keep its per-requisites and requirements minimal using Java does not make sense in the first place, as you would need a JVM as per-requisite to run it. However with GraalVM it is possible to cross-compile Java code to a native image for a dedicated platform. This way we could create binaries for Windows (exe), MacOS, and Linux with GraalVM native image compiler and ship those as devonfw-ide releases in the future.
This has the following impact:
devon ide update scripts
and has to be prepared in a bash-based released before the refactoring to Java took place.After all the pain with bash, we I believe that still makes a lot of sense to do this migration even though it will be a lot of effort.
In order to avoid that we invest too much effort and then notice currently unknown problems and obstacles @ahmedagdmoun will do an evaluation and PoC of this. Only if that is successful and brings a positive result, we will start with the actual migration in parallel stories by the regular dev-team.
Finally, we have to be aware that we can not entirely eliminate all shell scripts:
We will still need
devon
bash-script anddevon.bat
CMD script for integration into regular shells (e.g. setting the actual PATH what can not be done from Java). Therefore the "new java based devon CLI native image" needs to support some argument syntax to print out what to add to the PATH. Then the shell scripts can call this and update the PATH accordingly.Also, we will use this migration as a chance to do a cleanup and will therefore create a new product with a name to be determined but around the term IDE (e.g.
IDEasy
). This will include the following aspects and changes:settings
git repository. It should therefore have some downward compatibility support to understand an existingsettings
git repository without any change but may show some warnings that legacy config was found with a link to a documentation how to modernize (without breaking devonfw-ide usage).devon
anddevonfw
shall be stripped from the new product (it is not thatdevonfw
is wrong or bad and we will keep our mavengroupId
and github organization still containing devonfw - it is mainly that average users were unable to understand the concepts behind and distinguish betweendevonfw
with its best-practices about software development for according stacks and a specific tool devonfw-ide that was born in the same initiative but has little to nothing to do with the rest of devonfw. So I got requests saying "I installed devonfw but it is giving me the error 'java could not be installed'" while the next user was saying "I installed devonfw and it is giving me the error 'Failed to load ApplicationContext'". Another devonfw tool is CobiGen that did it smart from the start and does not carry devonfw in its name or config files and folders - we are just going to follow this approach):~/.devon
->~/.ide
~/scripts
->~/.ide/scripts
(see NightlyBuild broken #408)~/scripts/devon.bat
->~/.ide/scripts/ide.bat
(see NightlyBuild broken #408)~/.devon/devon
->~/.ide/scripts/ide
devon.properties
->ide.properties
(if noide.properties
was found insettings
orconf
it will fallback todevon.properties
with compatibility support - also we will create a migration feature that can auto-generateide.properties
, etc. from the old config).DEVON_IDE_HOME
->IDE_HOME
DEVON_OLD_PATH
->IDE_OLDE_PATH
(if we still need this workaround)DEVON_IDE_TOOLS
->IDE_TOOLS
- will most probably be changed from array to comma separate listDEVON_CREATE_START_SCRIPTS
->CREATE_START_SCRIPTS
- will most probably be changed from array to comma separate listDEVON_IDE_CUSTOM_TOOLS
-> IMHO it would be much better to have aide-custom-tools.json
file instead of this env variable. Hacking all this into an environment variable and allowing to potentially override it in differentdevon.properties
all does not make sense and is hard to maintain for end-users (IDE admins) as well as for the developers of our product.DEVON_IDE_MIN_VERSION
->IDE_MIN_VERSION
devon «tool» ...
->ide «tool» ...
devon «tool» setup
->ide install «tool»
devon ide create ...
->ide create ...
(this means there can never be a tool callcreate
)devon ide update
->ide update
(this means there can never be a tool callupdate
)devon ide update scripts
->ide update scripts
devon mvn version set 3.9.3
->ide set-version mvn 3.9.3
, also you can simply doide install mvn 3.9.3
that will set the version to 3.9.3 and then install it.DEVON_IDE_HOME
that also work synonymous withIDE_HOME
. Also we will not render warnings at the beginning but only after a longer time when we can consider devonfw-ide as deprecated and fully superseded by the new productide-settings
that is used by default in the new product. But maybe we can find a better option (or create a new legacy branch and ship out new devonfw-ide releases that use this new branch by default to stay compatible).ide-urls
repository shall stay 100% compatible.This epic will be implemented with the following stories:
Open questions:
ide set mvn version 3.9.3
sets the maven version to 3.9.3. Each commandlet must have a unique name that should also given an idea what the commandlet is about. Currently I named this commandletset-version
what seems to make sense. Also this would allow later to also have aide set intellij edition ultimate
that would be handled by aset-edition
commandlet. As a result you would need to typeide help set-version
to get the help ofset-version
commandlet andide help set-edition
to get the help ofset-edition
commandlet. Would it then be better to also change the command syntax toide set-version mvn 3.9.3
andide set-edition intellij ultimate
? IMHO this would avoid some user-confusion..devon.software.version
to.ide.software.version
including and according migration to make our future easier for IDEasy? Currently the new code has to support both version files - should we then also write BOTH files for compatibility? Maybe easier if we just change this in devonfw-ide already. These files are just local and do not affect the settings git repo what avoids pain we had been facing with our latest cleanups (MVN vs MAVEN, etc.)devonfw-ide
toIDEasy
what will also be the new repository name - I have already implemented the AsciiArt logo in the CLI. The CLI tool changes fromdevon
to justide
as already described and decided. The top-level module will change fromide
tocli
. We will copy thedocumentation
folder and adapt it over time to the new IDEasy. This all will make it much easier to do the github actions for the new product release incl. its documentation and for the URL updater that will only survive in the new repo. The ide module will then be removed from theide
repo. Here is the new repo: https://github.com/devonfw/IDEasyThe text was updated successfully, but these errors were encountered: