Re: Personal Installer

From: Tomoaki AOKI <junchoon_at_dec.sakura.ne.jp>
Date: Wed, 10 Jul 2024 09:18:58 UTC
On Tue, 9 Jul 2024 16:51:31 +0200
Alfonso Sabato Siciliano <alfix86@gmail.com> wrote:

> 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

Hi.

Maybe you'd better starting from porting existing bsdinstall.
It would already have some parts of your requirement, and
others wouldn't fit.
For anything fit your requirement, the logic behind would be usable.
Because resulting (installed) configurations should almost 100% match,
unless you are planning to introduce new mechanism.

Note that my only use-cases of bsdinstall is just to kick live
installation to fix broken installation, not using for actual
installations. (Last time I've used base installer for actual
installation was pre-bsdinstall era, sysinstall.)

-- 
Tomoaki AOKI    <junchoon@dec.sakura.ne.jp>