Initial thoughts on XCVB
Having struggled with the build system at work lately, I have decided to force myself to learn another build system at home: I am using XCVB for my UNIVAC emulator project.
I was intrigued by XCVB when I read about it in ILC'09. ASDF has always felt unfinished, even though it's a vast improvement over loading files manually (or using customized system definitions). However, I've run into problems with ASDF and I'm not against other options.
Some thoughts I had during the building, installation and use of XCVB:
- The name needs to change. Is it possible to pick a name that is not some strained acronym? Ant. Maven. Make. These are reasonable (if not goofy) names. XCVB (and for that matter, ASDF) is just alphabet soup. Pick a word and go with it.
- cl-launch feels like a whole lot of magic, but I've seen a whole lot of other magic work before.
- The process of building your own systems is a bit awkward right now.
xcvb make-makefile --build foowhen in the directory with the build file forfoois excessive specification. Building the system is even more awkward:make -f xcvb.mk obj/foo.image. Something akin tomake foowould be much nicer. - The idea of introducing metadata into a source file to indicate its dependencies doesn't sit well with some people. Personally, I like information about dependencies being close at hand; whether it comes from textual information or system queries doesn't matter. I'm content with textual information at the level of a file for now, but I suspect maintaining that information will become a pain. On the other hand, I found maintaining ASDF system definition files to be a pain (especially with refactoring and reorganization). As much as I would prefer to not use files in a Lisp system, files are a reality. I think starting with file-level meta-information is a good place to start in order find out what works and what doesn't.
Hopefully I get some time to try and help out with the project since I think it's ambitious enough to work.

