As is often the case, what started as a simple configuration file for builds is increasingly being used as a scripting language.
James says he’d do it differently now: although well suited to the tree structure of build files, XML tends to get in the way when editing these files.
For me the lesson is: XML is without question the best format to exchange data between machines. But as soon as there is a human in the chain, using a friendlier structured format is often better. Python is a great example of human-friendly structured text.