Recently I started thinking about writing my own automatic installer that would set up my system exactly the way I want.
I looked at the official Arch install scripts to see if I could reuse parts of their code, but unfortunately the code was just one big chunk of bash code with the main program and "flow control" (you must first do this step, then that), UI-code (dialogs etc) and backend logic (create filesystems, ...) all mangled up and mixed very closely together.
Functionality-wise the installer works fine, but I guess the code behind it is the result of years of adding features and quick fixes without refactoring, making it impossible to reuse any of the code.
So I started to write AIF: the Arch Linux Installation Framework (actually it had another name until recently), with these 3 goals in mind:
- Make all code modular, reusable etc. Everyone should be able to add/change/remove change certain aspects of an installation procedure easily or build custom installation relying on existing code where appropriate
- Port /arch/setup and /arch/quickinst, so you get (almost) the same installer as before, but using totally refactored code.
- Write my own automatic procedure for my own custom needs
Right now most of the hard work is done and the ported version of /arch/setup seems to work more or less.
I've posted to the arch-general mailing list and the responses I got were very positive.
This is what Aaron Griffin (lead developer of Arch Linux) said:
My honest opinion is that this is awesome. You're the reason I love open source 8)
That said, we haven't release a 2.6.27 ISO just yet, and I need to go
in panic mode and get it out this weekend. But for the next release,
or even a smaller release before then, I'd *love* to incorporate this.
Just letting you know: I'm not silent because I don't care. I'm silent
because I'm watching and drooling 8)
You can read the whole thread here: http://www.nabble.com/Fifa:-Flexible-Installer-Framework-for-Arch-linux-...
Right now I encourage people to try it out. All known bugs are documented in the TODO file, there are probably more that I didn't discover yet. But it should work pretty well.
I'm very curious for input on the code/design level as well.
Hopefully the Arch guys can set me up with a bugtracker and make some sort of announcement to the community to try it out...