libh/sysinstall ideas

David Johnson david at
Sun May 23 16:37:47 PDT 2004

I've been thinking about a libh/sysinstall replacement for quite some 
time now. I've even committed to coding something up, but various 
events have conspired against me. I probably won't get a chance to 
actually code anything for three months. I'm more than willing to help 
with someone else's ideas instead, though. But in the meantime I'm 
going to through out some ideas.

The project needs to be split up into managable sized pieces. Each piece 
should be a useful component in and of itself. There are several 
benefits to this. First it adheres better to the UNIX philosophy than 
libh did. Second and most important, it allows greater participation. 
It would provide some working code sooner, and allow interested 
individuals the opportunity to pick up some minor unfinished pieces to 
work on.

I would divide the domain into three separate projects: installer, 
configurator and package manager. The installer is only concerned with 
bootstrapping, partitioning, labelling, and getting the base system 
installed onto the drives. It might or might not use the package 
manager. The package manager should need no explaining. The 
configurator is what we think of sysinstall, without the initial 
installation functionality. The configurator would be modular. Each 
"page" in the interface would be a different module, independent of the 
other modules.

All of these parts should have a their interfaces strongly decoupled 
from their functionality.  The functionality itself would be provided 
by shared libraries. Then there would be separate graphical (Qt) and 
text mode (curses) interfaces linking to them. Perhaps even a separate 
CLI interface useful for scripting. This would avoid the hassle of 
trying to create a unified gui/tui interface.

A secondary idea for the interfaces is to create a dialog/libdialog 
replacement that can handle either GUI or text dialogs. That way the 
entire interface can be scripted, regardless of interface mode. 
Slackware managed to create its entire installer with bourne shell and 
dialog. An enhanced dialog combined with ruby could make a very 
flexible installer!

I came up with this very broad high level architecture because I wanted 
to contribute something to FreeBSD, but a complete sysinstall 
replacement was simply too much for one person. This way I can work on 
just one piece.

David Johnson

More information about the freebsd-libh mailing list