Right now, this is typically done by copying an existing model and modifying the implementation. It’d be good to have some explicit documentation: What methods/attributes are required, which are optional, …?
See also discussion about luminosity argument in #309.