In Phoenix, the database, the HTML or the mailer are chosen only once, when the project is created. In DEW each one is a cartridge like the rest: it can be added later, and other cartridges can depend on it, like the database admin, which requires ecto.
To make that possible, each of these cartridges generates the project twice, with and without its option, at the Phoenix version the project was born with, and merges only the difference into the project as it stands today. The test: a project born with nothing and grown cartridge by cartridge has to end up equal, file by file, to one born with everything.
Cost. The project has to keep which version of the Phoenix installer it was born with, and DEW has to be able to run that same version again.
The design paper