Unfortunately this is not possible, I think I already explained why this before but let me do it again:
- Bash is the best language for it, because: an installation is mostly administrative tasks (install things, remove, configure, modify configurations, change files, and mostly running commands), moving it to another language will be a potential growth in unneeded code, increased complexity and unreadability, for example:
dpkg-reconfigure lightdm
to:
import subprocess
subprocess.run(["dpkg-reconfigure", "lightdm"], stdout=subprocess.PIPE)
-
This will also require to move all the code complexity like managing standard output, input, errors, traps, variables, migrating all elive-functions codes, flags, and I cannot imagine how much more things...
-
We are talking about 15400 lines of code, trying to do so will lead to not only a waste of time but a guaranteed unsuccess, where even if was reached, it will lead to many new bugs difficult to solve.
-
I will never engage myself in such investing of time of every aspect that will require (explaining what / why's of the code, trying to make things working, losing time in discovered bugs, etc)
-
I will be totally unable to maintain the installer anymore, and this is very important because it requires lots of changes, fixes and improvements, for almost every change in the distro
-
Elive will eventually die, due to the effort required of the previous point, frustration and time lost on it, reducing entirely the time invested for other more important development
Considering the installer is only run once for a short period of time (which means: is not a commonly-used application which needs to be nice and friendly) rewriting it is not a good idea, and I don't see the reason to do it
Now, you have a point about the UX, and what is possible to do, which is always better than do rewrites of software, is to improve the actual UX, this can be done using the same widgets (yad/zenity) in an improved way or even using a different one (like the old attempts of shellementary or enity), and we did it many times in the past shrinking multiple popups in a single one, for example in user creation it was like 5 or 6 popups for only the user (user, pass, repeat pass, etc etc) which are moved to a single widget (user creation) including also other added features like the sudo options
In the end, being in bash is not a bad thing, it is in fact a good and needed thing, the UI is independent of bash, so as mentioned before the UX can be improved without requiring to rewrite it which is an unreachable idea
How to proceed with that? in the most simple way: the first thing is to find an "annoying step" where too much popups showed or similar, brainstorm a better alternative, and propose a better code (hopefuly that will not conflict with the rest of the installer steps)
Talking about using a different UI, this has a very important requirement: it needs to be extremely light in RAM consumption (yad/zenity is), this is crucial since the installer is an essential step in every person that wants to install Elive on their computer, so even the most low-resources computer should be able to run it, otherwise is a direct loss of new users
Now let's answer some questions about the post itself:
There's many steps that requires to be run in different moments, for example:
- the creation of the user will reciclate (pre-fill) the same password you inserted for "your computer" (and so root), so first before to run the user creation you need to have added this password in order to improve the UX by not asking it twice and also avoid possible typos which leads to people reporting "my password is not working"
- in the same way, the email is also pre-filled if the user inserted it before
- in the same way, the user-creation step is not shown if the installer detects that you are in the migration mode (and all the configurations are correctly fetch)
- the configuration of lightdm needs to be run after the user-creation step, because it needs to know the username you used to add the autologin configuration (if wanted), in the same way you needed to define before if you wanted this autologin configuration
- the user-creation step needs to be made after all the system is dumped / installed, so that if it fails creating it, it will show the error and eventually the steps to fix it, like "your password has an invalid character, try a different one" or some other thing
In short, this is a small example of why steps needs to be run in different moments, of course not all of them are needed or dependent of other steps, this will require a deep reading of the source code to make sure there's no dependencies in the steps order, for example we may think the hostname is irrelevant on the step but it is required to configure also the hosts file, which is required to be configured before to install new packages or do system's configurations, etc
Could be somewhat in the theory, but check the previous details and you will see that is not an easy thing at all, big cost and lowest benefit
Yes, it has been improved many times to do that, so as I said before what will be needed to do is to "find" a specific case, brainstorm if is possible to do it before, and then improve that part
More or less, the installation is pretty fast, installing other distros are much slower most of them, Elive takes like let's say 15 minutes. About the "typing accidentally" this doesn't happens on E17 because of a special code that disables the "new windows always receive focus" during the installation process, but thanks to point this issue out, I just added a feature on the installer to make this feature working on E16 too