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?

We’ve found it difficult to make use of the blocks feature as many “modular” building blocks of our layout need to be reusable. This prevents us from using blocks as part of the layout as there’s no way of mixing models and blocks in a continuous layout.

Structured text allows mixing both types, which is definitely good for blog/article type pages but it does work fit a landing page layout (e.g. top level category listing on a webshop). In our case there’s no text paragraps on these pages.

Is there a technical reason why mixing models and blocks is supported for structured text fields but not for modular content?