There's the basic way this module works now, and what's being worked on at #1798006: Add to Cart Line Item type should be determined by product type or product instance, and something I've proposed at #1801154: customization as a product.

Talking on IRC about use cases and requirements, I'm not sure these three approaches are compatible. It may be we need to go off in different directions.

However, the things to do with line item types are probably common to all approaches. It would be a shame for everyone to be reproducing that code.

Should we therefore split this module into two, the core and the current per-product-type system as a submodule? Further approaches can then live here as submodules, or as projects that depend on the core here.