Erode distinction between model and modular block model

I would like to be able to:

  • Allow any model to be used in a modular block field
  • Nest modular blocks
  • View a list of all modular block models and edit their configurations
  • Allow editors to access some modular block records via the editor menu
  • Re-use modular block records (not always have to create a new record)

In short, I want to treat any model as a modular block, and any modular block as a model, if required – basically to reduce the distinction between these two types to just some checkboxes in the model settings – isPrimaryModel and isSecondaryModel – these being purely to help organise things in the backend.

In a way this also erodes the distinction between a modular block field and a link field. A modular block field is now really just a link field that provides an inline editor. So, link fields could really just be provided with some configuration options: minRecords, maxRecords, canEditRecord, canPickExisting.

The distinction between a Block or Model is also unclear to me, and seems to make schema maintenance more difficult for no real benefit. Why not just have everything be a Model and allow arbitrary linking/nesting between them?