title="Sysinst alternative interface (350h)"
[Marc Balmer](mailto:mbalmer@NetBSD.org), [Martin Husemann](mailto:martin@NetBSD.org)
The goal of this project is to provide an alternative version of the NetBSD system installer with a simple, X based graphical user interface.
The installer currently uses a "homegrown" (similar to CUA) text based interface, thus being easy to use over serial console as well as on a framebuffer console.
The current installer code is partly written in plain C, but in big parts uses C fragments embedded into its own definition language, preprocessed by the "menuc" tool into plain C code and linked against libterminfo.
During this project, the "menuc" tool is modified to optionally generate a different version of the C code, which then is linked against standard X libraries. The C stub fragments sprinkled throughout the menu definitions need to be modified to be reusable for both (text and X) versions. Where needed the fragments can just call C functions, which have different implementations (selected via a new ifdef).
Since the end result should be able to run off an enhanced install CD, the selection of widgets used for the GUI is limited. Only base X libraries are available. A look & feel similar to current xdm would be a good start.
Developement can be done on an existing system, testing does not require actuall installation on real hardware.
An optional extension of the project is to modify the creation of one or more port's install CD to make use of the new xsysinst.
* modify the "menuc" tool to support X
* keep text/serial console installing
* demonstrate a GUI install
* demonstrate fallback to the text installer
The candidate must have:
* familiarity with the system installer. You should have used sysinst to install the system.
* familiarity with C and X programming.
The following would also be useful:
* familiarity with NetBSD.
* familiarity with user interface programming using in-tree X widgets.
* [sysinst source](http://cvsweb.netbsd.org/bsdweb.cgi/src/distrib/utils/sysinst/) ([opengrok](http://nxr.netbsd.org/xref/src/distrib/utils/sysinst/))
* [[!template id=man name="vnconfig" section="8"]] manual page
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb