On Jun 29, 2015, at 4:08 PM, Eric Scott <[log in to unmask]> wrote:

> Good point about YAML, Mark!  I've been wanting to switch to something like that for a while.  The really long, dotted parameter names ECJ uses to denote an object hierarchy work great, but are painful to read.

Reading up on YAML, I came across this nasty bit:

	- Whitespace indentation is used to denote structure; however tab characters are never allowed as indentation.

Ugh.  Apparently we will never, ever learn the mistake we made with Makefiles.  This ignorance alone probably kills YAML in my book.

ECJ's parameter files use the structure they use because they're just dressed up Property lists.  It's a lot of typing, I'll admit to that.  But it's a fair sight more maintainable than XML.  Instead of going that route, an interesting approach would be to permit variable replacement like

	var.PIPELINE = pop.subpop.0.species.pipe
	var.SOURCE = PIPELINE.generate.source
	PIPELINE = ec.breed.MultiBreedingPipeline
	PIPELINE.generate-max = false
	PIPELINE.generate.num-sources = 2
	SOURCE.0 = ec.gp.koza.CrossoverPipeline
	SOURCE.0.prob = 0.9
	SOURCE.1 = ec.breed.ReproductionPipeline
	SOURCE.1.prob = 0.1

... we'd have to think deeply upon namespace issues though.