Alfonso Sabato Siciliano
2024-07-09 14:51:31 UTC
Hello,
I am going to write an installer *for me*. Of course it will be open source.
Perhaps it can be useful for others: tips, new ideas, and collaborations are
welcome. I know others have something in progress, if we match some
requirements
we can share some components/code.
Some project choices and requirements:
* Guidelines: simple, modularized and extendable.
* Server (backend) side written in lua, modularized in scripts. Independent
of
any frontend.
* A configuration file with variables, hooks, comments and examples.
* Multi-mode installation: Automatic, Simple, and Expert.
* Client (Graphic) side responsible only for drawing dialogs/windows.
* Multi-frontend. Implementation priority:
- TUI. Similar to bsdinstall with new features.
- File. Settings are read from file(s).
- CLI. Suitable for a screen reader for vision-impairments users. This is a
feature request.
- GUI.
- WEB. TBD (I am not a web-expert, lua seems to provide some option for
web programming).
* A menu to select: frontend, mode, and other options, at start-up.
* Frontends have to be totally separated from the server, eventually to be
easily added/deleted/changed/improved in the future. They could be
designed
and developed mainly for the installer, neither to be compatible with
other
tools nor to be general purpose.
* UI new features (something is related to server side):
- Navigation. New buttons: [Restart], [Prev], and [Next].
- Multi language.
- Dialogs for help, at start-up and during installation (F1 or [Help]
button).
- Options for color blind and low vision users. This is a feature request.
- Final step to install a desktop environment.
- Final step to install pkgs for accessibility. This is a feature request.
* Multi installation process:
- Synchronous. The server waits the user input from the dialog, then it
performs the "command".
- 2-steps. Frontend writes the user input to files. When the frontend
finishes
(showing all the dialogs) the server performs the actual installation by
reading files.
- Noninteractive. No user actions, server reads previously written files.
- TBD a mix of the above.
* Server <-> client communication: lua layer, files, and TBD server web.
* Logging and debug features similar to bsdinstall with extensions.
* Provide bsdinstall variables and configuration files. Ideally these
features
will be placed in the "centralized" configuration file above.
- All/most bsdinstall variables with extensions.
- All/most bsdinstall configuration files (or compliant solutions).
* A menu to select bsdinstall or this installer at start-up.
* Extras & TBD. sade extensions (feature request), pkgbase, and so on.
(I'll create a git repository and a wiki page with the Roadmap. The plan is
detaching bsdinstall from bsdconfig, then rewriting the scripts in lua.)
Again, to avoid any misunderstanding: this is a personal project, bsdinstall
will not be touched. I plan to end by 6-8 months providing a port with the
installer and a script to create the iso.
Thanks in advance for any reply.
Best regards,
Alfonso
I am going to write an installer *for me*. Of course it will be open source.
Perhaps it can be useful for others: tips, new ideas, and collaborations are
welcome. I know others have something in progress, if we match some
requirements
we can share some components/code.
Some project choices and requirements:
* Guidelines: simple, modularized and extendable.
* Server (backend) side written in lua, modularized in scripts. Independent
of
any frontend.
* A configuration file with variables, hooks, comments and examples.
* Multi-mode installation: Automatic, Simple, and Expert.
* Client (Graphic) side responsible only for drawing dialogs/windows.
* Multi-frontend. Implementation priority:
- TUI. Similar to bsdinstall with new features.
- File. Settings are read from file(s).
- CLI. Suitable for a screen reader for vision-impairments users. This is a
feature request.
- GUI.
- WEB. TBD (I am not a web-expert, lua seems to provide some option for
web programming).
* A menu to select: frontend, mode, and other options, at start-up.
* Frontends have to be totally separated from the server, eventually to be
easily added/deleted/changed/improved in the future. They could be
designed
and developed mainly for the installer, neither to be compatible with
other
tools nor to be general purpose.
* UI new features (something is related to server side):
- Navigation. New buttons: [Restart], [Prev], and [Next].
- Multi language.
- Dialogs for help, at start-up and during installation (F1 or [Help]
button).
- Options for color blind and low vision users. This is a feature request.
- Final step to install a desktop environment.
- Final step to install pkgs for accessibility. This is a feature request.
* Multi installation process:
- Synchronous. The server waits the user input from the dialog, then it
performs the "command".
- 2-steps. Frontend writes the user input to files. When the frontend
finishes
(showing all the dialogs) the server performs the actual installation by
reading files.
- Noninteractive. No user actions, server reads previously written files.
- TBD a mix of the above.
* Server <-> client communication: lua layer, files, and TBD server web.
* Logging and debug features similar to bsdinstall with extensions.
* Provide bsdinstall variables and configuration files. Ideally these
features
will be placed in the "centralized" configuration file above.
- All/most bsdinstall variables with extensions.
- All/most bsdinstall configuration files (or compliant solutions).
* A menu to select bsdinstall or this installer at start-up.
* Extras & TBD. sade extensions (feature request), pkgbase, and so on.
(I'll create a git repository and a wiki page with the Roadmap. The plan is
detaching bsdinstall from bsdconfig, then rewriting the scripts in lua.)
Again, to avoid any misunderstanding: this is a personal project, bsdinstall
will not be touched. I plan to end by 6-8 months providing a port with the
installer and a script to create the iso.
Thanks in advance for any reply.
Best regards,
Alfonso